16. listopadu 2007, 10.00 | Jednou z novinek Leoparda, jež nepotěší, je to, že neustále omezovaná podpora geniálně navržené síťové databáze NetInfo dospěla do bodu nula: 10.5 NetInfo nepoužívá, a také samozřejmě nenabízí prostředky pro práci s ním. Pojďme si ukázat, co je k dispozici místo toho.
Jednou z novinek Leoparda, jež nepotěší, je to, že neustále omezovaná podpora geniálně navržené síťové databáze NetInfo dospěla do bodu nula: 10.5 NetInfo nepoužívá, a také samozřejmě nenabízí prostředky pro práci s ním.
Naštěstí jsme nezůstali zcela bez náhrady, ačkoli některá řešení jsou podstatně méně pohodlná a musíme sestoupit od příjemné aplikace s GUI na úroveň Terminálu. Pojďme se dnes podívat na dvě věci: zpřístupnění účtu superuživatele a přístup k atributům uživatelských kont.
Zpřístupnění účtu superuživatele
Mnozí pro usnadnění správy počítače zpřístupňují konto superuživatele ("root"), tak, aby bylo možné se do něj standardním způsobem přihlásit. Osobně to nepovažuji za rozumné a domnívám se, že daleko lepší je využívat odpovídající autentizační služby jednotlivých aplikací (a sudo v Terminálu), avšak proti Gustovi není dišputace :)
Každopádně v Leopardu je jistý problém: konto superuživatele se totiž vždy aktivovalo (nebo naopak deaktivovalo) příkazem aplikace NetInfo Manager, které žel není více.
Tento problém má naštěstí řešení velmi snadné – stačí spustit aplikaci Directory Utility (jež nahradila "tygří" Directory Access), a v její nabídce "Edit" najdeme staré známé příkazy "Enable Root User" a "Change Root Password". Prvý z nich je k dispozici poté, co se v rámci aplikace (pomocí standardního "zámku" v levém dolním rohu okna) přihlásíme jako administrátor; druhý v době, kdy je konto superuživatele aktivní.
Zobrazení a změna uživatelského nastavení
S obecnými atributy uživatelských kont je to horší; ačkoli na WWDC 2006 zástupci Apple slibovali, že je bude možné nastavovat ze systémového preferenčního panelu "Accounts", v praxi tomu tak žel není, panel nezpřístupní z těchto atributů takřka nic.
Zde bohužel nezbývá, než sestoupit na úroveň shellu – zatímco aplikace s grafickým uživatelským rozhraním, jež by zpřístupnila (kromě jiného také) atributy uživatelských kont, v Leopardu neexistuje (alespoň nakolik je mi známo – pokud se mýlím, jistě mne někdo v diskusi opraví), nový terminálový příkaz ano; jeho jméno je dscl (a mimochodem byl již k dispozici v Tygru - jen tam díky tomu, že v něm dosud NetInfo fungovalo, nebylo zapotřebí využívat jeho služeb).
Příkaz nabízí poměrně bohatou paletu služeb, jejichž seznam si můžeme zobrazit pomocí "man dscl", případně spuštěním příkazu dscl bez argumentů – to jej spustí v interaktivním režimu – a zadáním podpříkazu help v jeho vlastní příkazové řádce. My si zde nebudeme popisovat kompletní možnosti dscl; ukážeme si jen přístup k atributům uživatele a jejich změnu.
Načtení atributů daného uživatelského konta je poměrně jednoduché – stačí v terminálu zadat příkaz
dscl . -read /Users/<jméno konta>
Příkaz vypíše všechny jemu známé atributy v relativně čitelné podobě seznamu typu "<jméno>: <hodnota>", asi takto:
22 ~> dscl . -read /Users/ocs
...
NFSHomeDirectory: /Users/ocs
PrimaryGroupID: 20
RealName:
Ondřej Čada
UniqueID: 501
UserShell: /bin/zsh
23 ~>
Chceme-li některou hodnotu změnit – můžeme kupříkladu chtít změnit výchozí shell ze standardního bashe na zsh, pokud stojíme o výhody zsh a používáme příkaz su – použijeme přepínač "change". Samozřejmě je zapotřebí mít k tomu rootovskou autentifikaci (můžeme např. volat dscl prostřednictvím příkazu sudo); kromě toho je zapotřebí zadat nejen nově požadovanou, ale také původní hodnotu (to proto, že dscl obecně umožňuje pracovat s více různými hodnotami téhož typu).
Kupříkladu to, abych měl v Leopardu – jak již ukazuje minulý výpis – nastaven zsh jako výchozí shell, jsem zajistil pomocí tohoto příkazu (je vidět, že proběhl ještě v původním bash :))
bash-3.2# dscl . -change /Users/admin UserShell /bin/bash /bin/zsh