- předchozí článek - následující článek - obsah - úvodní stránka -

Linuxové noviny 11/2000

Správa uživatelských kont

Milan Čermák, 25. března 2000

Správa uživatelských kont je na unixových systémech (Linux nevyjímaje) velmi důležitá činnost, zvláště pokud chceme svůj počítač použít jako server (ať už internetový nebo v nějaké lokální síti). Jde zde hlavně o vyřešení problému zabezpečení dat jednotlivých uživatelů.

Ale i na běžném počítači, který ani není k síti připojen, je vhodné mít založeno kromě administrátorského i běžné konto. Práva superuživatele jsou totiž velmi široká (jako root si můžete dovolit vlastně všechno), a proto je vhodné pro běžnou práci (kreslení obrázků, psaní dokumentů) používat běžný uživatelský účet. Některé instalační programy sice nabízejí založení běžného konta automaticky, ale i tak je dobré vědět, jak s konty manipulovat.

Uživatelé

Může se stát, že po nainstalování systému máme k dispozici pouze superuživatelský účet, a proto je (z výše uvedených důvodů) vhodné založit běžné konto. K tomu slouží program useradd, kterému jako parametry zadáme uživatelské jméno a další věci. Pokud tedy chceme založit uživateli pepa konto, zadáme:
$ useradd -m pepa
Tím se založí uživatelské konto a další potřebné náležitosti. Parametr -m znamená, že se má založit domovský adresář (pokud ještě neexistuje) a do něj nakopírovat základní konfigurační soubory. Ty bývají uloženy v adresáři /etc/skel.

Mnoho věcí je možno dalšími parametry ovlivnit. Uživateli je možné nastavit jméno domovského adresáře přepínačem -d.

$ useradd -d /home/josef -m pepa
Standardně se domovský adresář jmenuje /home/uživatel.

Dále je možné specifikovat, do kterých skupin má uživatel patřit. Má-li tedy náš uživatel pepa patřit do skupin pepa, users a gamblers, zadáme:

$ useradd -g pepa -G users,gamblers -m pepa
Uvedené skupiny už musí existovat. Parametr -g udává, že se má skupina pepa použít jako výchozí. Taková skupina může být pouze jedna a bývá to buď skupina users nebo skupina se jménem uživatele. K manipulaci se skupinami se dostaneme později.

Z dalších údajů, které můžeme při zakládání konta nastavit, jmenujme nastavení příkazového interpretu - shellu (parametrem -s) a nastavení komentáře (parametrem -c). Komentář bývá využíván některými programy (např. finger nebo mail) pro zjišťování bližších údajů o uživateli.

Pokud programu useradd nezadáme některé položky, použije se implicitní nastavení. Jaké to nastavení je, můžeme zjistit zadáním:

$ useradd -D
A pokud nám nějaká položka nevyhovuje, můžeme ji změnit použitím stejného parametru jako pro zakládání konta, jen místo jména uživatele použijeme parametr -D.

Druhým možným programem pro založení uživatelského konta je adduser. I tomu je možné předávat parametry z příkazové řádky, ale většinou to není nutné. Automaticky vytvářené údaje (domovský adresář, skupina apod.) bývají přijatelné. Navíc lze způsob generování upravit v bohatě komentovaném souboru /etc/adduser.conf.

Pro založení konta uživateli pepa tedy zadáme:

$ adduser pepa
Program automaticky založí domovský adresář a skupinu uživatele a vyžádá si zadání některých údajů (informace o osobě a heslo).

Program adduser ale není obsažen ve všech distribucích (chybí například v distribuci Red Hat). Pak bývá nahrazen symbolickým odkazem na program useradd.

Třetí možností (a ta je naopak pouze v Red Hat Linuxu) je použití grafické nadstavby, která se spouští z prostředí systému X Window. Je součástí tzv. Ovládacího panelu (Control Panel).

Samozřejmě je vhodné zabezpečit konto každého uživatele heslem. Program adduser si zadání hesla vyžádá automaticky. Pokud ale zakládáme uživatele příkazem useradd, musíme mu heslo přiřadit ručně. Slouží k tomu program passwd. Zadáním:

$ passwd pepa

můžeme změnit heslo uživateli pepa. To můžeme samozřejme provést jen jako superuživatel, protože pouze ten má přístup k souboru /etc/passwd. Běžný uživatel také může měnit heslo, ale pouze svoje. Dosáhne toho spuštěním programu passwd bez parametrů.

Měl bych ještě dodat, že pro zvýšení bezpečnosti systému se hesla kódují 56-bitovým kódem DES (který zatím není dekódovatelný v přijatelném čase) a ukládají se buď do souboru /etc/passwd nebo pro ještě větší bezpečnost do speciálního souboru /etc/shadow.

Teď se dostáváme k obrácenému problému. Máme zlobivého uživatele a chceme ho vyloučit z našeho počítače. Použijeme k tomu příkaz userdel:

$ userdel pepa
Pokud před uživatelské jméno přidáme parametr -r, smažeme mu všechny soubory i s jeho domovským adresářem.

Pokud chceme našemu zlobivému uživateli jen zablokovat konto a ne ho rovnou rušit, půjdeme na to jinak. Všechny informace o uživatelských kontech jsou uloženy v souboru /etc/passwd. Jednotlivé položky jsou odděleny dvojtečkami. Napíšeme-li do druhé položky (kde je uloženo heslo) jako první znak hvězdičku "*", nebude se moci daný uživatel přihlásit do systému.

Třetím (a posledním) problémem je změna údajů o uživateli. Dejme tomu, že si nějaký uživatel vzpomene, že by chtěl jiné jméno. Asi není vhodné uvedené konto zrušit a založit nové (i když možné to je). Vhodnější a efektivnější cestou je použití programu usermod. Uvedený problém bychom pro uživatele pepa, který se chce jmenovat josef, vyřešili například následovně:

$ usermod -l josef -g josef -d /home/josef -m pepa
Parametrem -l nastavíme nové uživatelské jméno, parametrem -g počáteční skupinu (která ale už musí existovat!) a parametrem -d nový domovský adresář. Přepínač -m navíc zajistí, aby se nový adresář založil a přesunuly se do něj všechny soubory z původního adresáře.

Můžeme samozřejmě změnit i obsah komentáře pomocí přepínače -c. Tato položka ale má vnitřní strukturu, kterou využívají další programy, a proto je k její modifikaci vhodnější použít utilitku chfn. Pomocí ní může informace o osobě změnit jak root, tak i uživatel po zadání hesla.

Skupiny uživatelů

Každý soubor má nastavena určitá práva pro vlastníka, skupinu a ostatní uživatele. Většinou si (jako správce nějakého počítače) vystačíme s právy vlastníka a ostatních. Do organizačních problémů se dostaneme, když bude chtít nějaká skupina uživatelů sdílet nějaké soubory (například kvůli vývoji nějakého programu). Nyní již s právy vlastníka a ostatních nevystačíme - vlastník musí mít přístup, ostatní uživatelé ne, ale co členové skupiny? Řešením je právě skupina uživatelů. Založíme novou skupinu (neboli group), vložíme do ní uživatele, kteří mají mít k daným souborům přístup a nastavíme souborům (a případně adresářům) vhodná práva.

(Příčinou k vytvoření skupiny uživatelů nemusí být jen sdílení souborů v rámci vývoje programu. Pomocí skupiny uživatelů můžeme například omezit přístup k disketové mechanice nebo jiným zařízením.)

To byl mírně filozofický pohled, teď se podíváme na samotné provedení. K založení skupiny můžeme použít program groupadd, který má jediný parametr, kterým je jméno skupiny. Skupinu gamblers založíme příkazem:

$ groupadd gamblers
Měl bych ještě dodat, že se záznamy o skupinách ukládají do souboru /etc/group, který je obdobou souboru /etc/passwd.

Skupinu jsme založili, teď do ní vložíme nějaké uživatele. K tomu můžeme použít program usermod, jak bylo ukázáno výše. Problém je, že pro každého uživatele, musíme zapsat všechny skupiny, do kterých patří. Druhou možností je opět program adduser, kterému můžeme zadat jako parametry jméno uživatele a jméno skupiny. Program přiřadí uživatele do skupiny, aniž by nějak ovlivnil předchozí přiřazení. Program adduser tedy zavoláme takto:

$ adduser pepa gamblers

A zbývá nám ještě poslední věc, jak skupinu zrušit. K tomu existuje program groupdel. Parametrem je opět název skupiny. Program odstraní ze souborů /etc/passwd a /etc/group všechny záznamy o rušené skupině. V případě záznamů o uživatelích odstraní, samozřejmě, pouze přiřazení, nikoli celý záznam.

Závěr

Cílem tohoto článku bylo ukázat začínajícím uživatelům způsob manipulace s konty. Na účet toho jsem se záměrně dopustil některých zjednodušení. Bližší podrobnosti je možné najít v manuálových stránkách. *


- předchozí článek - následující článek - obsah - úvodní stránka -