Linux: Kniha kouzel, vanilková příchuť 1.17 (27. února 2022)
Veškerá moc příkazové řádky/příkazového řádku přehledně, pro začátečníky i pokročilé

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

Řada 1.x vanilkové příchuti Linuxu: Knihy kouzel je od 1. října 2020 do 1. března 2023 ve stavu dlouhodobé pasivní údržby; nahlášené chyby budou opravovány, ale aktivní vývoj se již věnuje novější vývojové řadě určené pro novější verze operačního systému a programů. Pokud nejste vázáni na starší verze programů, doporučuji vyhledat novou verzi z aktivně vyvíjené vývojové řady.
přístupová práva systém tematický okruh

1. Úvod

Tato kapitola se zabývá vytvářením, zkoumáním a rušením uživatelských účtů a jejich skupin. Dále se zabývá nastavováním účtů a skupin z pozice superuživatele (správce systému).

Linuxové operační systémy jsou víceuživatelské, a než je uživateli umožněna práce se systémem, musí se přihlásit k některému uživatelskému účtu, což určí, jaká oprávnění budou mít programy, které spustí. V Ubuntu a mnoha dalších linuxových distribucích se první uživatelský účet (s UID 1000) vytváří při instalaci, další účty se vytvářejí později. Každý uživatelský účet má svůj domovský adresář, kde se uchovává veškeré nastavení specifické pro daný účet a obvykle rovněž většina uživatelských souborů.

Do této kapitoly nespadá nastavování přihlašování do systému a většina nastavení specifických pro určité grafické prostředí (např. nastavení pozadí plochy). Tato verze kapitoly nevysvětluje význam důležitých systémových skupin (jako např. skupiny „sudo“).

2. Definice

2/1 Uživatelé a hesla

Existují tři stavy zabezpečení uživatelského účtu:

3. Zaklínadla (správa uživatelů)

3/1 Vytvořit/vypsat/smazat uživatele

vytvořit nového (běžného) uživatele#1 (1)(2)(3)
sudo adduser --gecos "Celé jméno" [--disabled-login] [--debug] [--shell shell] [--ingroup název-výchozí-skupiny] [--uid konkrétní-UID] nový-uživatel
smazat uživatele#2
sudo deluser [--remove-home] uživatel
existuje uživatel? (uspěje, pokud ano)#3
getent passwd uživatel >/dev/null
vypsat všechny uživatele kromě systémových/úplně všechny#4
getent passwd | sed -E '/^([^:]*:){2}(0|[0-9]{4,}):/!d;s/:.*//' [| LC_ALL=C.UTF-8 sort]
getent passwd | cut -d : -f 1 [| LC_ALL=C.UTF-8 sort]
vypsat uživatele, kteří jsou právě přihlášeni k systému (pro člověka/pro skript)#5
who
vytvořit nového systémového uživatele#6
sudo adduser --system [--gid GID-skupiny] [--uid konkrétní-UID] nový-uživatel

3/2 Heslo uživatele

nastavit heslo (pro člověka)#1
sudo passwd uživatelské-jméno
Dvakrát zadat nové heslo. Pokaždé potvrdit Enter.
nastavit heslo (pro skript)#2
printf %s\n "uživatelské-jméno:heslo" ["další-uživatelské-jméno:další-heslo"] | sudo chpasswd
zamknout uživatelský účet#3
sudo passwd -l uživatelské-jméno
odemknout uživatelský účet (alternativy)#4 (4)
printf %s\n "uživatelské-jméno:nové-heslo" | sudo chpasswd
sudo passwd -u uživatelské-jméno
nastavit vypršení hesla/okamžitě vypršet (nezkoušeno)#5 (5)
sudo passwd -x dnů-platnosti [-w kolik-dnů-předem-varovat] uživatelské-jméno
sudo passwd -e uživatelské-jméno
vypnout zabezpečení heslem (umožní přihlášení bez hesla)#6 (6)
sudo passwd -d uživatelské-jméno
test na typ zabezpečení uživatele: vyžaduje heslo?/je zamčený?/umožňuje přihlášení bez hesla?#7

3/3 Vypsat nastavení uživatelského účtu (kromě hesla)

vypsat skupiny, ve kterých je účet členem (pro člověka/pro skript)#1
groups uživatel
id -Gn uživatel | tr " " \\n | [LC_ALL=C.UTF-8] sort
UID#2
id -u uživatelské-jméno
celé jméno#3
getent passwd uživatel | cut -d : -f 5 | cut -d , -f 1
domovský adresář#4
getent passwd uživatel | cut -d : -f 6
uživatelské jméno (podle UID)#5
id -un UID
získat avatar#6 (7)
[sudo] cp ~uživatel/.face cíl.png
vypsat uživatelovu výchozí skupinu (názvem/GID)#7
id -Gn uživatel | sed -E 's/\s.*//'
id -G uživatel | sed -E 's/\s.*//'
příkazový interpret#8
getent passwd uživatel | cut -d : -f 7

3/4 Změnit nastavení uživatelského účtu (kromě hesla)

celé jméno (pozor – neplést si s uživatelským jménem!)#1
sudo chfn -f "nové jméno" uživatelské-jméno
domovský adresář (bez přesunu/přesunout)#2
sudo usermod -d /nový/adresář uživatelské-jméno
sudo usermod -m -d /nový/adresář uživatelské-jméno
avatar#3
convert obrázek -gravity center -crop "$(identify -format "%[fx:min(w,h)]x%[fx:min(w,h)]" obrázek)" +repage -delete -1 png24:- | [sudo] tee ~uživatel/.face
příkazový interpret (shell)#4
sudo chsh [-s /cesta/k/novému/shellu] uživatel
změnit UID#5 (8)
sudo usermod -u nové-UID uživatel
změnit výchozí skupinu#6 (9)
sudo usermod -g název-nové-vých-skup -G "$(id -Gn uživatel | tr ' ' ,)" uživatel
změnit uživatelské jméno#7 (10)
sudo usermod -l nové-už-jméno původní-už-jméno

4. Zaklínadla (samospráva uživatele)

4/1 Vypsat nastavení

skupiny, ve kterých je členem (pro člověka/pro skript)#1
groups
id -Gn | tr " " \\n | [LC_ALL=C.UTF-8] sort
domovský adresář (doporučená varianta/spolehlivá varianta)#2
printf %s\\n "$HOME"
getent passwd $(whoami) | cut -d : -f 6
uživatelské jméno/UID#3
whoami
id -u
celé jméno#4
getent passwd $(whoami) | cut -d : -f 5 | cut -d , -f 1
získat avatar#5 (11)
cp ~/.face cíl.png
příkazový interpret#6
getent passwd "$(whoami)" | cut -d : -f 7
výchozí skupina (názvem/GID)#7
id -Gn | sed -E 's/\s.*//'
id -G | sed -E 's/\s.*//'

4/2 Změnit nastavení

heslo (pro člověka)#1
passwd
Na výzvu zadejte původní heslo. Potvrďte klávesou Enter.
Dvakrát zadejte nové heslo. Každé potvrďte klávesou Enter.
změnit avatar#2 (12)
convert obrázek -gravity center -crop "$(identify -format "%[fx:min(w,h)]x%[fx:min(w,h)]" obrázek)" +repage -delete -1 png24:- >~/.face
příkazový interpret (pro člověka)#3
chsh [-s /cesta/k/novému/interpretu]
Na výzvu zadejte svoje heslo a potvrďte klávesou Enter.
×změnit celé jméno (musí povolit správce)#4 (13)
^sudo sed -iE '/^CHFN_RESTRICT/s/\<rwh\>/f&/' /etc/login.defs
chfn -f "Nové celé jméno"
Na výzvu zadejte svoje heslo a potvrďte klávesou Enter.

5. Zaklínadla (správa skupin)

5/1 Vytvořit/vypsat/zrušit

vytvořit skupinu (běžnou/systémovou)#1
sudo addgroup [--gid konkrétní-GID] název-nové-skupiny
sudo addgroup --system [--gid konkrétní-GID] název-nové-skupiny
smazat skupinu#2
sudo delgroup [--only-if-empty] skupina
vypsat všechny skupiny kromě systémových/úplně všechny#3
getent group | sed -E '/^([^:]*:){2}(0|[0-9]{4,}):/!d;s/:.*//' [| LC_ALL=C.UTF-8 sort]
getent group | cut -d : -f 1 [| LC_ALL=C.UTF-8 sort]
vypsat GID skupiny podle názvu/název podle GID#4
getent group název-skupiny | cut -d : -f 3
getent group GID | cut -d : -f 1
existuje skupina?#5
getent group skupina >/dev/null

5/2 Přidat/vypsat/odebrat účty

přidat účet do skupiny (alternativy)#1 (14)
[sudo] gpasswd -a uživatel skupina
sudo adduser uživatel skupina
odebrat účet ze skupiny (alternativy)#2 (15)(16)
[sudo] gpasswd -d uživatel skupina
sudo deluser uživatel skupina
vypsat účty ve skupině (po řádcích)#3
getent group skupina >/dev/null && (gid=$(getent group skupina | cut -d : -f 3); sed -E "/^([^:]*:){3}$gid:/!d;s/:.*//" /etc/passwd; getent group $gid | cut -d : -f 4 | sed -E '/^$/d;s/,/\n/g') | LC_ALL=C.UTF-8 sort -u
je účet členem skupiny? (podle názvu/podle GID)(uspěje, pokud ano)#4
id -Gn uživatel | fgrep -qw název_skupiny
id -G uživatel | fgrep -qw GID
vyprázdnit skupinu (odebrat všechny účty)#5
sudo gpasswd -M '' skupina

5/3 Nastavení skupiny (včetně hesla)

změnit název skupiny#1
sudo groupmod -n nový-název původní-název
změnit GID skupiny#2 (17)
sudo groupmod -g nové-GID skupina
nastavit/zrušit správce skupiny#3 (18)
sudo gpasswd -A uživatelské-jméno[,další-správce] název_skupiny
sudo gpasswd -A "" název_skupiny
nastavit heslo skupiny (pro člověka)#4
sudo gpasswd skupina
Dvakrát zadat nové heslo. Pokaždé potvrdit Enter.
ʡnastavit heslo skupiny (pro skript)#5
zrušit heslo skupiny#6 (19)
[sudo] gpasswd -r skupina
je skupina chráněná heslem?#7

6. Zaklínadla (ostatní)

6/1 Formáty souborů

formát /etc/passwd#1
přihlašovací-jméno:x:UID:GID-výchozí-skupiny:celé jméno[,další údaje]:/domovský/adresář[:/výchozí/shell]
formát /etc/group#2 (20)
název-skupiny:x:GID:[první-člen[,další-člen]]

7. Instalace na Ubuntu

Všechny použité nástroje jsou základními součástmi Ubuntu přítomnými i v minimální instalaci.

8. Tipy a zkušenosti

9. Další zdroje informací

1 Pozor! Celé jméno uživatele nesmí obsahovat znaky čárka a rovná se (, a =), nemělo by obsahovat ani znak dvojtečka. Při použití ne-ASCII znaků program vypíše varování, což je ale na dnešních systémech dost absurdní; doporučuji toto varování ignorovat.
2 Pokud nezadáte volbu „--disabled-login“, příkaz vás hned interaktivně nechá nastavit počáteční heslo nově vzniklého uživatele.
3 Pokud nezadáte parametr „--ingroup“, s vytvořením nového uživatele se pro něj rovněž vytvoří nová, stejnojmenná výchozí skupina.
4 Poznámka: Ve většině případů je správným postupem odemknutí hesla jeho nové nastavení. Příkaz „sudo passwd -u“ je možno použít pouze u účtů, které byly zamknuty příkazem „sudo passwd -l“, v případech, kdy chceme zachovat původní heslo.
5 Vyprší-li platnost hesla, uživatel bude po příštím přihlášení donucen si heslo změnit. Poznámka: vypršení hesla jsem podrobně nezkoušel/a.
6 Varování: Než použijete tento příkaz, dobře si rozmyslete, co děláte. Uživatelský účet bez hesla může představovat závažnou bezpečnostní díru ve vašem systému. Nepoužívejte tuto možnost, pokud vám stačí automatické přihlášení („autologin“).
7 Avatar čtvercový obrázek je ve formátu PNG. Počet pixelů tvořících stranu čtverce může být různý.
8 Tento příkaz také rekurzívně projde domovský adresář uživatele a všechny adresářové položky, jejichž je daný uživatel vlastníkem, přepíše na nové UID, aby uživatel jejich vlastníkem zůstal.
9 Tento příkaz také rekurzívně projde domovský adresář uživatele a všechny adresářové položky příslušné k původní výchozí skupině přepíše na novou výchozí skupinu.
10 Tento příkaz nepřejmenuje domovský adresář uživatele!
11 Avatar čtvercový obrázek je ve formátu PNG. Počet pixelů tvořících stranu čtverce může být různý.
12 Pozor, pokud konverze obrázku selže, uvedený příkaz smaže váš současný avatar bez náhrady.
13 Aby uvedený příkaz fungoval, musí superuživatel v souboru „/etc/login.defs“ do konfigurační volby „CHFN_RESTRICT“ doplnit písmeno „f“ nebo ji nastavit na „no“. I bez toho ovšem můžete změnit svoje celé jméno GUI programem „mugshot“ (nutno doinstalovat stejnojmenný balíček).
14 Použít „gpasswd“ bez sudo je oprávněn pouze správce skupiny.
15 Použít „gpasswd“ bez sudo je oprávněn pouze správce skupiny.
16 Uživatele nelze odebrat z jeho výchozí skupiny. Pokud to chcete udělat, musíte mu nejprve nastavit jinou výchozí skupinu.
17 Poznámka: příslušnost souborů na disku ke skupinám se ukládá ve formě GID a tímto příkazem se nezmění, takže se ztratí příslušnost těchto souborů ke skupině (soubory budou odkazovat na původní GID, ale skupina již bude identifikována jiným).
18 Správce skupiny může přidávat do skupiny a odebírat ze skupiny odstatní uživatele a nastavovat skupině heslo, ale to vše pouze s pomocí příkazu „gpasswd“.
19 Použít „gpasswd“ bez sudo je oprávněn pouze správce skupiny.
20 Výchozí skupina uživatele nemusí být v souboru /etc/group uvedena. Uživatelský účet je jejím členem i v případě, že zde uvedena není!
Barvy, titulek a výzva termináluProměnné prostředí a interpretuSpráva balíčků