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í | ||
IČ | 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 |
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