Posted by & filed under E-mail.

Často se mě lidé ptají na proč někteří lidé nedostávají emaily z jejich, většinou nově a krásně nastaveného, e-mailového systému. Viník je téměř vždy stejný. SPF – nově zapnutá ochrana jejich domény. Obvykle udivenému zájemci pošlu vysvětlení emailem, ale za čas někdo opět zeptá, já to nemůžu najít a vysvětlení píšu znovu. Proto odteď budu posílat jen link na tento článek. 🙂

e-mail

Co je SPF

SPF tady kupodivu není Sun Protection Factor, ale Sender Policy Framework. Princip SPF ochrany je geniálně jednoduchý. V DNS zóně domény, kterou budeme chránit, uvedeme speciální TXT záznam se seznamem IP adres serverů, které používáme pro odesílání emailů.
Útočník, který chce poslat email s podvrženou adresou odesilatele má poté smůlu, protože pošle zprávu přes server, který v tomto seznamu není. Server adresáta pak má možnost a většinou ji využívá, provést SPF kontrolu. Výsledkem je, že zprávu odmítne.

Proč se nedoručují některé emaily?

Remote host said: 550 5.7.1 Sender Policy Framework of `nejakadomena.org' domain denied your IP address.

Potud to zní báječně. Jenže existují lidé, kteří mají emailovou schránku na místě, které nechtějí nebo nemohou pravidelně kontrolovat a nechávají si zprávy přeposílat na jinou emailovou adresu. Tady nastává problém, protože forwardující server e-mail přepošle tak, jak ho obdržel, tedy s původní adresou odesilatele. Odesilatelova doména je ale chráněna pomocí SPF a existuje seznam povolených odesílacích serverů. Na tom ale forwardující server chybí a email je odmítnut.

Existuje řešení?

Ano a ne.

Odesilatel nemá páky na ovlivnění adresátova systému, proto jediným řešením je vypnout SPF a použít případně alternativu DKIM.

Příjemce by při použití forwardu měl mít na paměti, že mu nemusí všechny zprávy kvůli SPF ochraně odesilatelů dorazit.

Poskytovatel mailových služeb by měl při nabízení forwardu na tento problém myslet a implementovat SRS

Tož tak.

Posted by & filed under Linux.

Nemilé překvapení v podobě bezpečnostní chyby v OpenSSL uveřejněné v pondělí pod označením CVE-2014-0160 je horkým kandidátem na bezpečnostní průser roku. Jde o chybu, která byla objevena experty společnosti Codenomicon a Neelem Mehtou pracujícím pro Google.

heartbleed

Podle dostupných informací je OpenSSL takto zranitelný již dva roky. Teoreticky se mohl vyskytovat na 66% webů (těch, které běží na webserveru Apache a nginx)

Co může být prozrazeno?

Nepíše se to úplně snadno, ale vše.

  • komunikace s e-shopy včetně hesel
  • veškerá mailová komunikace včetně hesel k mailovým účtům
  • komunikace s bankami včetně hesel
  • obsah chatů včetně hesel
  • data, která proudila skrz VPN včetně hesel

Majitelům ovlivněných služeb mohly být odcizeny privátní klíče.

Provést útok na tuto zranitelnost je relativně snadné (jsou k dispozici exploity) a s minimem stop.

Jak zabezpečit servery

Oprava chyby již byla vydána (OpenSSL verze 1.0.1g ) a proto ihned instalujte aktualizace. Komplikací může být pokud správci vaší ditribuce dosud nevytvořili příslušný balík. (9.4.2014 je to např. Debian 7 – stable) V tom případě přichází na řadu kompilace ze zdrojových kódů.

Jak je na tom váš server, si můžete zkontrolovat online na http://filippo.io/Heartbleed/

Po zazáplatování, bude, bohužel, nutná revokace a znovuvytvoření všech certifikátů.

Jak zabezpečit sebe

Užitečný doplněk do Chromu pro rychlou identifikaci webu, ketrý má ještě popisovaný problém je ChromeBleed. Ten bohužel neprověří zranitelnost ostatních služeb jako je email, chat, či VPN. Dále bude nutná změna hesel. Tam, kde to umožňuje provozovatel, použijte vícefaktorovou autentizaci (např. Google a jeho 2-Step Verification)

Změna hesla

Změna hesla je jedninou možností pro uživatele – nesmí ale přijít dřív než dojde k instalaci oprav na serveru a, co je stejně důležité, před revokací a následným obnovením certifikátů, jinak změna ztrácí smysl.

 

Zdroje

https://www.openssl.org/news/secadv_20140407.txt
http://heartbleed.com/

Posted by & filed under Linux.

Dost často se mi stává, že potřebuji vědět, kde jsem se před časem pracovně pohyboval. Když píšu pracovně, téměř ve většině případů to znamená, že jsem tam i otevřel notebook. A když jsem tam otevřel notebook, připojil jsem se na místní wifi síť. Už dlouho tedy přemýšlím o tom, jak jednoduše programově získat jméno sítě, ke které jsem právě připojen, abych tuto informaci posléze přidal k dalším špehovacím informacím a poslal do Google kalendáře. Dobrá zpráva je, že jsem konečně našel chvilku to vyzkoušet. Povedlo se a nakonec to ani nebolelo.

freedesktop-dbus
Protože v současném Debianu se, stejně jako ve spoustě dalších distribucí, pro management síťovách připojení používá NetwokManager, vedly mě první myšlenky právě k němu. NetworkManager komunikuje se zbytkem světa pomocí systému DBus. Proto se problém po chvilce zúžil na nalezení způsobu jak NetworkManager, pomocí systému DBus, o informaci požádat.

DBus

je systém pro inter-process komunikaci (IPC) používaný v Linuxu už řadu let. Komunikační rozhraní pro dbus existují snad ve všech myslitelných programovacích jazycích. Zkusím trochu přiblížit jak to funguje.

Bus

Program, který plánuje komunikovat s ostatními procesy, zveřejní v DBus systému svojí Bus. Busy jsou nazývané podobně jako domény. K oddělení jednotlivých úrovní se používají tečky. Z leva se uvádí, na rozdíl od domén, nejprve nejobecnější úroveň např. org a každá další úroveň název zpřesňuje.

např:

org.freedesktop.NetworkManager
org.freedesktop.ModemManager

Objekts (objekty)

V rámci každé Bus, zveřejní Program jeden a více Objektů. Jejich názvy se vytvářejí podobně jako u Bus, ale jako oddělovač se používá lomítko. Vzniká tak analogie s adresářovou strukturou.

např:

/org/freedesktop/NetworkManager
/org/freedesktop/PolicyKit1/Authority

Proxy

DBus system je vytvořen tak, aby se na něho dalo nahlížet objektově. Tím pádem se přímo nabízí využít pro klientskou část některý z objektových jazyků. Proxy je objekt, který v konkrétní implementaci reprezentuje DBus Objekt. (trochu se to zamotává, že?)

Interfaces

Každý z DBus Objektů poskytuje jeden, případně více Interfaců. Chápat to lze dobře jako datový typ (třídu) a dědičnost. Pokud tedy Objekt poskytuje více Interfaců, znaméná to, že si můžete vybrat ze kterého úhlu pohledu budete na objekt nahlížet. Tomu bude odpovídat i sada metod a vlastností, které budete moci (a bude i dávat smysl), v daném kontextu, použít.

Methods & Properties

Methosds slouží ke komunikaci s dbus objektem. Je možné je vzv. volat, předávat jim parametry a mohou vracet návratové hodnoty. Pomocí Methods můžete číst a nastavovat Properties – vlastnosti Objektu.

Signals

Jde o druhý způsob komunikace s DBus Objektem. Narozdíl od volání Method, se client registruje k odběru Signálu a zareaguje až ve chvíli, kdy Program Signál pošle.

Network Manager

Hledanou informaci, tedy název sítě, ke které je notebook aktuálně připojen má NetworkManager – aplikace, starající se o připojování notebooku do sítí. Nabízí seznam aktuálních wifi sítí, udržuje databázi s již známými sítěmi a automaticky do těchto sítí připojuje. Navíc komunikuje přes DBus, čehož využijeme.

Podívejme se jaké Objekty má NetworkManager v DBus registrovány. Existuje celá řada nástrojů pro práci s DBus systémem. Graficko klikací varianta je např D-Feet (k dispozici je balík pro debian)

sudo apt-get install d-feet

Případně CLI pro QT4 aplikace qdbus

sudo apt-get install qdbus

Na začátku jsem psal, že bych rád informaci z NetworkManageru dostal programově, proto jsem sáhl pro qdbus. D-Feet můžete použít ke kontrole, případně vám pomůže si udělat o celém DBusu obrázek.

Vypišme všechny systémové Busy. Mezi nimi je i Bus, který registroval NetworkManager.

$ qdbus --system
...
org.freedesktop.NetworkManager
...

Připojme se k Busu a vypišme, které objekty poskytuje.

$ qdbus --system org.freedesktop.NetworkManager
...
/org/freedesktop/NetworkManager
...

Zeptejme se Objektu, na jeho metody a vlastnosti (tady trochu matu, ale všiměte si kompletních názvů, vyplynou z nich i názvy jednotlivých interfaců)

$ qdbus --system org.freedesktop.NetworkManager /org/freedesktop/NetworkManager
...
method QString org.freedesktop.DBus.Introspectable.Introspect()
method QDBusVariant org.freedesktop.DBus.Properties.Get(QString interface, QString propname)
property read QList org.freedesktop.NetworkManager.ActiveConnections
...

Zkusme teď metodou Get z Interfacu org.freedesktop.DBus.Properties získat seznam aktivních připojení ActiveConnections z Interfacu org.freedesktop.NetworkManager

$ qdbus --literal --system org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.DBus.Properties.Get org.freedesktop.NetworkManager ActiveConnections

[Variant: [Argument: ao {[ObjectPath: /org/freedesktop/NetworkManager/ActiveConnection/45]}]]

Bystrý čtenář si jistě všiml, že Objekt /org/freedesktop/NetworkManager/ActiveConnection/45 byl už mezi objekty v dotazu o několik řádků výše. Ano je to tak. Pro prohledání vlastností aktivního připojení použijeme naprosto stejný postup.

Zjistíme tak, že aktivní připojení je k dispozici prostřednictvím interfacu org.freedesktop.NetworkManager.Connection.Active, který poskytuje vlastnost Connection. Hodnotou je pak cesta k Objektu /org/freedesktop/NetworkManager/Settings/27. Zavoláním metody GetSettings Interfacu org.freedesktop.NetworkManager.Settings.Connection se dostaneme ke kýžené informaci.

$ qdbus --literal --system org.freedesktop.NetworkManager /org/freedesktop/NetworkManager/Settings/27 org.freedesktop.NetworkManager.Settings.Connection.GetSettings

[Argument: a{sa{sv}} {"802-11-wireless" = [Argument: a{sv} {"ssid" = [Variant(QByteArray): {65, 76, 90, 65, 70, 82, 69, 69}], "mode" = [Variant(QString): "infrastructure"], "mac-address" = [Variant(QByteArray): {44, -48, 90, -72, 66, -35}]}], "connection" = [Argument: a{sv} {"id" = [Variant(QString): "Auto ALZAFREE"], "uuid" = [Variant(QString): "7363562a-e92b-49d1-9912-12e7b5ab55a4"], "timestamp" = [Variant(qulonglong): 1396886163], "type" = [Variant(QString): "802-11-wireless"]}], "ipv4" = [Argument: a{sv} {"addresses" = [Variant: [Argument: aau {}]], "dns" = [Variant: [Argument: au {}]], "method" = [Variant(QString): "auto"], "routes" = [Variant: [Argument: aau {}]]}], "ipv6" = [Argument: a{sv} {"addresses" = [Variant: [Argument: a(ayuay) {}]], "dns" = [Variant: [Argument: aay {}]], "method" = [Variant(QString): "auto"], "routes" = [Variant: [Argument: a(ayuayu) {}]], "ip6-privacy" = [Variant(int): 2]}]}]

Z výpisu je patrno několik věcí

  1. že se nám podařilo z NetworkManageru dostat informaci o síti, do které jsme právě připojeni
  2. že se nám (mě určitě) moc nelíbí práce s qdbus

Zkusme to celé znovu, tentokrát v Pythonu

import dbus

bus = dbus.SystemBus()

service_name = 'org.freedesktop.NetworkManager'

proxy = bus.get_object(service_name, '/org/freedesktop/NetworkManager')
mgr_props = dbus.Interface(proxy, "org.freedesktop.DBus.Properties")
active = mgr_props.Get("org.freedesktop.NetworkManager", "ActiveConnections")

for a in active:
    a_proxy = bus.get_object(service_name, a)
    a_props = dbus.Interface(a_proxy, "org.freedesktop.DBus.Properties")
    connection_path = a_props.Get("org.freedesktop.NetworkManager.Connection.Active", "Connection")
    c_proxy = bus.get_object(service_name, connection_path)
    connection = dbus.Interface(c_proxy, "org.freedesktop.NetworkManager.Settings.Connection")
    settings = connection.GetSettings()
    print(settings['connection']['id'])

To už vypadá podstatně lépe. Mimochodem jde o téměř doslovný příklad použití modulu dbus z jeho dokumentace. Zdá se, že podobný problém už někdo přede mnou řešil 🙂
Vyzkoušejte a dejte vědět, jestli se vám to povedlo.

Posted by & filed under Linux.

Pokud patříte mezi ty, kteří každý den nacházejí ve své poštovní schránce několik nevyžádaných mailů psaných Azbukou, Hebrejsky nebo Čínsky, a používáte na svém mailserveru Amavis se Spamassassinem, určitě vás napadlo, jestli by tato, jinak celkem schopná, dvojka, dokázala tento nepříjemný problém vyřešit.

SpamAssassin

TextCat

Nebudu Vás napínat, dokázala. Základem řešení je Spamassassin plugin TextCat. Slouží k rozpoznávání jazyka, kterým je napsáno tělo zprávy. Plugin není ve výchozím nastavení zapnut (mluvím o balíkové verzi pro Debian 6 a 7).

Plugin zapněme v konfiguračním souboru  /etc/spamassassin/v310.pre odkomentováním řádku

loadplugin Mail::SpamAssassin::Plugin::TextCat

Plugin má několik konfiguračních parametrů, které je nutné doplnit do souboru /etc/spamassassin/local.cf. Kompletní seznam je k dispozici na http://spamassassin.apache.org/full/3.3.x/doc/Mail_SpamAssassin_Plugin_TextCat.html

# vybereme jazyk emailů o které stojíme
ok_languages en cs sk

# vyjmenujeme jazyky, které nechceme testovat
inactive_languages ''

# o kolik nechtěný jazyk zvedne spam score zprávy
score UNWANTED_LANGUAGE_BODY 7

# přidá do zprávy hlavičku X-Spam-Languages
add_header all Languages _LANGUAGES_

 

Posledním krokem je upozornit Amavis aby ponechal v emailu hlavičku X-Spam-Languages, kterou TextCat právě přidal. Upravme /etc/amavis/conf.d/50-user přidáním následujícího řádku.

$allowed_added_header_fields{lc('X-Spam-Languages')} = 1;

Hotovo

Nyní restartujte Amavis. V hlavičkách odchytaných spamů by nyní měla bý vidět i X-Spam-Languages s detekovaným jazykem a v případě nechtěného jazyka i navýšení score o zvolenou hodnotu.

 

Posted by & filed under Android.

Nedávno jsem psal o vánoční instalaci Cyanogenmodu na Samsung Galaxy SII. Instalace byla úspěšná, a i když jsem instaloval nightly build, systém se choval způsobně a práce s ním byla radost. Rozčarování přišlo ve chvíli, kdy systém začal hlásit nedostatek místa v úložišti a to ještě nebyly instalované klíčové aplikace jako Facebook, Snapseed, HDR Camera apod.

android

Když se dostanete do podobné situace, obvykle jde o vyčerpání volného místa v interním úložišti. V případě SGS II jsou to 2GB, což obvykle pohodlně stačí na, časem vybroušenou, sadu aplikací, které každodenně používám. V mém případě ale místo došlo podezřele brzy.

Nejprve jsem zkoušel aplikace přesouvat na SD kartu, ale většina už takto byla nastavena. Mazal jsem nepotřebné, čistil cache a tempy ale nic napomáhalo. Pak jsem to tak nechal, nemaje čas na další pátrání.

K problému jsem se vrátil, když jsem na zařízení instaloval SSH daemona, abych se pohodlněji dostal na filesystém a prohlédl si androida zevnitř.
Ukázalo se, že interní úložiště je připojeno do adresáře /data a skutečně na něm zbýval necelý megabyte volného místa. Po chvilce pátrání bylo jasno. Problém s místem na disku způsobil neobvykle velký adresář lost+found

Co je adresář lost+found ?

tento adresář na linuxu potkáte často. (říkal jsem, že Android je linux, ne?) Vznikne při naformátování oddílu disku na filesystémy ext2-4. Je to speciální adresář, do kterého při údržbě oddílu systém připojuje fragmenty poškozených souborů a adresářů. Tento mechanizmus oceníte hlavně ve chvíli, kdy je systém souborů poškozený v místě, kde máte uložená důležitá data a za zlomky a útržky souborů byste platili zlatem. V ostatních případech může způsobit popisovaný problém.

Jak k problému došlo?

To je dobrá otázka. Mám teorii, že k poškození filesystému na oddílu /data došlo při jednom (nebo vícero) z tvrdých restartů telefonu. Systém při bootu spustil e2fsck a ten při opravě zdecimovaného filesystému připojil více než polovinu obsahu do složky lost+found. Předpokládám, že systém poté nenaběhl a já musel provést factory reset (na 2-3 takové si vzpomínám). Tady má teore kulhá. Možná budu muset víc zapátrat, možná někdo pomůže v komentářích, ale očekával bych, že při factory resetu se /data oddíl bude formátovat a to by samozřejmě znamenalo i vzprázdnění adresáře lost+found.

Řešení

je nasnadě, smáznout obsah adresáře lost+found.

cd /data/lost+found
rm -rf *

Mě se takto podařilo uvolnit 60% kapacity interního uložiště a to není málo 🙂
Samozřejmě si před smáznutím obsah zazálohujte, pro případ, že budete za dlouhých zimních večerů něco hledat.

Poznámka

pro zásah na oddílu /data je nutné mít roota. Z minulého článku už víte, že já jsem měl Cyanogenmod a tam je root součástí balení.

Na závěr

snad jen popřeju hodně štěstí při léčení vašeho telefonu a v případě potíží dejte vědět. Rád vám telefon zničím odborně.

 

 

Posted by & filed under Android.

O Vánocích mi zbylo trochu času i na nápady na které se během roku nedostává. Jeden z hodně lákavých na konci seznamu byl i vyzkoušet na své postarší SGS II  Cyanogenmod – komunitně vyvíjený alternativní operační systém pro smartphony a tablety založený na Androidu. Byla to možnost jak vyzkoušet Android 4.3 Jelly Bean na zařízení, které se ho oficiální cestou nedočká.

cyanogenmod

Než budete číst dál

Exclamation-MarkPokud někoho z vás napadne začít zkoušet totéž na svém telefonu, je dobré si uvědomit, že jste na tenkém ledě a jediná chybka může z vašeho telefonu udělat drahé těžítko.

Začínáme

Aby s telefonem bylo možné komunikovat po USB kabelu během narávání operačního systému, vybavil ho Samsung komponentou Loke. Ta očekává na straně PC software Odin (taktéž od Samsungu). Samsung používá Odin pouze interně a nikdy ho oficiálně neuveřejnil. Kopie, která koluje po internetu Samsungu unikla. Protože má Odin i další nedostatky (je veřejně nedokumentovaný, údajně nespolehlivý a je pouze pro Windows), vznikl Heimdall.

Heimdall

Heimdall je multiplatformní open source sada nástrojů pro flashování mobilních zařízení Samsung. Pro USB komunikaci používá populární knihovnu libusbx

Instalace Heimdallu

Na svém notebooku používám operační systém Debian GNU/Linux 7.3 a Heimdall jsem instaloval ze zdrojových kódů

Nejprve je nutné ověřit, zda máte kompletní prostředí pro kompilaci a sestavení programu.

apt-get install build-essential pkg-config zlib1g-dev libusb-dev libqt4-dev qt4-qmake autoconf libtool libusb-1.0-0-dev

Další kroky jsou stažení kompilace a instalace jednotlivých komponent Heimdallu

$ git clone git://github.com/Benjamin-Dobell/Heimdall.git
$ cd Heimdall/libpit
$ ./autogen.sh
$ ./configure
$ make
$ cd ../heimdall
$ ./autogen.sh
$ ./configure
$ make
$ su -c 'make install'
$ cd ../heimdall-frontend/
$ qmake-qt4 heimdall-frontend.pro
$ make
$ su -c 'make install'

Heimdall je nainstalován, co dál?

ClockworkMod recovery

Pomocí Heimdallu pošleme do telefonu alternativní ClockworkMod recovery, která umožní nahrát samotý Cyanogenmod.

Ale pěkně popořadě.

stáhneme a rozbalíme ClockworkMod recovery

$ wget http://cmw.cmfs.me/c1/recovery/GT-I9100_JB_ClockworkMod-Recovery_6.0.2.9.tar
$ tar -xvf GT-I9100_JB_ClockworkMod-Recovery_6.0.2.9.tar
zImage

Nyní

  • vypněte Samsung Galaxy SII
  • připojte USB kabel do počítače ale zatím ne do telefonu
  • nastartujte telefon do download modu stiskem Volume Down, Home & Power
    • potvrďte disclaimer
    • připojte USB kabel

Z terminálu pomocí Heimdallu nahrajte ClockworkMod recovery

$ heimdall flash --kernel zImage --no-reboot

Na telefonu se objeví modrý progress bar. Po doběhnutí odpojte USB kabel a manuálně restartujte telefon do ClocworkMod recovery stiskem Volume Up, Home, & Power

Pokud se vše podařilo, máte vše připraveno pro nahrání Cyanogenmodu

Cyanogenmod

Aktuální verzi Cyanogenmodu (CM) pro SGS II (i9100) si stáhněte tady.

Cyanogenmod kvůli licenčním podmínkám neobsahuje Google Play a žádné Google aplikace. Pokud plánujete používat telefon s Google účtem, stáhněte si ještě Google Apps.

Stažený CM a případně i Google Apps je potřeba nahrát na SD kartu telefonu. Já jsem to udělal tak, že jsem ji z telefonu vyndal. Samozřejmě existuje i možnost použít adb.

  • manuálně restartujte telefon do ClocworkMod recovery stiskem Volume Up, Home, & Power
    (pohyb v menu – tlačítka hlasitosti, potvrzení volby – tlačítko power)
  • zazálohujte si aktuální stav telefonu pomocí backup and restore
  • proveďte kompletní smazání telefonu pomocí  wipe data/factory reset
  • vyberte install zip from sdcard
  • vyberte choose zip from sdcard
    nalistujte si váš stažený Cyanogenmod a potvrďte volbu
    totéž případně zopakujte i pro Google Apps
  • až instalace doběhne zvolte reboot system now

Je hotovo

Pokud jste přeci jenom zkoušeli totéž na svém telefonu a vše se povedlo, blahopřeji. Pokud je něco špatně mrkněte ještě do seznamu odkazů, kde můžete proklikat zdroje, ze kterých jsem čerpal. Často obsahují i řešení různých chybových stavů.

Zdroje

Instalační manuál pro SGS II (i9100) (EN)

Domovská stránka Heimdallu (EN)

Instalační manuál pro Heimdall (EN)

Poučný článek o recovery na Svět Androida  (CZ)

Posted by & filed under proVeterinu.cz.

Nečiň druhým to,co nechceš, aby oni činili tobě.

Osobně moc nemám rád reklamu, která se snaží manipulovat a působit podprahově. Nemusím slevy, akce, výhry a dost mi vadí věci zadarmo. Proto hned na začátku říkám, ano, bude to o věcech, které je možné si u nás koupit. Ale nebojte, nebude jich moc 🙂

Před časem jsme spustili specializovaný elektronický obchod s vybavením pro chovatele a veterináře proVeterinu.cz. Prodáváme v podstatě samé pracovní nástroje, pro úzce specializovanou skupinu profesionálů, a proto teď před Vánoci už poněkolikáté přemýšlím o tom, jestli by, v celkem širokém sortimentu, náhodou nějaký výrobek neobstál i jako zajímavý vánoční dárek.

Jsem už třetího odstavce a ještě nemám úplně jasno, které z výrobků to budou. Popravdě, vím o jednom, který bych si sám hodně přál. Ještě ale odbočím. Prodáváme kompletní sortiment švýcarsko-německé firmy Hauptner-Herberholtz a, i když vyrábějí kde co, mě vždycky naskočí slova prvotřídní ocel a kvalita. Proto mě na první pohled zaujal tenhle nenápadný pastýřský nůž.

Pastýřský nůž Hauptner

 

Pokud sháníte dárek pro pejskaře, možná by se mu mohl hodit následující ruční stříhací strojek.

Ruční stříhací strojek Hauptner

 

Nebo něco pro koňáky? Mrkněte na tuhle moc pěknou sadu nožů na kopyta a paznehty.

 

Sada nožů na paznehty

Pokud máte ve Vašem okolí mladého nadějného biologa, možná by se mu hodil mikroskop.

Binokulární mikroskop MC 50

Nakonec jedna spíš taková legrace. Když mi bylo asi tak 4-5let, moc jsem si přál 20ml stříkačku, protože kdo ji měl, byl king. Takže asi ne jako dárek, ale pro splnění si dávnejch dětskejch snů je tu.

Jednorázová injekční stříkačka se zámkem Luer

Posted by & filed under MS Office.

Proč vlastně archivovat?

Nechtěl bych jakkoli hájit, či hanět použití archivace v MS Outlooku, stejně jako nechci nijak komentovat výběr Outlooku jako poštovního klienta. Celkem často se ale potkávám s lidmi, kteří Outlook používají a z různých důvodů ručně čí automaticky archivují.

outlook

Nastavení pravidelné archivace není nijak komplikované a zvládne ho každý. Nicméně se onehdá stalo,  že i při nejlepší vůli Outlook sice archivoval (čti proces proběhl bez viditelné chyby), ale staré emaily zůstávaly dál na původních místech a složky archivu stále zely prázdnotou.

Trik je, jak se později ukázalo, v tom, že Outlook při archivaci založené na stáří emailu nepracuje s datem doručení, ale s datem poslední změny a to se v minulých měsících skutečně, vinou migrace na nový server, změnilo.

Jak tedy problém řešit?

Manuálně to jde, ale takhle to dělat nechcete 🙂

Druhou, lepší, variantou je, donutit Outlook, změnou v registrech, aby datum změny ignoroval.

Tuto možnost nabízí Outlook od verze 2010 (případně Outlook 2007 s aplikovaným hotfixem http://support.microsoft.com/kb/2458611)

Do registrů je nutné přidat následující klíč

HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Outlook\Preferences
DWORD Value: ArchiveIgnoreLastModifiedTime
Value data: 1

A pak to teprve začne fungovat.

Vyzkoušejte a dejte v komentářích vědět jestli to pomohlo.

(k řešení mě přivedla  v tomto článku)

 

Posted by & filed under OS X.

Předpokládejme že uživatelka Jana Vomáčková se vdala za Frantu Nováka a bude se teď jmenovat Jana Nováková. V zájmu zachování pořádku bychom rádi změnili její uživatelské jméno na jejím Macu z janavomackova na jananovakova. Bohužel tuto možnost standardně správa uživatelů v OS X neumožňuje. Co s tím?

 Apple

Ke změně uživatelského jména je nutno mít admin práva a povoleného uživatele root. (Předvolby systému -> Uživatelé a skupiny -> (povolit změny) -> Volby přihlášení -> Připojit -> Otevřít adresářovou utilitu  -> (povolit změny) -> Úpravy -> Povolit uživatele root -> zadat 2x nové heslo -> OK)

Pokud nemáme k dispozici dalšího uživatele s admin právy, vytvoříme si dočasného, řekněmě že se bude jmenovat Hugo.

Přihlásíme se na uživatele Hugo a otevřeme si terminál (Finder->Aplikace->Utility->Terminal)

abychom mohli manipulovat domovským adresářem uživatelky Jana Vomáčková, přepneme se na roota.

$sudo su -

po zadání Vašeho (nikoli rootova) hesla získáme potřebná práva. Provedeme přejmenování uživatelského adresáře.

$ cd /Users
$ mv janavomackova jananovakova

Nyní je čas ve správci uživatelských účtů odebrat účet Jana Vomáčková. Účet bude odebrán bez jakýchkoli dotazů ze strany systému.

Dalším krokem bude vytvoření uživatele Jana Nováková. Systém navrhne vytvoření uživatelského jména jananovakova, což je přesně to, co potřebujeme – potvrdíme založení účtu.

Nyní se operační systém zeptá zda má použít již existující adresář (ano, ten který jsme v dříve přejmenovali). Potvrdíme, systém na adresáři upraví práva a je téměř hotovo.

Zbývá se přihlásit na novou uživatelku a vše důkladně otestovat.

Na závěr smáznem dočasného uživatele Hugo.

Posted by & filed under Linux.

Na GNU Screen jsem narazil náhodou. Hledal jsem, zda existuje nějaký elegantní způsob, jak v linuxové konzoli zakonzervovat interaktivně běžící proces, neshodit si ho při odpojení vzdálené ssh relace a mít možnost s ním později dál interaktivně komunikovat. Docela mě překvapilo, že řešení existuje, že je elegantní a že jsem o něm nevěděl tak dlouho.

První dojmy

Chcete-li interaktivní process spustit tak aby bylo možné se k němu později vrátit, spousťte si nejprve screen (musíte mít nainstalováno, v debianu a spol. zkuste apt-get install screen)

hugo@apps:~$ screen

Program trošku mate tělem, protože zobrazí licenci, a vyzve ke stisku Enteru. Poté se objeví prompt a … nic. Nenechte se zmást, jste právě v shellu, spuštěném pod GNU Screen. Pro efekt doporučuji v tomto shellu spustit něco, co průběžně cokoli vypisuje na obrazovku. Pokud vás hned nic nenapadne zkuste třeba:

for (( ;; )); do date; sleep 1; done

Kouzlo

S trochou fantazie si představte, že je to program, který se vás pravděpodobně zhruba za 40min bude na něco ptát, ale vy byste potřebovali využít čas na přesun domů. Tady má GNU Screen pro mě největší kouzlo. Stiskem Ctrl-a d se odpojíte od sezení zatímco program dál pracuje.

Později se do sezení připojíte spuštěním

hugo@apps:~$ screen -r

příkaz otevře konzoli, tam kde jste ji před časem opustili. Program mezi tím vypisoval, případně čeká na vaši akci.

Není to kouzelné?

 

Ovládání

Prostředí GNU Screen se ovládá klávesovými zkratkami. Jejich seznam zobrazíte stiskem Ctrl-a ? GNU screen má velkou množinu funkcí, které nabývají na důležitosti při použití na konzoli bez okenního prostředí. Jde především o možnost vytvářet a pokročile spravovat okna včetně copy/paste mezi nimi.

Mezi nejdůležitější/základní funkce patří

  • Ctrl-a ?
    vypíše seznam klávesových zkratek
  • Ctrl-a d
    odpojí od screen
  • Ctrl-a c
    vytvoří nové okno
  • Ctrl-a w
    vypíše seznam existujících oken
  • Ctrl-a n, Ctrl-a p
    přepne do následujícího, předchozího okna
  • Ctrl-a S
    rozdělí okno horizontálně
  • Ctrl-a |
    rozdělí okno vertikálně
  • Ctrl-a <TAB>
    přepne focus do následujícího okna
  • Ctrl-a \
    ukončí všechna okna a screen

 

Letmý pohled na zajímavé přepínače programu screen

  • -ls
    vypíše aktivní screen sezení
  • -r <pid>
    připojí se k screen sezení. Pokud je sezení víc, je nutné identifikovat sezení uvedením PIDu
  • -R
    připojí se k nejmladšímu existujícímu sezení, pokud žádné neexistuje, vytvoří nové

 

Závěrem

Věřím, že GNU Screen Vám doplnil mozaiku znalostí , stejně jako mě před časem, o zajímavý nástroj, který se bude při správě linuxových serverů hodit. Jakékoli připomínky jsou vítany