Nauč se Python > Kurzy > Linuxová administrace > Správa uživatelů > Poznámky – Správa uživatelů

Poznámky – správa uživatelů

Úvod

$ locate battery.png
$ eog /usr/share/icons/gnome/256x256/devices/battery.png

Hlasitost – systémové zvuky

$ locate bark.ogg
$ ogg123 /usr/share/sounds/gnome/default/alerts/bark.ogg
bash: ogg123: Příkaz nebyl nenalezen...
Nainstalovat balíček „vorbis-tools“, který poskytuje příkaz „ogg123“? [N/y] y

Uživatelé

$ ps aux
$ ls -l
$ ls -l /usr/bin
$ groups
$ whoami
$ id

Skupina wheel je pro administrátory.

Kam nemůžeš

$ echo "..." > /usr/bin/mujprogram
$ console: /usr/bin/mujprogram: Operace zamítnuta
$ ll /usr/lib64/python*/site-packages
$ ll /usr/share/icons/gnome/256x256/devices/
$ nano /usr/bin/mujprogram

uložení → Error writing /usr/bin/mujprogram: Permission denied

$ echo > /usr/share/sounds/gnome/default/alerts/bark.ogg

Pod svým uživatelským účtem nemůžeš zasahovat do sdílených částí systému.

Existují výjimky – instalace ogg123 – byla pro všechny uživatele!

Práva souborů

ls -l a chmod

Čtení – r

$ cd ~/Dokumenty/data-shell/
$ cat pizza.cfg
alpha: 0.5
beta: 0.2
gamma: off
$ ls -l pizza.cfg
-rw-r--r--. 1 petr petr    32 Aug  8  2019 pizza.cfg
$ chmod -r pizza.cfg
$ ls -l pizza.cfg
--w-------. 1 petr petr 32 Aug  8  2019 pizza.cfg
cat: pizza.cfg: Operace zamítnuta
$ chmod +r pizza.cfg
$ ls -l pizza.cfg 
-rw-r--r--. 1 petr petr 32  8. srp  2019 pizza.cfg

Zápis – w

$ chmod -w pizza.cfg
$ echo > pizza.cfg 
bash: pizza.cfg: Operace zamítnuta
$ ls -l pizza.cfg
-r--r--r--. 1 petr petr 32  8. srp  2019 pizza.cfg
$ chmod +w pizza.cfg
$ ls -l pizza.cfg
-rw-rw-r--. 1 petr petr 32  8. srp  2019 pizza.cfg

Spuštění – x

$ ./pizza.cfg 
bash: ./pizza.cfg: Operace zamítnuta
$ chmod +x pizza.cfg 
$ ./pizza.cfg
./pizza.cfg: řádek 1: alpha:: příkaz nenalezen
./pizza.cfg: řádek 2: beta:: příkaz nenalezen
./pizza.cfg: řádek 3: gamma:: příkaz nenalezen
$ ls -l pizza.cfg
-r-xr-xr-x. 1 petr petr 32  8. srp  2019 pizza.cfg
$ chmod -x pizza.cfg 
$ ls -l pizza.cfg
-r--r--r--. 1 petr petr 32  8. srp  2019 pizza.cfg

x u adresářů

$ ls -l .
$ ls -l -d .
drwxr-xr-x. 8 petr petr 4096  6. říj 23.40 .

To -d zobrazí info pro samotný adresář.

$ chmod -x .
$ ls .
ls: nelze přistoupit k '.': Operace zamítnuta
$ cat pizza.cfg
cat: pizza.cfg: Operace zamítnuta
$ cat ~/Dokumenty/data-shell/pizza.cfg
cat: /home/petr/Dokumenty/data-shell/pizza.cfg: Operace zamítnuta
$ chmod +x .
chmod: nelze přistoupit k '.': Operace zamítnuta

oops...

$ cd ..
$ chmod +x data-shell
$ cd data-shell/
$ ls
creatures  diplomka_archiv  north-pacific-gyre  plan.txt   writing
data       molecules        pizza.cfg           solar.pdf
$ ls -ld . pizza.cfg
drwxr-xr-x. 8 petr petr 4096  6. říj 23.40 .
-r--r--r--. 1 petr petr   32  8. srp  2019 pizza.cfg

'rwx' se opakuje 3× – pro uživatele, skupinu a všechny.

$ chmod u+x data-shell
$ chmod g+x data-shell
$ chmod o+x data-shell
$ chmod a-x data-shell

Do domovského adresáře ti nikdo jiný nevleze – rwx je tu jen pro tebe:

$ ls -ld ~
drwx------. 25 petr petr 4096  2. lis 14.31 /home/petr

Změna uživatele

$ id
$ su moje_uzivatelske_jmeno
$ su root

... neznáš heslo.

Nový uživatel

Gnome GUI na uživatele. Jsem administrátor. Vytvořit nového uživatele test1 – chce to heslo, i když jsem "administrátor". Co je to administrátor?

Zavřít nastavení, otevřít znovu – chce to heslo znovu. Administrátor – systém mi přidělí oprávnění, když zadám své heslo. „Být“ administrátor chci co nejmíň.

$ su test1
$ pwd
$ ls
$ ps
$ ls -al

Přepnout uživatele v GUI (NE odhlásit!) → vytvoří se adresáře. Nastavení uživatelů – chce to heslo administrátora...

Přepnout zpátky – neodhlašovat.

Zpátky ke konzoli. K přepnutí uživatele potřebuješ heslo:

$ su moje_uzivatelske_jmeno
$ exit

Superuživatel nemá heslo!

$ su root
$ exit

Kde ti uživatelé jsou

$ less /etc/passwd
$ less /etc/shadow
$ ls -l /etc/passwd /etc/shadow

Přihlášení

Změnit uživatele může jen administrátor. Jak tedy funguje su?

$ su test1
$ ps -a -u
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
petr        1504  0.0  0.1 371584  2812 tty2     Ssl+ 13:37   0:00 /usr/libe...
petr        1507  1.1  3.3 1723936 67372 tty2    Sl+  13:37   1:03 /usr/libe...
petr        1570  0.0  0.1 467944  3192 tty2     Sl+  13:37   0:00 /usr/libe...
petr       15640  0.0  0.3 227968  6084 pts/0    Ss   14:31   0:00 bash
root       18130  0.0  0.4 246780  8444 pts/0    S    15:10   0:00 su test1
test1      18140  0.1  0.2 227404  5396 pts/0    S    15:10   0:00 -bash
test1      18171  0.0  0.1 228432  3980 pts/0    R+   15:10   0:00 ps -a -u
$ ls -l /usr/bin/su
$ exit

Sudo

$ ls -l /usr/bin/sudo
$ whoami
$ sudo whoami
$ sudo ps -a -u
$ sudo ll
$ sudo ls -l
$ sudo less /etc/shadow

Jsme ve virtuálním počítači, pojďme ho trochu rozbít:

$ nano /usr/bin/zkouska
$ sudo nano /usr/bin/zkouska

Když jsem (přes sudo) superuživatelem, su se mě neptá na heslo:

$ sudo su test1

Ale sudo funguje to jen pro administrátory (wheel):

$ sudo su petr

Můžu se ovšem přihlásit jako superuživatel!

$ sudo su root
# pwd
# exit

Všimni si promptu # – občas ho najdeš v tutoriálech; znamená, že musíš být root. Dnes se častěji používá sudo před příkazem – být administrátorem je nebezpečné. Navíc sudo se dá nastavovat – pro každého uživatele říct, jaké příkazy je oprávněn přes sudo spouštět.

Potřabuješ-li pustit příkaz jako root, všimni si, že se sudo neptá na heslo pokaždé. Pro konkrétní terminál si ho vždy nějakou dobu pamatuje, a to i mezi spuštěními. (Není v tom žádná velká magie – viz sudo ls /var/run/sudo/ts.)

Potřebuješ-li opravdu pustit celý shell jako root (např. zachraňuješ počítač), lepší než sudo su root je sudo -i (interaktivní):

$ sudo -i
# pwd
# exit

Změna hesla

Další věc, kterou může dělat jen administrátor, je změna hesla. Existuje ale setuid passwd, který heslo mění!

Zkus si změnit heslo na něco jednoduchého:

$ passwd
Změna hesla uživatele petr.
Current password: 
Nové heslo: 
ŠPATNÉ HESLO: Heslo je kratší než 8 znaků
passwd: Chyba manipulace s autentizačním tokenem

Nejde to! Stejně tak nesmíš měnit heslo jiného uživatele:

$ passwd test1
passwd: Pouze root smí zadat uživatelské jméno.

Ale root může vše!

$ sudo passwd test1
Změna hesla uživatele test1.
Nové heslo: 
ŠPATNÉ HESLO: Heslo je kratší než 8 znaků
Opakujte nové heslo: 
passwd: všechny autentizační tokeny byly úspěšně změněny.

(Hláška ŠPATNÉ HESLO se sice objeví, ale je jen informační – heslo může být klidně jednopísmenné.)

Přidání uživatele v konzoli

$ useradd test2
$ sudo useradd test2
$ sudo ls -l /home/test2
$ sudo ls -al /home/test2
$ sudo ls -al ~test2
$ cat /etc/passwd
$ userdel test2
$ sudo ls -al ~test2
$ sudo ls -al /home/test2
$ sudo useradd test2

Skupiny

$ groups
$ groups test1
$ sudo groupadd editors
$ sudo usermod test1 -aG editors
$ groups test1
$ sudo usermod petr -aG editors
$ groups petr
$ groups

Uživatel a skupiny pro daný proces jsou vždy nastavené při přihlášení. Aby se změny členství ve skupinách projevily, musíš se znovu přihlásit:

$ groups
$ su petr
$ groups
$ ps a

Poznámka 1 – Další oprávnění

Poznámka 2 – -x jen zabraňuje vstupu

Do domovského adresáře ti nikdo jiný nevleze:

$ ls -ld ~
drwx------. 25 petr petr 4096  2. lis 14.31 /home/petr

Ale když už tam (jako jiný uživatel) jsem, můžu se procházet:

$ cd ~/Dokumenty/data-shell/
$ su test1
Heslo: 
$ ls
creatures  diplomka_archiv  north-pacific-gyre  plan.txt   writing
data       molecules        pizza.cfg           solar.pdf

(su bez - nedělá „login“)

Poznámka 3 – proč ne useradd

Je groupadd, groupmod a groupdel; usedmod a userdel, proč adduser a ne useradd?

Příkaz useradd historicky sice vytvořil uživatele, ale nenastavil mu skupinu a shell, nevytvořil domovský adresář a tak dále.

Poznámka poslední

$ sudo poweroff

Toto je stránka lekce z kurzu, který probíhá nebo proběhl naživo s instruktorem.