Lekce 11 - Linuxový terminál (Bash) - Správa uživatelů
V minulé lekci, Linuxový terminál (Bash) - Standardní vstup/výstup a expanze, jsme přesměrovali standardní vstup a výstup, naučili se používat filtry a roury. V závěru lekce jsme si vysvětlili expanzi.
Již víme, že je Linux víceuživatelský operační systém, a tak si můžeme otevřít několik oken terminálu a v každém z nich se přihlásit jako jiný uživatel. V dnešní lekci se naučíme efektivně vytvářet a dále spravovat uživatele.
Uživatelé v Linuxu
Linux všechny uživatele zapisuje do seznamu, který nalezneme v souboru
passwd
v adresáři /etc
. Pojďme soubor otevřít a
podívat se, jací jsou v systému uživatelé:
less /etc/passwd
Na každém řádku nalezneme jednoho uživatele, a tak si
snadno můžeme spočítat kolik uživatelů v systému existuje. Použijeme k
tomu filtr wc
(word count) s přepínačem -l
, který
bude počítat řádky:
less /etc/passwd | wc -l
V systému budeme mít pravděpodobně kolem 30 uživatelů. Na prvním
řádku nalezneme vždy uživatele root
s UID 0
, poté
budou následovat uživatele jednotlivých služeb, jako například
lp
, mail
, www-data
a další. Na konci
souboru pak nalezneme uživatele, které jsme si vytvořili my.
Pokud se podíváme na libovolný řádek souboru, všimneme si, že se
skládá z několika informací oddělených dvojtečkou (:
).
Jejich význam je následující:
zaboj | x | 1001 | 1001 | ,,, | /home/zaboj |
/bin/bash |
Jméno uživatele | Heslo uživatele | Unikátní ID uživatele (UID) | ID skupiny (GID) | Informace o profilu | Domovský adresář | Výchozí shell |
Na druhé pozici bývalo heslo, dnes je však nahrazeno znakem
x
. Všechna hesla jsou uložena v zahashované podobě v souboru
/etc/shadow
.
Pokud bychom chtěli vědět, kteří uživatelé jsou aktuálně přihlášeni, zadáme do terminálu příkaz:
users
Vytvoření uživatele
Začneme tím, že si příkazem adduser
vytvoříme nového
uživatele itnetwork
. Do terminálu napíšeme:
sudo adduser itnetwork
Systém nás následně vyzve k zadání bezpečného hesla a dalších informací:
Adding user `itnetwork' ... Adding new group `itnetwork' (1002) ... Adding new user `itnetwork' (1002) with group `itnetwork' ... Creating home directory `/home/itnetwork' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for itnetwork Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n]
Informace o uživateli není povinné vyplňovat. Stačí je pouze potvrdit
klávesou Enter a nakonec odsouhlasit správnost všech údajů
stisknutím Y. Spolu s novým uživatelem se automaticky
vytvoří i jeho domovský adresář. Ten nalezneme v adresáři
/home
a jeho název bude shodný s jménem uživatele.
Nového uživatele můžeme vytvořit také příkazem
useradd
. V tomto případě však musíme heslo a další informace
nastavit ručně pomocí přepínačů, a tak se tento způsob využívá
například ve skriptech.
Změna hesla
Pro nastavení nového hesla, či ke změně stávající hesla využijeme
příkaz passwd
. Po zadání příkazu nás systém vyzve k
zadání hesla pro aktuálně přihlášeného uživatele:
Changing password for itnetwork.
Current password:
New password:
Retype new password:
passwd: password updated successfully
Máme-li administrátorská práva, můžeme změnit heslo i jinému uživateli:
passwd david
Nastavení uživatele
Každého uživatele potřebujeme dále spravovat, například ho přidat do
další skupiny, změnit mu domovský adresář či uživatelské jméno. K
tomuto slouží příkaz usermod
a několik přepínačů.
Změna primární skupiny
Uživatel musí patřit alespoň do jedné skupiny. Takovouto skupinu pak
označujeme jako primární. Pojďme změnit primární skupinu uživatele
itnetwork
na netadmins
:
usermod -g netadmins itnetwork
Přidání do skupiny
Každý uživatel však může být členem až 32 sekundárních skupin. Do
sekundární skupiny redactors
přidáme uživatele
itnetwork
příkazem:
usermod -a -G redactors itnetwork
Chceme-li uživatele přidat do více skupin najednou, napíšeme je za sebe bez mezery a oddělíme čárkou:
usermode -a -G redactors,prteam itnetwork
Při přidávání uživatele do nové skupiny vždy
používáme přepínač -a
. Pokud ho vynecháme, uživatel
bude odebrán ze všech skupin, které nejsem v aktuálním
seznamu.
Změna domovského adresáře
Nový domovský adresář uživatele nastavíme přepínačem
-d
:
usermod -d /home/itnetwork_new -m itnetwork
Téměř vždy chceme použít přepínač -m
, a
tím přesunout obsah stávajícího adresáře do nového.
Změna uživatelského jména
Změnu uživatelského jména neprovádíme příliš často, ale může
nastat situace, která bude změnu vyžadovat. Nové uživatelské jméno
admin
nastavíme s využitím přepínače -l
:
usermod -l admin itnetwork
Příkazem usermod
je dále možné změnit UID
uživatele, zamknout či odemknout profil, přidat k účtu komentář a
podobně. Nápovědu k těmto možnostem získáme příkazem:
usermod --help
Přepnutí uživatele
Někdy potřebujeme využít oprávnění jiného uživatelského profilu.
Dočasné přihlášení jako jiný uživatel nám umožní přístup k
adresářům a souborům, ke kterým z našeho profilu nemáme přístup. K tomu
slouží příkaz su
, který následuje jméno uživatele za
kterého se přihlašujeme:
sudo su administrator
Tato relace je dostupná pouze z aktuálního terminálu, v
jiném budeme stále přihlášení pod naším uživatelem. Relaci ukončíme
příkazem exit
.
Odstranění uživatele
K odstranění uživatele máme příkaz userdel
:
sudo userdel itnetwork
Pokud k příkazu přidáme přepínač -r
, odstraníme
současně i domovský adresář:
sudo userdel -r itnetwork
To je pro dnešní lekci vše.
V příští lekci, Linuxový terminál (Bash) - Správa skupin a ACL, se naučíme spravovat skupiny. Ukážeme si, jak v Linuxu přidělovat oprávnění jednotlivým uživatelům pomocí ACL.