Linux documentation Project (CS) / Průvodce správce operačního systému Linux
Previous Content Next Up

 

9. Správa uživatelských účtů

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.

9.1 Co je to účet?

    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ě.

9.2 Vytváření uživatelských účtů

    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.

9.2.1 Soubor /etc/passwd a další informační soubory

    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í:

  1. Uživatelské jméno.
  2. Heslo v zakódované podobě.
  3. Identifikační číslo uživatele.
  4. Identifikační číslo pracovní skupiny (angl. group ID, zkráceně GID).
  5. Skutečné jméno uživatele, případně popis účtu.
  6. Domovský adresář.
  7. Příkazový interpret (nebo program), který se spustí po přihlášení.

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í.

9.2.2 Výběr čísel uživatelského ID a ID skupiny

    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.

9.2.3 Nastavení uživatelského prostředí: adresář /etc/skel

    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.

9.2.4 Manuální vytváření uživatelských účtů

Nový uživatelský účet lze vytvořit ručně tímto postupem:

  1. Upraví se soubor /etc/passwd, například příkazem vipw(8), tak, že se do souboru hesel přidá další řádek nového uživatelského účtu. Je nutné dodržovat správnou syntaxi. Není vhodné upravovat tento soubor přímo běžným editorem! Program vipw soubor /etc/passwd uzamkne, takže se ostatní programy nebudou pokoušet jej změnit. Do pole pro heslo se vloží znak "*", takže zatím nebude možné se prostřednictvím tohoto účtu do systému přihlásit.
  2. Jestli je potřeba vytvořit i novou pracovní skupinu, upraví se podobným způsobem i soubor /etc/group, a sice programem vigr.
  3. Příkazem mkdir se pro nového uživatele vytvoří domovský adresář.
  4. Do nově vytvořeného domovského adresáře se nakopírují konfigurační soubory z adresáře /etc/skel.
  5. Příkazy chown a chmod se upraví jejich vlastnická a přístupová práva. Užitečný je v tomto případě jejich parametr -R. Správná přístupová práva se mohou trochu lišit, a to podle typického využití toho kterého systému, nicméně příkazy v níže uvedeném příkladu obvykle vyhovují většině případů:

cd /home/newusername

chown -R username group

chmod -R go=u,go w

chmod go=

  1. Zadejte heslo programem passwd(1).

    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.

9.3 Změny vlastností uživatelských účtů

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.

9.4 Zrušení uživatelského účtu

    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.

9.5 Dočasné zablokování uživatelského účtu

    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ů.

Previous Content Next Up