dum | žák

Linux

Název školy Vyšší odborná škola obalové techniky a Střední škola, Štětí, příspěvková organizace
Adresa školky Kostelní 134, 411 08 Štětí
46773509
Název operačního programu OP Vzdělávání pro konkurenceschopnost
Registrační číslo CZ.1.07/1.5.00/34.1006
Označení vzdělávacího materiálu VY_32_INOVACE_21_PSS_407
Název tématické oblasti (sady) Operační systémy
Název materiálu Správa uživatelských účtů
Anotace Text je zaměřen na popis a správu lokálních uživatelských účtů v systému Debian GNU Linux. Popisuje atributy uživatelů jako UID, GID, domovský adresář nebo příkazový shell. Popisuje koncept skupin (primární a dodatečné). Dále ukazuje vnitřní strukturu databáze uživatelských účtů. Praktická část je zaměřena na vytváření uživatelů a přepínaní mezi účty v rámci jednoho sezení.
Autor Ivan Pomykacz Jazyk český
Očekávaný výstup Vytvoří uživatelský účet. Rozumí uspořádání databáze uživatelských účtů. Nastaví heslo uživateli. Přihlásí se na uživatele v rámci jednoho sezení.
Klíčová slova uživatelé, uživatelský účet, heslo, skupiny, domovský adresář, shell
Druh výukového zdroje Výklad Věková skupina žáků 17+
Typ interakce aktivita Ročník 3.
Speciální vzdělávací potřeby žádné
Zhotoveno, (datum/období) 22.10.2013 Celková velikost

pdf icon
Správa uživatelských účtů

Obsah

V Debianu lze provozovat tzv. lokální účty (což bude náš případ), ale i jiné typy účtů. Např. takové, které jsou svázány s nějakou centrální autentizační autoritou (např. Active Directory)

Lokální uživatelské účty

Běžný uživatel má své přihlašovací jméno (login) a heslo, kterými se autentizuje. A každý "běžný" uživatel má svůj tzv. domovský adresář, kam si může ukládat svá data.

Co už na první pohled vidět není, je to, že každý uživatel má svůj číselný identifikátor UID a je členem tzv. primární skupiny GID. Příkazem id lze tyto informace zobrazit.

root@wheezy:~# id
uid=0(root) gid=0(root) skupiny=0(root)

V případě uživatele root jsou hodnoty UID a GID rovny 0. Pokud byste některému uživateli přidělili stejné UID, pak se i z něho stane super uživatel (jen bude mít jiné přihlašovací jméno).

Příkazem id se můžeme podívat i na jiného uživatele tím, že zadáme jeho login jako parametr:

root@wheezy:~# id tux
uid=1000(tux) gid=1000(tux) skupiny=1000(tux),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev)

Skupiny

Jak už bylo řečeno, každý účet v systému je členem alespoň jedné, tzv. primární skupiny. Ve výpisu příkazu id tux si lze všimnout, že tento uživatel je navíc členem ještě dalších skupin. Členstvím ve skupinách lze dosáhnout zpravidla oprávnění k přístupu souborům nebo i HW zařízením.

Spoutěná aplikace má totiž taková práva, jako ten, kdo jí spouští.

Lokální databáze

Existují tři soubory, ve kterých jsou uloženy informace o lokálních účtech a skupinách. Jde o:

  • /etc/passwd .. Obsahuje informace o uživatelských účtech (s výjimkou hesla).

  • /etc/shadow .. Obsahuje hesla uživatelů v zašifrované podobě.

  • /etc/group .. Obsahuje definované skupiny a členství uživatelů ve skupinách (avšak ne těch primárních)

Všechny tři soubory jsou obyčejné textové soubory, tudíž je lze editovat přímo (a tím vytvořit, upravit nebo smazat uživatele). To se ovšem nedoporučuje. Existuje celá řada nástrojů, grafické i konzolové, které tu jsou pro tyto účely.

Podívat se do nich ale můžeme.

/etc/passwd
root@wheezy:~# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
Debian-exim:x:101:104::/var/spool/exim4:/bin/false
statd:x:102:65534::/var/lib/nfs:/bin/false
tux:x:1000:1000:Tux,,,:/home/tux:/bin/bash

Není to příliš patrné, ale soubor je vlastně taková tabulka. Každý účet je popsán jedním řádkem v souboru. Na každém řádku jsou hodnoty oddělené dvojtečkou. Vezmeme-li to zleva, pak sloupce nesou informace o:

  • přihlašovací jméno;

  • heslo zastoupené znakem x, hesla se již do tohoto souboru neukládají;

  • UID

  • GID, název skupiny lze vyčíst ze souboru /etc/group;

  • informace o uživateli, jako celé jméno, adresa, atp.;

  • cesta k domovskému adresáři - neznamená to ovšem, že tento adresář existuje;

  • příkazový shell - běžní uživatelé mají zpravidla nastavený /bin/bash.

/etc/shadow
root@wheezy:~# cat /etc/shadow
root:$6$1Wn0HjfK$qob/ecdPlDEeZPrTkVaUCiny1mKNcU0L5gNEIvCgnz9fzIZMI6X9RnsHTPRM/sgbrgVWpJvQXY.gv4Bq1c41H/:16181:0:99999:7:::
daemon:*:16181:0:99999:7:::
bin:*:16181:0:99999:7:::
sys:*:16181:0:99999:7:::
sync:*:16181:0:99999:7:::
games:*:16181:0:99999:7:::
man:*:16181:0:99999:7:::
lp:*:16181:0:99999:7:::
mail:*:16181:0:99999:7:::
news:*:16181:0:99999:7:::
uucp:*:16181:0:99999:7:::
proxy:*:16181:0:99999:7:::
www-data:*:16181:0:99999:7:::
backup:*:16181:0:99999:7:::
list:*:16181:0:99999:7:::
irc:*:16181:0:99999:7:::
gnats:*:16181:0:99999:7:::
nobody:*:16181:0:99999:7:::
libuuid:!:16181:0:99999:7:::
Debian-exim:!:16181:0:99999:7:::
statd:*:16181:0:99999:7:::
tux:$6$17GvPuCr$i1XbBAk3Mtr.sZ7PJEhTW8xgFrOhJ.2ze0pVWOKXuEdAPMg9G1MstB0vosUPWL3CUjjB3jQSJDE36160Pzg.S.:16181:0:99999:7:::

Na každém řádku je opět jeden uživatel a jeho heslo, nebo také ne, pokud jej nemá. V takovém případě je na pozici hesla !.

Další parametry souvisí např. s různými daty, jako kdy expiruje heslo, kdy bylo naposledy změněno, lhůta pro vypršení hesla, atp. (vizte man shadow).

Založení nového uživatele

Nový účet lze založít příkazem useradd. Pokud jej spustíte jen tak, vypíše vám nápovědu (dokonce v češtině).

Z manuálové stránky lze vyčíst, že nejzákladnější použití spočívá v zadání přihlašovacího jména jako parametr programu useradd, tedy:

root@wheezy:~# useradd franta

Uvedeným příkazem došlo skutečně k vytvoření uživatele s přihlašovacím jménem franta. Můžeme se přesvědčit např. příkazem id franta

root@wheezy:~# id franta
uid=1001(franta) gid=1001(franta) skupiny=1001(franta)

Všimněte si, že se automaticky vytvořila skupina se stejným názvem jako je přihlašovací jméno a shodou okolností i stejným GID jako UID. Podíváme-li se na konec souboru /etc/passwd, zjistíme, jak se nastavily ostatní parametry uživatele.

root@wheezy:~# tail -n 1 /etc/passwd
franta:x:1001:1001::/home/franta:/bin/sh

Uživatel má nastavený příkazový shell /bin/sh a domovský adresář v umístění /home/franta. Pokud bychom se ale podívali do adresáře /home, zjistíme, že adresář se nevytvořil.

root@wheezy:~# ls /home/
tux

V souboru /etc/shadow navíc zjistíme, že uživatel franta nemá heslo.

root@wheezy:~# tail -n 1 /etc/shadow
franta:!:16213:0:99999:7:::

Skupiny, domovský adresář, shell, ...

Založme nyní další účet, ale tentokrát si zvolíme vybrané parametry podle sebe. Chceme, aby nový uživatel:

  • patřil do primární skupiny studenti;

  • měl vytvořený domovský adresář;

  • měl nastavený příkazový shell na /bin/bash;

Potom by mohl příkaz na vytvoření nového uživatele pepa vypadat:

root@wheezy:~# useradd -g studenti -m -s /bin/bash pepa
useradd: skupina „studenti“ neexistuje

Pokud na vás vyskočí hláška, že skupna studenti neexistuje, pak je ji jednoduše založíme a příkaz zopakujeme:

root@wheezy:~# groupadd studenti
root@wheezy:~# useradd -g studenti -m -s /bin/bash pepa

Nyní se můžeme přesvědčit, že

root@wheezy:~# ls /home/
pepa  tux

domovský adresář uživatele pepa již existuje.

Nastavení hesla

Uživatel stále nemá heslo. Pozor, není možné použít přepínač -p, protože tento parametr přebírá heslo v již zašifrované podobě.

Heslo přidělíme uživateli např. příkazem passwd.

root@wheezy:~# passwd pepa
Zadejte nové UNIX heslo:
Opakujte nové UNIX heslo:
passwd: heslo bylo úspěšně změněno

Pokud spustíte passwd bez parametru, pak měníte heslo sobě!

Přepnutí se na uživatele

V konzoli je možné pomocí příkazu su se přepnout na libovolného uživatele. Jste-li navíc přihlášeni jako root, pak dokonce nemusíte znát ani heslo uživatele (nebo tento uživatel nemusí mít heslo ani vytvořeno).

root@wheezy:~# su pepa
pepa@wheezy:/root$ cd
pepa@wheezy:~$ pwd
/home/pepa

Nejprve jsem se přepnul na uživatele pepa, potom jsem příkazem cd přešel do svého (pepova) domovského adresáře, čehož je důkazem výstup příkazu pwd.

Příkazem exit se můžu vrátit zpět k účtu, pod kterým jsem byl přihlášen před tím, než jsem zadal příkaz su.

pepa@wheezy:~$ exit
exit

Uvádím to zde proto, že je možné opakovaně zadávat su, a tím se jakoby zanořovat do pomyslné hloubky. Pokud zapomenete na to, že jste zanořeni, může se vám stát že některé příkazy začnou hlásit podivné chybové hlášky (např. při odpojení disku: Device or resource is busy).

Pokud by se chtěl pepa povýšit na uživatele root, stačí zadat pouze su. Nyní zde záměrně uvádím poněkud nesmyslné zanořování příkazem su a následné vynoření.

root@wheezy:~# su pepa
pepa@wheezy:/root$ su
Heslo:
root@wheezy:~# su pepa
pepa@wheezy:/root$ su
Heslo:
root@wheezy:~# su
root@wheezy:~# su
root@wheezy:~# su pepa
pepa@wheezy:/root$ exit
exit
root@wheezy:~# exit
exit
root@wheezy:~# exit
exit
root@wheezy:~# exit
exit
pepa@wheezy:/root$ exit
exit
root@wheezy:~# exit
exit
pepa@wheezy:/root$ exit
exit

A ještě pro ukázku, jak to vypadá s uživatelem franta, který má jiný příkazový shell a nemá domovský adresář.

root@wheezy:~# su franta
$ pwd
/root
$ cd
sh: 2: cd: can't cd to /home/franta
$ exit

Odstranění uživatele

Pro odstranění účtu ze systému se používá příkaz userdel. Jeho použití je intuitivní

root@wheezy:~# userdel franta

Pokud má uživatel domovský adresář a pokud jej chceme odstranit společně s uživatelským účtem, použijeme přepínač -r.

root@wheezy:~# userdel -r pepa
userdel: pepa mail spool (/var/mail/pepa) not found

Chybovou hlášku ohledně chybějícího adresáře /var/mail/pepa můžeme tiše přejít. Žádný takový adresář jsme totiž nevytvářeli, ale příkaz userdel -r se jej pokouší i přesto smazat.

Hromadná správa účtů

Pro hromadné/dávkové zakládání účtů lze využít příkaz newusers. Ten vyžaduje předem připravený textový soubor, kde je seznam uživatelů v obdobné struktuře, jakou má soubor /etc/passwd. "Výhoda" je, že v seznamu se může objevit heslo v nezašifrované podobě.

Příklad seznamu:

    anca:250476::1005::/home/anca:/bin/bash
    kuba:8a6220::1005::/home/kuba:/bin/bash
    hajnej:ef87e3::1005::/home/hajnej:/bin/bash

Ty samotné dvojtečky vedle sebe indikují, že nějaké hodnoty byly ponechány ve výchozím stavu. V tomto případě jde o čísla UID a informace o uživateli. Skupina GID 1005 musí ovšem již existovat.

Použití je pak:

    root@wheezy:~# newusers seznam.txt