Linux v příkazech - správa uživatelských účtů

Jednou z prvních věcí, které člověk obvykle po instalaci systému bude potřebovat jsou příkazy pro zakládání, mazání a editaci uživatelů a skupin.

7.7.2004 13:00 | o.k. | přečteno 154455×

Jedním z prvních příkazů, který obvykle po nainstalování systému a nejen po něm budeme potřebovat je příkaz pro přidání uživatele do systému. Tak jako většina názvů linuxových příkazů, tak i název tohoto příkazu lze poměrně snadno odhadnout, protože výstižně označuje prováděnou akci. Příkaz pro přidání uživatele do systému se nazývá useradd. Následující praktické příklady objasní použití příkazu useradd. Ještě bych měl dodat, že ve většině Linuxových distribucí naleznete i příkaz adduser, který je pro mnohé uživatele jednodušší, protože provádí přidání uživatele v interaktivním režimu a uživatel si tak nemusí pamatovat jednotlivé volby příkazu. Já se zde však příkazem adduser zabývat nebudu, protože není standardní součástí všech distribucí a i když ho pravděpodobně ve všech distribucích naleznete, tak v mnohých to bude pouhý alias nebo symbolický link na příkaz useradd, jenž si níže popíšeme.

Příklady příkazu useradd:

useradd -m -s /bin/bash -c "Bezny Franta Uzivatel" -p "" bfu

Na vysvětlenou: vytvořili jsme uživatele bfu s domovským adresářem /home/bfu (který pokud neexistoval byl vytvořen a do něhož byl nakopírován obsah adresáře /etc/skel). Shell po přihlášení má uživatel nastaven na /bin/bash, heslo je prázdné. Expirace účtu nebyla nastavena.

Protože jsme volbou -g [název skupiny] nespecifikovali skupinu přidruženou k uživateli, tak byla nastavena defaultní skupina users. Při použití této volby nezapomeňte na to, že daná skupina již musí v systému existovat. Některé distribuce používají skupinu, jejíž jméno je shodné se jménem uživatele, ostatní distribuce používají již zmiňovanou skupinu users.

useradd -m -s /bin/bash -c "Bezny Franta Uzivatel" \
        -p "\$1\$MzA0W/ZA\$YcwNmliCCjGc8DSNO2BMr/" bfu

Založení uživatele s heslem v podobě MD5 hashe. Je potřeba "vyescapovat" znaky "$".

Příklad (funkční) s minimálním možným počtem parametrů

useradd -m -p "" bfu

Pro smazání uživatele slouží příkaz userdel, který má jedinou volbu a tou je volba -r při jejímž použití dojde i ke smazání domovského adresáře uživatele včetně fronty s maily.

userdel bfu
userdel -r bfu

pro smazání domovského adresáře uživatele. Pozor, tento příkaz smaže pouze domovský adresář a frontu s maily daného uživatele nikoliv však soubory jejichž je vlastníkem, různě roztroušené v systému v adresářích do nichž měl uživatel přístup zápisu.

Příkaz pro modifikaci uživatele se nazývá usermod, díky jehož pomoci můžeme editovat všechny volby, které byly dostupné v příkazu useradd, proto se jimi nebudu podrobněji zabývat a zmíním zde pouze volbu -G, která umožňuje přidávat uživatele do existujících skupin a samozřejmě jej i z daných skupin zase vyjímat.

Následující příklad vše objasní:

usermod -G audio,video,cdrom,floppy bfu

Tímto příkazem přidáme uživatele do skupiny audio, video, cdrom a floppy. V dalším příkladu jej vyjmeme ze všech skupin kromě skupiny users. Při vyjímání uživatele ze skupin musíme vyjmenovat všechny skupiny ve kterých má uživatel zůstat. Z nevyjmenovaných skupin bude uživatel vyjmut.

usermod -G users bfu 

Další příkaz - passwd - slouží především pro změnu hesla daného uživatele, zároveň je jím však možné měnit i některá další nastavení jako například informativní jméno uživatele, shell po přihlášení, expirace účtu a interval mezi ohlášením expirace účtu a úplným zablokováním účtu, kdy se uživatel již na svůj účet nepřihlásí.

Uživatel root může měnit hesla a nastavení všech účtů v systému. Obyčejný uživatel může tímto příkazem změnit pouze heslo a to pouze u svého účtu.

Příklady použití:

passwd bfu

změna hesla (uživatelem root) uživatele bfu

passwd -S bfu 

výstup tohoto příkazu bude vypadat například následovně:

bfu NP 05/30/2004 0 99999 7 -1

a znamená následující, uživatel bfu má prázné heslo, poslední změna jeho hesla byla provedena 30.5.2004, minimální doba pro změnu hesla (doba, po kterou není možné heslo změnit) není stanovena, maximální doba je na neurčito, období upozorňování na změnu hesla je stanoveno na 7 dnů, doba neaktivity po vypršení platnosti hesla vedoucí k automatickému zablokování účtu není nastavena.

Budeme-li chtít okamžitě zablokovat účet danému uživateli, provedeme to následovně:

passwd -l bfu

Odblokování provedeme příkazem

passwd -u bfu

Další příklad nastaví politiku, kdy další změna hesla uživatele po jeho provedení změny hesla nebude možná dříve jak za 14 dnů, toto změněné heslo se bude muset opět obměnit nejpozději za 90 dnů. Po 80 dnech od uplynutí změny hesla bude uživatel po přihlášení upozorňován, že mu za daný počet dnů vyprší platnost hesla a po 90 dnech bude po přihlášení ihned vybídnut ke změně hesla. Pokud se uživatel nepřihlásí v období mezi 90. dnem od změny hesla a 97. dnem, bude jeho účet nekompromisně zablokován. Odblokovat jej může jedině uživatel root jak jsme si ukázali výše.

passwd -n 14 -x 90 -w 10 -i 7 bfu

Pozn. po této změně bude status vypadat následovně

bfu NP 05/30/2004 14 90 10 7

Takto vypadá výpis u blokovaného účtu:

bfu L 05/30/2004 14 90 10 7

Na závěr k této sekci bych dodal ještě poznámku: příkazem passwd jde měnit i heslo pro skupinu, ale tato volba se jen zřídka používá.

Stejné funkce pro změnu expirace hesla má příkaz chage a tak, aby se člověk mohl pořád něčemu novému učit, má tento příkaz jiné parametry než příkaz passwd.

Stejnou změnu jako výše provedeme následovně:

chage -m 14 -M 90 -W 10 -I 7 bfu

Zmíním zde však dva parametry, které má navíc oproti příkazu passwd. Prvním z nich je parametr -l, kterým si i jako běžný uživatel zjistíme platnost hesla a dalších informací. Více ukáže příklad:

chage -l bfu

jehož výstup je velice informativní a přehledný:

Minimum:          14
Maximum:          90
Warning:          10
Inactive:         7
Last Change:            kvě 30, 2004
Password Expires:       srp 28, 2004
Password Inactive:      zář 04, 2004
Account Expires:        Never

Dalším užitečným parametrem, který příkazu passwd chybí je parametr -d, jímž můžeme nastavit datum změny hesla jak ukáže náš příklad ve kterém posuneme datum změny hesla z původního (30.5.2004) na nové (20.6.2004):

chage -d 2004-06-20 bfu

Další příkaz patří spíše do kategorie informativních - slouží k výpisu uživatelského ID, ID skupiny a ještě vypíše všechny skupiny jejichž je uživatel členem. Například při sdílených souborových systémech (NFS) je vhodné (pokud nepoužíváte pro přihlašování server NIS) udržovat na všech pořítačích stejná ID uživatele.

id bfu

Výstup bude vypadat následovně

uid=1004(bfu) gid=100(users) skupiny=100(users),24(cdrom),25(floppy),29(audio)

Příkaz groups je podobný příkazu id - vypisuje totiž skupiny jejichž je daný uživatel členem.

groups bfu

Výstup je následující:

bfu : users cdrom floppy audio

Pro práci se skupinami slouží příkazy groupadd, groupdel, groupmod. Příkazem groupadd vytváříme nové skupiny

groupadd bfu

Vytvoří skupinu bfu a defaultně nastaví ID skupiny. ID skupiny můžeme vnutit i ručně při použití parametru -g [číslo].

Příkaz groupdel maže danou skupinu, jediným parametrem je název skupiny, kterou chceme smazat.

Příkaz groupmod slouží k modifikaci ID skupiny nebo jména skupiny.

groupmod -n franta bfu

Změní název skupiny bfu na nový název franta.

Myslím si, že základní operace s uživateli a skupinami tímto můžeme uzavřít. Vaše případné dotazy, připomínky a nápady očekávám v diskuzi.

Pokud se vám něco nepovedlo a nejste schopni to vrátit do původního stavu, vždycky zbývá ještě jedna možnost. Můžete si soubory, kterých se dané změny týkaly (konkrétně pak /etc/passwd, /etc/shadow a /etc/group) otevřít v textovém editoru a pokusit se o ruční opravu.

Zdroje informací

Online verze článku: http://www.linuxsoft.cz/article.php?id_article=248