Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Informace
Jak je to s administrátory
29. května 2006, 00.00 | Již víme, jakým způsobem Mac OS X autentifikuje uživatele, a také jak jej autorizuje k různým operacím. Jaká uživatelská konta však jsou v Mac OS X běžně k dispozici? O tom si více řekneme dnes.
Již víme, jakým způsobem Mac OS X autentifikuje uživatele, a také jak jej autorizuje k různým operacím. Jaká uživatelská konta však jsou v Mac OS X běžně k dispozici? O tom si více řekneme dnes.
Mimochodem – my zde pojmy "uživatel" a "uživatelské konto" užíváme víceméně jako synonyma (což nevadí, neboť v praxi nemůže dojít k záměně); striktně vzato však uživatelské konto je skupina všech údajů a nastavení, jež Mac OS X pro konkrétního uživatele spravuje. Patří mezi ně samozřejmě uživatelovo krátké i dlouhé jméno, jeho heslo, jeho domovská složka, seznam skupin, jejichž je členem, nastavení shellu, s nímž chce pracovat v terminálu, a podobně.
Administrátor
Mac OS X rozlišuje dva typy uživatelů: běžného uživatele a administrátora. Na úrovni grafického uživatelského rozhraní jsou oba typy odlišeny přepínačem "allow user to administer this computer" (v odpovídajícím panelu pro nastavení atributů uživatelského konta v aplikaci System Preferences). Ve skutečnosti je rozdíl mezi nimi prajednoduchý: administrátorem je kterýkoli uživatel, který je ve skupině "admin".
Standardní přístupová práva složek a souborů v Mac OS X jsou nastavena tak, že administrátor (tedy kdokoli, kdo je ve skupině "admin") má přístup k řadě důležitých systémových souborů – jmenovitě k aplikacím – a může je volně měnit – podívejme se na následující výpis z Terminálu:
145 /tmp> cd /Applications 146 /Applications> ls -ld . drwxrwxr-x 73 root admin 2482 Apr 14 00:44 ./ 147 /Applications> ls -ld Address\ Book.app Automator.app Mail.app Safari.app drwxrwxr-x 3 root admin 102 Mar 24 00:45 Address Book.app/ drwxrwxr-x 3 root admin 102 Mar 24 00:52 Automator.app/ drwxrwxr-x 3 root admin 102 Mar 24 01:50 Mail.app/ drwxrwxr-x 3 root admin 102 Mar 24 01:50 Safari.app/ 148 /Applications>
Vidíme, že všechny zobrazené (ale platí to i pro ostatní) aplikace, stejně jako sama složka "/Applications", patří skupině "admin", a mají ve druhé skupině přístupových práv "rwx" – takže kterýkoli uživatel, který je v této skupině, je smí volně číst i měnit. To samozřejmě přináší určité bezpečnostní risiko: pokud bychom v rámci konta administrátora např. spustili program, obsahující virus, mohl by virus vinou těchto přístupových práv bez obtíží napadnout všechny aplikace!
Kromě toho má (při standardním nastavení) administrátor také právo na základě obnovené autentifikace dočasně získat status superuživatele; to si vysvětlíme v příštím odstavci. To bezpečnostní risiko dále zvyšuje.
Proto obecně platí, že administrátorské konto je naprosto nevhodné pro běžnou práci. Bohužel, standardní instalace Mac OS X vytvoří právě administrátorské konto, a ačkoli uživatel samozřejmě ihned může vytvořit další neadministrátorské pracovní konto – a také by to měl udělat! – konfigurační asistent jej k tomu nevyzve. Proto poměrně mnoho laických uživatelů Mac OS X běžně pracuje v administrátorském kontě, a to je nejvýznamnější bezpečnostní risiko Mac OS X (v podstatě také jediné skutečně významné, vše ostatní, o čem se čas od času můžeme dočíst na Webu, jsou většinou jen nafouknuté bubliny neznamenající risiko vůbec žádné, nebo přinejhorším skutečné, ale nepříliš významné bezpečnostní "díry", jež ale Apple obvykle opraví dříve, než se o nich dozvědí případní hackeři).
Tohle je velmi důležité, proto si to zopakujeme tučným písmem:
- uživatelské konto, jež Mac OS X vytvoří při instalaci, je administrátorské;
- proto je nikdy, nikdy, nikdy neužíváme pro běžnou práci;
- namísto toho hned po instalaci vytvoříme běžné uživatelské konto (s vypnutým přepínačem "allow user to administer this computer"), a v něm běžně pracujeme;
- původní administrátorské konto pak slouží pouze pro případy, kdy chceme explicitně provádět rozsáhlejší administraci.
Poslední bod je zapotřebí velmi zřídkakdy: jelikož naprostá většina aplikací, včetně Finderu, System Preferences i Installeru, dokáže v případě potřeby automaticky vyvolat autentifikaci pouze pro požadovanou operaci (což je samozřejmě nesrovnatelně bezpečnější, než dáváme-li všem aplikacím carte blanche pro všechny operace předem), je potřeba přihlásit se explicitně jako administrátor naprosto výjimečná.
Mimochodem, získáme tak další drobnou výhodu okrajově související s bezpečností, jíž je záložní konto – pokud bychom se snad nějakým způsobem (třeba spuštěním "zlého" trojského koně, který promyšleným způsobem poničí aplikační předvolby) dostali do situace, kdy nebude možné se úspěšně přihlásit do našeho pracovního konta, nevadí: vždy se můžeme přihlásit jako administrátor (jehož data jsou samozřejmě chráněna, takže je z pracovního účtu poškodit nelze), a z jeho konta to pracovní opravit (administrátor si – na rozdíl od běžného uživatele – může přístup do cizích kont po další autentizaci vyžádat; hned v příštím odstavci si řekneme jak).
Kořen neboli root
Poslední záležitost, již si vysvětlíme v souvislosti se základním bezpečnostním systémem Mac OS X, je uživatel "root".
Z mnoha hledisek je žádoucí, aby existoval "superuživatel", jehož práva jsou v principu neomezená: představme si např. víceuživatelský systém, kde jeden z uživatelů zruší jakýkoli kontakt s administrátory: je třeba mít možnost soubory takovéhoto uživatele smazat, aniž by tím byla dotčena data ostatních uživatelů. Může se také stát, že běžný uživatel prostě zapomene heslo; v takovém případě je opět vhodné, aby bylo možné mu "zvenčí" nastavit heslo nové, a dát mu je na vědomí, aby se mohl opět přihlásit do svého konta.
Z těchto důvodů všechny systémy založené na Unixu tradičně obsahují speciální uživatelské konto "root" (identifikací takovéhoto uživatele je uživatelské číslo 0). Uživatel "root" může v zásadě cokoli: může smazat, přečíst nebo změnit libovolný soubor, může měnit kterékoli údaje pro kteréhokoli uživatele, a tak dále.
Je ovšem na první pohled zřejmé, že ačkoli existence superuživatele je cenná a mnohdy nenahraditelná, zároveň přináší i značné bezpečnostní risiko: pokud by se nějaký hacker dokázal přihlásit k našem počítači jako "root", nebo pokud by se nějaký malware dokázal spustit jako proces s uživatelským číslem 0, může si s počítačem a s daty v něm uloženými dělat v podstatě cokoli, co se mu zachce.
Mac OS X (stejně jako většina moderních unixových operačních systémů) tento problém řeší tak, že konto superuživatele jako takové je nepoužitelné: "root" se prostě přímo autentifikovat vůbec nemůže. Namísto toho mohou vybraní uživatelé získat pro své akce dočasně a omezeně superuživatelská práva na základě zvláštní autentifikace. To je obecně daleko bezpečnější, díky tomu, že neomezené právo "dělat cokoli" se vztahuje pouze na ty konkrétní operace, pro něž je zapotřebí, a ne na ostatní (přináší to však jisté risiko spojené s kvalitou hesel, tím větší, čím je administrátorů v systému víc – ještě se o něm zmíníme).
Jde vlastně o paralelu výše popsané nutnosti práce v uživatelském neadministrátorském kontu: stejně jako je třeba všechny běžné akce dělat s oprávněním pouhého uživatele, a pouze na administraci dočasně získat administrátorská práva, tak běžnou administraci je vhodné dělat s právy "pouhého administrátora" a superuživatelské oprávnění využívat pouze pro ty akce, pro něž je třeba.
A jaké akce to jsou? Především změna vlastnictví objektů: měnit vlastníka (jakéhokoli) objektu může pouze superuživatel. Kromě toho Mac OS X (velmi rozumně) omezuje přístup k řadě systémových souborů jen pro superuživatele, a nepouští k nim ani administrátory (tj. vlastníkem souborů je "root" a soubory nemají – na rozdíl od např. aplikací – povolený přístup ze skupiny "admin".
Aplikace s grafickým uživatelským rozhraním samozřejmě pro dočasné získání superuživatelských práv mohou využít standardní autentifikační modul; v terminálu k tomu slouží speciální příkaz sudo – základní využití je velmi jednoduché, prostě jej vložíme před libovolný příkaz, který chceme provést jako root (např. tedy "sudo rm -rf /" je zcela spolehlivý způsob, jak se připravit kompletně o všechna data).
Standardně je systém nastaven tak, že dočasně získat práva superuživatele mohou pouze administrátoři (a nikdo jiný), a mohou tak učinit po nové autentifikaci s užitím vlastního hesla (v principu tedy admin "může cokoli kdykoli" – admin své heslo samozřejmě zná –, avšak tento systém velmi dobře chrání před risikem, že by mohl superuživatelské operace provést někdo, kdo se náhodou na chvíli dostane k nehlídanému počítači, k němuž je zrovna admin přihlášen). Mechanismus sudo je však velmi flexibilní a umožňuje i jiné konfigurace; popisovat podrobnosti by přesáhlo záběr tohoto seriálu, můžeme je však nalézt v manuálu ("man sudo").
Za zmínku stojí to, že standardní nastavení může přinést jisté "psychologické" snížení bezpečnosti, pokud je nemají administrátoři na paměti. Jde o to, že každý samozřejmě superuživateli přidělí kvalitní a těžko uhádnutelné heslo; uživatelé však občas mívají tendenci "pouhým administrátorům" přidělovat hesla jednodušší (i já mám na jednom z počítačů administrátorské konto s heslem "admin", to však je testovací stroj, na němž nikdy nejsou uložena žádná citlivá ani důležitá data). Je tedy třeba si dát pozor na to, že při standardním nastavení sudo stačí uhádnout libovolné heslo libovolného administrátora, a získáme tím neomezený přístup k systému – pokud to může v konkrétní konfiguraci být problém, může se vyplatit sudo překonfigurovat např. tak, aby bylo pro získání superuživatelských práv nutné zadat samostatné heslo superuživatele.
Poslední okrajově související poznámka: je mimochodem ještě vhodné si uvědomit, že (nejen, ale také) vzhledem k existenci superuživatele (a možnosti administrátorů získat pro své operace jeho oprávnění) obecně platí, že jakákoli důvěrná data, uložená v počítači, by měla vždy být zašifrovaná. Pak sice hypotetický zlovolný administrátor může v extrémním případě takováto data smazat, avšak nemá žádnou možnost zjistit jejich obsah. Pro mnoho citlivých údajů to platí implicitně, aniž bychom se o to museli jakkoli starat – kupříkladu uživatelská hesla nebo cokoli, co je uloženo v KeyChainu, je standardně zašifrováno, a nikdo (kdo nezná naše heslo) to nemůže přečíst. Tím, jak šifrovat další data a soubory, se samozřejmě budeme podrobně zabývat v budoucích pokračováních tohoto seriálu.
Příště...
... se tedy právě proto vrátíme do GUI a k běžným operacím, a ukážeme si, jak šifrovat důležitá a citlivá data.
Obsah seriálu (více o seriálu):
- Je to bezpečné?
- Základy zabezpečení Mac OS X
- Identifikace a autorizace
- Jak je to s administrátory
- Šifrování
- Co jsou to ty šifry?
- Černý vzadu, podpisy, a vůbec...
- Certifikáty
- Kde vzít certifikát?
- Certifikát Thawte
- Keychain
- Keychain Access
- Kolik keychainů máš, tolikrát jsi paranoikem
- Lepší konfigurace keychainů
- Jeden na neděli, jeden na všední den...
- WEP or weep
- AirPort a nastavení bezdrátové sítě
- WEP and weep...
- Externí router
- Slušný člověk nešifruje!
- Je ve vězení bezpečno