Shell tip: Co mi to zase blokuje zvukovku?

Jelikož mám tendenci svou workstejšnu nerebootovat a mít hromadu spuštěných aplikací, občas se stane, že si chci něco přehrát, ale nemůžu, protože mi něco zablokovalo zvukovku. Který proces je ovšem v takovém případě viníkem, resp. jak to zjistit? K tomu existují dva nástroje, lsof a fuser:

sudo lsof /dev/snd/*

sudo fuser /dev/snd/*

Více informací viz:

SNI aneb virtuální weby přes SSL s jednou IP adresou: stále nic moc

Nasadit moře virtuálních webů na jeden jediný server dnes není vůbec žádný problém (naopak, je to běžná praxe). Vše může bez problémů jet i na jedné IPv4 adrese, kterých, jak asi víte, je teď už kritický nedostatek. Problémem je, že takto mohou weby jet jen přes HTTP, ale už ne přes HTTPS. Proč je tomu tak? Přistupujete-li k nějakému webu, třeba na www.shadow.cz, protože si chcete přečíst tento článek, zašle váš prohlížeč serveru následující požadavek:

GET /blog/1106
Host: www.shadow.cz

Jak je patrné, webový server běžící na příslušné IP adrese z požadavku zjistí, ke kterému webu chcete přistupovat, a zobrazí vám požadovanou stránku. Na jedné IP adrese tak můžou běžet klidně tisíce webů, resp. virtuálních webů (virtual host).

Když chcete k serveru přistupovat přes HTTPS, je situace jiná. Prohlížeč totiž musí nejprve vytvořit šifrované spojení, a teprve potom může přes toto spojení zaslat požadavek s názvem virtuálního webu, ke kterému chcete přistupovat. Webový server tedy nemá žádnou šanci poznat, který certifikát (ty jsou obvykle vydávány pro jednu konkrétní doménu) má prohlížeči naservírovat.

Řešení tohoto problému samozřejmě existuje, je jím rozšíření TLS protokolu (což je nástupce SSL protokolu) s názvem SNI (Server Name Indication), které problém řeší tím, že klient dodá jméno serveru, ke kterému se chce připojit, ještě před tím, než mu server odešle příslušný certifikát.

Situace však není až tak růžová. Servery SNI jakž takž už nějakou dobu podporují. Celé SNI tedy v tuto chvíli stojí a padá především na podpoře prohlížečů. Což o to, takový Firefox podporuje SNI od verze 2.0 (prostředek 2006), ale u IE je situace jiná. Ten sice SNI umí také (od IE 7), jenomže ne na XP, které jsou bohužel stále velice rozšířené. Dokonce ani aktuální osmička na XP stále SNI nepodporuje. Microsoft zde skutečně má očekávání nezklamal, stále brzí pokrok jako brzdila TV Nova digitalizaci. A tak vám na XP nezbyde než uživatelům sdělit, aby vyměnili ošoupaný a neschopný IE za něco produktivnějšího. Jenomže k tomu, abyste to jako provozovatelé webů mohli udělat, musí váš web být schopen toto uživatelům sdělit, což bude těžké, pokud se uživatelům bude zobrazovat chybové hlášení o tom, jak je použitý certifikát nebezpečný a že vzdálený server je určitě nějaký podvodník, který chce uživatele na dálku sežrat. Ach jo.

Abych nenadával jen na Microsoft, ani Google se svým Androidem a Chromem v podpoře SNI neoslnil. Na XP musíte použít až šestku (vydána v září 2010), jinak vám stačí 5.0.342.1 z března 2010. No a co se Androidu týče, tam to možná půjde, ale až ve verzi 3.0, která dosud nebyla vydána. Dřívější verze SNI prostě nepodporují.

Jak dlouho budeme muset čekat, než bude SNI přístupné z běžně dostupného klientského softwaru? Stihneme to ještě před přechodem na IPv6?

Windows 9 bude postaven na FreeBSD

Minulý týden jsem nezávazně pohovořil s pracovníkem Microsoftu na jedné z jejich prezentací, které jsem se jako zaměstnanec bohužel musel zúčastnit. Ten mi sdělil velmi zajímavé informace o budoucím směřování Microsoftu, tak neuvěřitelné, že jsem to vzal jen jako žert. Jeho vážná tvář mne ale přesvědčila, abych si tuto informaci ověřil, a proto jsem se obrátil na tiskového mluvčího Microsoftu, kterým je Ing. A. Lírpa. Ten mi včera potvrdil, že Windows NT se nyní skutečně stává slepou větví vývoje, jelikož po vydání Windows 8 provede Microsoft zcela zásadní změnu – následující Windows již nebudou založeny na větvi NT, nýbrž na FreeBSD. Microsoft se tak připojí k Applu, který svůj Mac OS X také nakonec založil na BSD unixu.

Plán Microsoftu mi není zcela jasný, mám zatím pouze minimum informací, ale má komunikace s Ing. Lírpou odhalila přinejmenším to, že Microsoft hodlá FreeBSD upravovat spíše méně, pouze přidá svoje grafické rozhraní. Aero zmizí, nahradí jej efekty Compizu. Tentokrát se Microsoft nebude snažit o zachování zpětné kompatibility, jelikož mu to v minulosti přineslo mnoho problémů, a při přechodu na FreeBSD to beztak není reálné.

Volba FreeBSD byla zde celkem jasná, neboť GNU/Linux je pro Microsoft licenčně nepřijatelný (licence GPLv2 a GPLv3), zatímco FreeBSD může díky jeho licenci bez problémů použít (nějakou dobu se traduje, že z BSD Microsoft převzal mj. TCP/IP stack) a dále prodávat kopie upraveného a zproprietarizovaného BSD systému. V tuto chvíli ještě není jasné, zda-li bude Microsoft spíše asistovat vývojářům FreeBSD nebo zda-li vezme aktuální podobu FreeBSD a tu si bude dále vyvíjet sám, uzavřeně.

Flexibilita unixových systémů by měla Microsoftu dát mj. možnost snadné portace Windows na speciální zařízení jako mobilní telefony, tablety, e-book čtečky, atd., což snad sníží náskok Androidu nad současným „hitem“ Windows Phone 7, který se příliš neprodává.

Pokud někdo čeká, že se tímto krokem Microsoft obrátí k Open Source a svobodnému softwaru přívětivěji, čeká patrně marně. Patentové žaloby vůči Androidu a jeho použití budou nadále pokračovat a Microsoft nedá Open Source světu ani o řádek kódu více, než kolik je nezbytně nutné.

Je otázkou, jak bude vývoj pokračovat a jak z toho vyvázne FreeBSD, resp. zda-li to FreeBSD nějak pomůže, nebo si jen MS od nich vezme co potřebuje a jako odměnu jim neposkytne ani jednu volnou licenci na užití finálního Windows 9. Víc už se mi bohužel z Ing. Lirpy vydolovat nepodařilo, snad až na jedinou věc – kódové označení Windows 9, který bude založen na FreeBSD, je „Tsuki“ (Microsoftu se patrně zalíbila Japonština).

Na závěr nemohu než vyjádřit své rozporuplné pocity – na jednu stranu uvítám další unixový systém, ale na stranu druhou nevidím příliš rád, když se ze svobodného softwaru dělá nesvobodný, byť to jeho licence umožňuje. No, uvidíme, jak to nakonec dopadne. Třeba se z toho nakonec vyklube aprílový žertík.

Ústavní soud zrušil data retention v ČR

Jak se zdá, neuvěřitelné se stalo realitou. Ústavní soud dnes zrušil povinnost poskytovatelů komunikačních služeb uchovávat až šest měsíců údaje o tom, kdo s kým a jak moc komunikoval. Toto se týká téměř každého uživatele Internetu nebo každého uživatele mobilního telefonu. Příslušné paragrafy zákona o elektronických komunikacích byly do našeho právního řádu včleněny na popud EU (implementace směrnice o data retetnion) a nyní byly shledány protiústavní a zrušeny. Více informací viz web Ústavního soudu. Můj komentář k této věci je krátký, ale výstižný: „Ústavní soude, výborně! Jen tak dál!“.

Upgrady aneb adrenalinový sport správců serverů

Myslíte, že správce serverů nemá šanci zažít ve své práci nějaké to napětí a adrenalin? Ale ano, stačí se pustit do upgradu serverů na novější verze distribucí, pokud možno za chodu. Tak jsem se rozhodl upgradovat server, na kterém běží mimo jiné i tento web. Upgradoval jsem Debian z verze 5.0 na verzi 6.0, jelikož včera vyšla (Debian Squeeze vyšel v únoru – omlouvám se za zpoždění publikace). Ano, správně, tohle by se dělat nemělo, mělo by se počkat, mělo by se to pěkně naplánovat, ještě lépe před upgradem otestovat na kopii serveru, ale rozhodl jsem se být odvážný. Ostatně, i když je to „produkční“ server, je to můj server, jehož nefunkčnost vadí pouze mně.

Celý příspěvek

Drupale, Drupale, ty jeden lumpe

Právě se zabývám nasazením Drupalu jako CMS v jednom svém projektu. Jelikož je již k dispozici stabilní vydání z nové řady 7.0, rozhodl jsem se použít právě to (nechtělo se mi použít verzi 6 a po čase řešit upgrade na sedmičkovou řadu). Samozřejmě nelze očekávat, že nová řada bude zcela bez chyb, nicméně je-li k dispozici stabilní vydání, domníval jsem se, že alespoň ty nejvíce do očí bijící chyby a nepříjemnosti budou odstraněny.

Pro realizaci řady pravidelných interních činnosti je v Drupalu použit cron. Jednou ze stěžejních funkcí, alespoň z hlediska bezpečnosti, je ověření stavu dostupných aktualizací, aby správce tušil, kdy vyšla bezpečnostní aktualizace, a kdy má CMS aktualizovat. Stav aktualizací se má zkontrolovat při běhu cronu. Bohužel se tak ale u sedmičkové řady neděje. Drupal vám sice říká, že máte spustit cron ke zjištění dostupných aktualizací, ale spuštění cronu stav nezkontroluje a hláška zůstává. Nezbývá tedy než aktualizace kontrolovat ručně.

Chyba byla nahlášena v prosinci roku 2009, Drupal 7.0 (stable) vyšel 5. ledna 2011, avšak chyba nebyla dosud (březen 2011) opravena. Samozřejmě si nesmírně vážím vývojářů Drupalu, Drupal samotný považuji za vynikající CMS a rozhodně nemám v úmyslu tento projekt nijak shazovat či kritizovat, jen se trošku podivuji nad tím, že takový problém nechali při vypuštění dlouho očekávané nové verze nevyřešený a že ani 3 měsíce po jejím vypuštění není k dispozici alespoň patch.

IPv6 privacy extensions

Skutečnost, že IPv4 adresy akutně docházejí, ponechám stranou. Linux podporuje IPv6 již dlouho, a podporuje i jedno z jeho rozšíření, rozšíření soukromí (privacy extensions). Bohužel většina distribucí jej ve výchozím stavu nezapíná, což má jisté následky na vaše soukromí vůči všem serverům, se kterými váš linuxový systém komunikuje přes IPv6.

Je to dáno tím, že v rámci autokonfigurace IPv6 se k prefixu sítě přidává i MAC adresa vaší síťové karty, a ta se tak stává součástí IPv6 adresy, pod kterou vystupujete. Sledováním této části IPv6 adres může jakýkoliv server, se kterým pravidelně komunikujete, sledovat, odkud odevšad k němu přistupujete. Systémy Windows mají privacy extensions ve výchozím stavu zapnuté, u linuxových distribucí je tomu zatím převážně naopak.

Pro konkrétní síťové rozhraní je možné privacy extensions povolit buď dočasně nebo permanentně. Dočasně to lze provést následujícím příkazem:

sysctl -w net.ip6.conf.interface.use_tempaddr=2

Místo slova interface zapište rozhraní, u kterého chcete privacy extensions nastavit (např. eth0. Chcete-li toto nastavení uložit permanentně, tzn. aby přežilo restart, zapište výše zmíněnou řádku do /etc/sysctl.conf, samozřejmě bez úvodního sysctl -w.

Je samozřejmě možné toto nastavit globálně pro všechna rozhraní. V takovém případě se nejprve ujistěte, že načtete ipv6 modul ještě před tímto nastavením (většinou je třeba tento modul explicitně zařadit pro zavedení při startu, ještě před aplikací nastavení ze sysctl.conf). Poté zapište do /etc/sysctl.conf následující dvě řádky:

net.ipv6.conf.all.use_tempaddr=2
net.ipv6.conf.default.use_tempaddr=2

V mém případě toto nastavení bohužel nefungovalo, i když by mělo. Nezbylo mi tedy než do /etc/sysctl.conf přidat specifikaci pro všechna síťová rozhraní, takto:

net.ipv6.conf.eth0.use_tempaddr=2
net.ipv6.conf.wlan0.use_tempaddr=2

Význam svobody softwaru

V jedné dávné diskusi jsem byl dotázán, k čemu jako uživatel softwaru potřebuji svobodu. Dotyčný přišel s materiální analogií, tedy s příkladem konkrétního, fyzického nástroje, který si koupím, ale nedostanu k němu dokumentaci, jak byl sestaven. Daný nástroj používám, pokud mi vyhovuje, a pokud ne, koupím si jiný. Proč mi tato analogie přijde zcestná? A proč si myslím, že svoboda softwaru je klíčová?

Celý příspěvek

Přátelé Open Source

Dnes jsem uzřel zprávičku o IBM, kterak hrozí patentovým sporem firmě, která vyvíjí open source software. Součástí patentového sporu jsou i dva patenty, které IBM přislíbilo open source vývojářům. V souvislosti s tím mne napadlo následující:

Open source nemá přátele. Pouze své tvůrce, uživatele, zneuživatele a nepřátele.

Pravdou je, že open source má kromě tvůrců a uživatelů své nepřátele – obvykle konkurenty z prostředí proprietárního softwaru. Jako zneuživatele bych viděl někoho, kdo začne na nějakém open source projektu rýžovat, aniž by cokoliv vrátil zpět původním lidem, z jejichž práce těží. Ale to je sporné – pokud dotyční daný software vydali pod jistými licenčními podmínkami, pak mohli s podobným scénářem počítat (dovoluje-li to licence), a tudíž se nejedná o zneužití.

Kdo je ale přítelem open source? Nejsem si jistý, kdo by tak mohl být označen (uživatel je uživatel, vývojář je vývojář…). Vím ale to, že přítelem open source rozhodně není entita, jejímž primárním cílem je dosažení zisku (tedy jakákoliv komerční společnost). Ta totiž bude stát za Open Source jen tak dlouho, dokud se jí to vyplatí, a jakmile se situace změní, bez jakýchkoliv rozpaků vytáhne nůž a vrazí mu ho do zad. Firmy podle mého nejsou a nemohou být přáteli Open Source. Zejména pak Ubersoft.