Jaký je rozdíl mezi správcem systému a překupníkem drog?
žádný, oba měří své prostředky v kilech a oba mají své klienty.
(Starý a otřelý počítačový vtip.)
Tato kapitola popisuje způsob vytváření nových uživatelských účtů, změny vlastností těchto účtů a způsoby jejich odstraňování. Různé distribuce systému Linux používají pro tyto úkoly různé nástroje.
Používá-li počítač více lidí, je obvykle nutné mezi jednotlivými uživateli rozlišovat. Například proto, aby jejich osobní soubory a data byly osobními v pravém smyslu slova. Identifikace uživatelů je ale důležitá i v případě, že systém využívá pouze jedna osoba, což se týká převážné většiny mikropočítačů.
Proto má každý uživatel systému přiděleno jednoznačné uživatelské jméno, které zadává při každém přihlášení.
Avšak pojem "účet" je poněkud širší a zahrnuje - kromě uživatelského jména - i některé další informace o uživateli. Pojmem uživatelský účet se označují všechny soubory, zdroje a informace, jež se vztahují k danému uživateli. Běžně se termín "účet" spojuje s bankovním sektorem. V komerčním výpočetním systému se kolem každého účtu skutečně točí nějaké peníze. Ty mohou z "účtu" mizet různou rychlostí, podle toho, jak moc uživatel systém zatěžuje.
Tak například diskový prostor lze ohodnotit cenou za megabajt uložených dat a den, čas procesoru může mít určitou cenu za sekundu využití a podobně.
Samotné jádro systému Linux považuje uživatele systému za pouhé číslo. Každého uživatele lze totiž identifikovat podle jednoznačného celého čísla, tzv. identifikačního čísla uživatele (angl. user ID, zkráceně UID). Je tomu tak proto, že počítač umí zpracovat čísla rychleji a jednodušeji než jména v textové formě. Jména v textové podobě a přidělená uživatelská jména se udržují ve zvláštní databázi mimo vlastní jádro. Tato databáze obsahuje též další informace o uživatelích systému.
Když potřebujete vytvořit nový uživatelský účet, musíte přidat informace o novém uživateli do uživatelské databáze a vytvořit pro něj vlastní domovský adresář. Kromě toho by měl každý nový uživatel absolvovat školení. Je též vhodné nastavit pro nové uživatele přiměřené počáteční nastavení prostředí.
Většina distribucí systému Linux se dodává s programy pro vytváření uživatelských účtů.
Správce má dokonce k dispozici hned několik takovýchto programů. Dvě varianty, jejichž uživatelským rozhraním je příkazová řádka, jsou programy adduser a useradd. Existují i utility s grafickým uživatelským rozhraním. Ať už se jako správce systému rozhodnete pro kterýkoliv z programů, oceníte jejich hlavní přínos, tedy to, že omezují manuální práci s nastavováním na minimum, či dokonce úplně. I když na vás při administraci uživatelských účtů čeká mnoho dost spletitých detailů, díky těmto nástrojům vypadá jednoduše.. Postup při "ručním" zakládání nových uživatelských účtů uvádí odstavec 9.2.4.
Základní databází uživatelů v systému Unix je textový soubor /etc/passwd (angl. password file), v němž jsou uvedeny platná uživatelská jména a další k nim přidružené informace. Každému uživateli odpovídá v souboru jeden záznam - řádek, který je rozdělen na sedm polí, jejichž oddělovačem je dvojtečka. Význam jednotlivých položek je následující:
Formát jednotlivých políček je podrobněji popsán v manuálové stránce passwd(5).
Každý uživatel systému má k souboru /etc/passwd přístup (může jej číst). Může tedy například zjistit přihlašovací jména ostatních uživatelů. To ale znamená, že jsou všem přístupná i hesla ostatních uživatelů (druhé pole každého záznamu). Hesla uložená v souboru /etc/passwd jsou zakódovaná, takže teoreticky nevzniká žádný problém. Avšak použitý kódovací algoritmus lze prolomit, zvlášť je-li zvolené heslo jednoduché (např. krátké slovo, jenž lze najít v nějakém slovníku, jméno nebo příjmení uživatele atd.). Proto z hlediska bezpečnosti není dobré mít hesla uložená přímo v souboru /etc/passwd.
Řada systémů Linux používá systém tzv. stínových hesel (angl. shadow passwords). Jde o alternativní způsob uložení uživatelských přístupových hesel, jež se zašifrovaná ukládají do jiného souboru (/etc/shadow), jenž může číst pouze superuživatel. Soubor /etc/passwd pak obsahuje v druhém poli pouze speciální znak. Program, který si potřebuje ověřit totožnost uživatele a má propůjčená přístupová práva vlastníka souboru (pomocí volání jádra setuid), může soubor /etc/shadow číst. Běžné programy, které používají pouze některé z dalších položek souboru /etc/passwd, přístup k heslům uživatelů systému nemají.
Ve většině systémů nezáleží na tom, jaké jsou hodnoty UID a GID. Když ale používáte síťový Souborový systém NFS, musíte mít stejná UID a GID na všech systémech v síti. To proto, že i systém NFS identifikuje uživatele podle hodnoty UID. Jestliže systém NFS nepoužíváte, můžete vybírat identifikační čísla uživatele a skupiny podle automatického návrhu některého z nástrojů pro správu uživatelských účtů.
Když v síti využíváte NFS, budete si muset zvolit některý z mechanismů synchronizace informací o uživatelských účtech. Jednou z možností je systém NIS - Network Information Service (viz [Kir]).
META: možná na nesprávném místě? Měli byste se také vyvarovat opakovanému přidělování stejných uživatelských čísel (i textových uživatelských jmen), protože nový vlastník UID (případně uživatelského jména) by tak měl přístup k souborům bývalého vlastníka, k jeho elektronické poště a dalším informacím.
Když jste již pro nového uživatele vytvořili vlastní domovský adresář, můžete nastavit vlastnosti uživatelského prostředí tak, že do domovského adresáře nového uživatele nakopírujete některé soubory z adresáře /etc/skel. Správce systému si totiž může v adresáři /etc/skel vytvořit konfigurační soubory, jež novým uživatelům vytvoří příjemné základní uživatelské prostředí. Administrátor může například vytvořit soubor /etc/skel/.profile, v němž lze nastavením proměnné prostředí EDITOR vybrat některý z textových editorů, jenž by měl pro méně zkušené uživatele přátelské ovládání.
Avšak obvykle se doporučuje mít v adresáři /etc/skel co nejméně souborů, protože by jinak bylo téměř nemožné upravit na větších víceuživatelských systémech při každé změně konfigurační soubory v již existujících uživatelských adresářích. Když se například změní název onoho uživatelsky příjemného editoru, všichni současní uživatelé si musí upravit svůj vlastní soubor .profile. Správce systému by se to mohl pokusit udělat automaticky, například pomocí skriptu, ale takovéto akce téměř pravidelně končí tak, že se nechtěně přepíše či poškodí nějaký jiný soubor.
Vždy když to situace dovolí, je lepší nastavovat globální konfigurace v globálních souborech, jako je /etc/profile. Pak lze nastavení pohodlně upravovat bez toho, že by se muselo měnit vlastní nastavení jednotlivých uživatelů systému.
Nový uživatelský účet lze vytvořit ručně tímto postupem:
cd /home/newusername
chown -R username group
chmod -R go=u,go w
chmod go=
Poté, co bylo v posledním kroku nastaveno heslo, bude nový účet přístupný. Heslo by se skutečně mělo nastavovat až v posledním kroku, jinak by se mohl uživatel nepozorovaně přihlásit do systému například v době, kdy kopírujete konfigurační soubory.
Někdy je potřeba vytvořit "falešný" účet, který se nebude používat pro přihlašování běžných uživatelů. Například při konfigurování anonymního serveru FTP je výhodné vytvořit účet s uživatelským jménem ftp. Pak si ze serveru může stahovat soubory kdokoliv a pro budoucí (anonymní) klienty se nemusí zřizovat vlastní uživatelské účty. V takovýchto případech obvykle není třeba nastavovat heslo (vynechá se poslední krok výše uvedeného postupu). Je vskutku lepší zřizovat takovéto anonymní účty bez hesla. Jinak by k nim měl přístup pouze uživatel, který by předtím musel získal oprávnění superuživatele, protože pouze uživatel root má přístup k ostatním uživatelským účtům.
Je několik příkazů, kterými lze měnit různé vlastnosti uživatelských účtu (tedy přísluišých položek v souboru /etc/passwd):
Superuživatel může pomocí těchto programů změnit vlastnosti kteréhokoliv účtu. Ostatní neprivilegovaní uživatelé mohou měnit pouze vlastnosti svého vlastního účtu. V některých případech je vhodnější běžným uživatelům zakázat možnost používat uvedené příkazy (programem chmod), například v případě, že systém používá větší počet méně zkušených začátečníků.
Ostatní změny položek souboru /etc/passwd se musí dělat ručně. Když například potřebujete změnit uživatelské jméno, musíte přímo upravit databázi uživatelů /etc/passwd (opakovaně připomínáme, že pouze příkazem vipw). Analogicky, když potřebujete přidat či odebrat uživatele z nebo do některé z pracovních skupin, musíte upravit soubor /etc/group (příkazem vigr). Avšak takovéto úkoly se dělají zřídka a musí se dělat opatrně, protože když například změníte některému z uživatelů jeho uživatelské jméno, nebude mu docházet elektronická po"ta a musíte pro něj vytvořit "přezdívku", tedy alias.
Potřebujete-li zrušit uživatelský účet, smažte nejdříve všechny soubory, které patří uživateli rušeného účtu, včetně poštovní schránky, aliasů pro elektronickou poštu, tiskových úloh, úkolů spouetěných démony cron a at a všechny další odkazy na tohoto uživatele. Pak odstraňte odpovídající řádek v souborech /etc/passwd a /etc/group (nezapomeňte odstranit uživatelské jméno i ze všech skupin, do nichž byl uživatel zařazen). Předtím, než začnete mazat vše ostatní, je lepší zakázat přístup k rušenému účtu (viz níže). Uživatel tak nebude mít možnost se připojit do systému v době, kdy je jeho účet odstraňován.
Nezapomeňte, že uživatelé systému mohou mít některé soubory uloženy i mimo svůj domovský adresář. Najdete je pomocí příkazu find:
find / -user username
Pamatujte na to, že když má váš systém velké disky, poběží výše uvedený příkaz dost dlouho. V případě, že máte v souborovém systému připojeny síťové disky (viz odstavec 2.3.8), musíte dávat pozor, abyste tím nezpůsobili problémy s odezvou v síti nebo na serveru.
Součástí některých distribucí systému Linux jsou i zvláštní příkazy, které lze použít při rušení uživatelských účtů. Zkuste na vašem systému vyhledat programy deluser či userdel. Každopádně není zase tak složité to udělat ručně, navíc tyto programy nemusí najít a odstranit všechny souvislosti.
Občas je potřeba dočasně zablokovat přístup k některému z účtů bez toho, že by bylo nutné jej smazat. Například když uživatel nezaplatil poplatky za využívání systému, nebo když má správce systému podezření, že neznámy "hacker" prolomil přístupové heslo uživatele některého účtu.
Nejvhodnějším způsobem jak zamezit přístup k podezřelému účtu, je zaměnit nastavený příkazový interpret zvláštním programem, který na terminál vypíše určitou hlášku. Když se pak kdokoliv pokusí přihlásit do systému přes zablokovaný účet, neuspěje a dozví se proč. Zprávou lze sdělit uživateli, že se má spojit se správcem systému a domluvit se s ním na řešení vzniklého problému.
Alternativou je změna uživatelského jména, případně hesla. Uživatel se tak ale nedozví, co se vlastně děje. A zmatení uživatelé znamenají i více práce pro správce systému.
Nejjednodušší způsob jak vytvořit program, který by blokoval přístup k účtu, je napsat skript pro program tail:
#!/usr/bin/tail +2
Tento účet byl z důvodů porušení bezpečnostních opatření zablokován.
Volejte prosím číslo 555-1234 a vyčkejte příjezdu mužů v černém.
Podle prvních dvou znaků ("#!") pozná jádro systému, že zbytek řádku je příkaz, který je třeba spustit, aby se skript provedl. V tomto případě je to příkaz tail, jenž vypíše vše, kromě prvního řádku, na standardní výstup.
Je-li uživatel billg podezřelý, že porušuje bezpečnostní opatření, může správce systému udělat něco jako:
# chsh .s /usr/local/lib/no-login/security billg
# su . tester
Tento účet byl z důvodů porušení bezpečnostních opatření zablokován.
Volejte prosím číslo 555.1234 a vyčkejte příjezdu mužů v černém.
#
Pomocí příkazu su ve výše uvedeném příkladu se pochopitelně pouze testuje, zda je změna původně nastaveného interpretu funkční.
Takovéto skripty pro tail by měly být uloženy ve zvláštním adresáři, aby jejich jména nekolidovala s příkazy jednotlivých uživatelů.