Prejsť na obsah

Nastavenia súborov cookie

Vyberte, aké druhy súborov cookie povolíte. Svoj výber môžete kedykoľvek zmeniť cez Nastavenia súborov cookie v dolnej časti každej stránky. Vyhlásenie o ochrane osobných údajov

Nevyhnutné

Vždy zapnuté

Potrebné na prihlásenie, uchovanie košíka a zapamätanie vašich volieb. Sú vždy zapnuté.

Ktoré súbory cookie?
  • weboke_sessie, weboke_klant, weboke_remember: vaša relácia a trvalé prihlásenie
  • weboke_basket: váš košík
  • wkBtwIncl: zobrazovanie cien s DPH alebo bez DPH
  • wok_cookies: váš výber súborov cookie, 12 mesiacov

Merajú, ktorá reklama vedie k návšteve alebo objednávke, aby sme neplatili za reklamy, ktoré nič neprinášajú.

Ktoré súbory cookie?
  • Google Ads cez Google Tag Manager (_gcl_au, _gcl_aw), najviac 90 dní
  • OpenAI Ads, reklamy v ChatGPT
  • wok_aff: ktorý partner vás k nám odporučil (partnerský program), 60 dní

4,6

Krajina a jazyk

Každá krajina má vlastný web s cenami a DPH danej krajiny.

Zobraziť

Používatelia, skupiny a oprávnenia súborov

Modul 3: Používatelia, práva a sudo · Čas čítania: 12 minút

Cieľ lekcie: Po tejto lekcii dokážete vytvárať a prezerať používateľov a skupiny, čítať oprávnenia súboru alebo priečinka v ls -l a správne ich nastaviť pomocou chmod a chown bez toho, aby ste všetko otvorili dokorán.

Kľúčové pojmy: root (UID 0), bežný používateľ, systémový používateľ, /etc/passwd, /etc/shadow, skupina, adduser, id, rwx, vlastník, skupina, ostatní, osmičkový zápis (644, 755, 600), chmod, chown, umask, setuid, 777

Každý je číslo

Linux bol od začiatku navrhnutý pre viacerých používateľov na jednom stroji. Každý bežiaci proces beží v mene nejakého používateľa a každý súbor má vlastníka. Pre systém je používateľ predovšetkým číslo, UID:

  • root má UID 0. Root smie všetko: čítať a meniť každý súbor, zastaviť každú službu, vytvoriť každého používateľa. Žiadne "ste si istí?" neexistuje.
  • Bežní používatelia, napríklad anna, dostávajú v Debiane a Ubuntu UID od 1000. Smú zapisovať do vlastného domovského priečinka a inak len málo.
  • Systémoví používatelia majú nízke číslo a väčšinou žiadne heslo ani shell. Pod takýmto používateľom bežia služby: nginx pod www-data, PostgreSQL pod postgres. Ak niekto takú službu napadne, má útočník len práva tohto používateľa, nie práva roota.

Kým ste, zistíte príkazom id:

anna@web1:~$ id
uid=1000(anna) gid=1000(anna) groups=1000(anna),27(sudo),100(users)

Anna má UID 1000, vlastnú skupinu anna a je aj v skupinách sudo a users.

Kde sú uložení používatelia

Zoznam používateľov je v súbore /etc/passwd, jeden riadok na používateľa:

anna@web1:~$ grep -E '^(root|www-data|anna):' /etc/passwd
root:x:0:0:root:/root:/bin/bash
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
anna:x:1000:1000:Anna,,,:/home/anna:/bin/bash

Polia oddelené dvojbodkami: meno, x (heslo je uložené inde), UID, hlavná skupina, popis, domovský priečinok, shell. Pri www-data je ako shell uvedené /usr/sbin/nologin: prihlásiť sa nedá.

Samotné heslá sú uložené zašifrované (zahašované) v /etc/shadow. Tento súbor môže čítať iba root. Znak ! alebo * na začiatku poľa s heslom znamená: prihlásenie heslom nie je možné. Takto je root v Ubuntu predvolene uzamknutý, a v Debiane vtedy, ak ste pri inštalácii nezadali heslo pre roota.

Vytváranie používateľov a skupín

V Debiane a Ubuntu použite priateľský príkaz adduser:

root@web1:~# adduser anna
info: Adding user `anna' ...
info: Adding new group `anna' (1000) ...
info: Adding new user `anna' (1000) with group `anna (1000)' ...
info: Creating home directory `/home/anna' ...
info: Copying files from `/etc/skel' ...
New password:
Retype new password:
...

adduser vytvorí používateľa, vlastnú skupinu s rovnakým menom, domovský priečinok a vyžiada si heslo. Existuje aj nízkoúrovňový useradd (v AlmaLinux a Rocky Linux je to bežný príkaz), ktorý však bez volieb urobí menej: žiadne heslo a v niektorých systémoch ani domovský priečinok.

Skupina je spôsob, ako prideliť práva viacerým používateľom naraz. Pridanie používateľa do skupiny:

root@web1:~# adduser anna www-data
root@web1:~# usermod -aG www-data anna     # to isté, funguje všade

Všimnite si -a pri usermod: bez -a nahradíte všetky dodatočné skupiny používateľa iba touto jednou. Nová skupina začne platiť až po opätovnom prihlásení.

Zablokovanie účtu bez jeho odstránenia (napríklad účtu bývalého kolegu):

root@web1:~# usermod -L -e 1 jan

-L uzamkne heslo, -e 1 nechá účet expirovať. Pozor: uzamknuté heslo nie vždy zastaví SSH kľúč. Odstráňte preto aj kľúče v /home/jan/.ssh/authorized_keys (lekcia 2.3); expirovaný účet (-e 1) sshd odmietne.

Čítanie oprávnení

anna@web1:~$ ls -l /var/www/example.com
total 12
-rw-r--r-- 1 anna     www-data  1520 Nov  9 10:12 index.html
-rw-r----- 1 anna     www-data   412 Nov  9 10:14 config.php
drwxr-xr-x 2 anna     www-data  4096 Nov  9 10:15 images
drwxrwxr-x 2 www-data www-data  4096 Nov  9 10:20 uploads

Prvý blok desiatich znakov je kľúčom ku všetkému:

  • Znak 1: typ. - je bežný súbor, d priečinok (adresár), l symbolický odkaz (symlink).
  • Znaky 2 až 4: čo smie vlastník.
  • Znaky 5 až 7: čo smie skupina.
  • Znaky 8 až 10: čo smú ostatní (všetci ostatní).

Potom nasleduje počet odkazov, vlastník, skupina, veľkosť a dátum.

Písmená pri súbore znamenajú:

PísmenoVýznam pri súbore
rčítanie
wzmena
xspustenie ako program alebo skript

A pri priečinku niečo trochu iné:

PísmenoVýznam pri priečinku
rzobrazenie názvov súborov v priečinku
wvytváranie, premenovanie a mazanie súborov v priečinku
xvstup do priečinka a otváranie súborov v ňom

To posledné mnohých prekvapí. Bez x na priečinku sa k súborom v ňom nedostanete, ani keď sú samy osebe čitateľné. A kto má w na priečinku, môže v ňom súbory mazať, aj keď patria niekomu inému.

V príklade: index.html smie čítať každý; config.php (s heslom k databáze) smie Anna čítať a meniť, skupina www-data (teda webový server) len čítať a ostatní nič. Do uploads smie webový server zapisovať, pretože tam idú súbory nahrané návštevníkmi.

Oprávnenia ako číslo

Oprávnenia sa často zapisujú ako tri číslice, osmičkové číslo. Každé písmeno má hodnotu: r = 4, w = 2, x = 1. Sčítajte ich pre každú skupinu:

OprávneniaČísloPoužitie
rw-r--r--644bežný súbor, ktorý smie čítať každý
rw-r-----640súbor pre vlastníka a skupinu, napríklad konfigurácia s heslom
rw-------600tajný súbor, napríklad authorized_keys alebo súkromný kľúč
rwxr-xr-x755priečinok alebo program, ktorý smie používať každý
rwx------700súkromný priečinok, napríklad ~/.ssh

Zmena oprávnení: chmod a chown

anna@web1:~$ chmod 640 /var/www/example.com/config.php
anna@web1:~$ chmod g+w /var/www/example.com/uploads
root@web1:~# chown anna:www-data /var/www/example.com/config.php

chmod mení oprávnenia, číslom alebo písmenami (u, g, o pre vlastníka, skupinu, ostatných; + alebo - a písmeno). chown eigenaar:groep mení vlastníka a skupinu; to smie iba root. S -R fungujú oba príkazy na celý priečinok a práve tu sa často robí chyba: chmod -R 644 na priečinku urobí všetky podpriečinky nepoužiteľnými, pretože priečinky potrebujú x. Pre celý strom radšej použite find:

root@web1:~# find /var/www/example.com -type d -exec chmod 755 {} +
root@web1:~# find /var/www/example.com -type f -exec chmod 644 {} +

Nikdy 777

"Nefungovalo to, tak som tam dal 777." 777 znamená: každý na serveri to smie čítať, meniť a spúšťať. Ak sa niekedy pokazí jediná služba alebo jediná webová stránka na vašom serveri, útočník môže zapisovať všade, kde je 777, vrátane vašich PHP súborov. Skutočným problémom je takmer vždy vlastník alebo skupina: dajte webovému serveru cez skupinu presne to právo, ktoré potrebuje, a len na priečinok, kde ho potrebuje.

Predvolené oprávnenia a špeciálne bity

Nové súbory dostávajú oprávnenia podľa umask. Pri bežnej umask 022 majú nové súbory 644 a nové priečinky 755. Svoju umask zobrazíte príkazom umask.

Niekedy uvidíte s namiesto x, napríklad pri /usr/bin/passwd (-rwsr-xr-x). To je bit setuid: program beží s právami vlastníka (roota), aj keď ho spustí bežný používateľ. Pre niekoľko systémových programov je to nutné, no nikdy ho sami nenastavujte na skript. Neočakávaný súbor so setuid je známym znakom prieniku; príkazom find / -perm -4000 -type f 2>/dev/null zobrazíte všetky.

V AlmaLinux a Rocky Linux

adduser je tam iný názov pre useradd; použite useradd -m anna a potom passwd anna. Skupiny pridáte pomocou usermod -aG. SELinux pridáva ďalšiu vrstvu popri oprávneniach z tejto lekcie: súbor so správnymi oprávneniami môže byť aj tak odmietnutý, ak má nesprávny SELinux štítok (ls -Z ho zobrazí).

Zhrnutie

  • Každý používateľ má UID; root (0) smie všetko, služby bežia pod vlastnými systémovými používateľmi bez shellu.
  • Používatelia sú v /etc/passwd, haše hesiel v /etc/shadow. Používateľov vytvárajte pomocou adduser a skupiny pridávajte pomocou usermod -aG.
  • ls -l zobrazuje typ, oprávnenia vlastníka, skupiny a ostatných, a potom vlastníka a skupinu. Pri priečinku znamená x vstup a w vytváranie a mazanie súborov.
  • Bežné čísla: 644 a 755 pre verejné, 640 pre konfiguráciu s tajnými údajmi, 600 a 700 pre súkromné. Nikdy 777.
  • Na nastavenie oprávnení pre celý strom použite find; dávajte pozor na súbory so setuid.

Kvíz

1. Čo znamená -rw-r----- pri súbore s vlastníkom anna a skupinou www-data?



2. Čo sa stane, ak má priečinok oprávnenia drw-r--r-- (teda nikde x)?



3. Spustíte usermod -G www-data anna (bez -a). Aký je následok?



4. Plugin nemôže zapisovať do /var/www/example.com/uploads. Aké je najlepšie riešenie?



5. Prečo nginx beží pod používateľom www-data a nie pod rootom?



Úloha

Úloha Z3.1: Čítanie oprávnení. Otvorte vzorový súbor rechten-1.txt: výstup príkazu id pre troch používateľov a príkazu ls -l vo webovom priečinku. Pri každej otázke odpovedzte, kto čo smie (napríklad: "môže webový server meniť config.php?", "ktorý súbor má príliš široké oprávnenia?", "aké číslo zodpovedá .env?"). Program porovná vaše odpovede s pevným kľúčom a pri každej otázke vysvetlí prečo.

Úloha Z3.1: Čítanie oprávnení

Súbor k tejto úlohe: rechten-1.txt










Čo vyplníte a čo nájdeme, neukladáme. Váš prehliadač si pamätá vaše odpovede a to, či ste úlohu splnili. Po prihlásení si v sekcii Moje kurzy uchovávame iba to, že úloha bola (takmer) správne vyriešená; aj to tam môžete odstrániť.

Ďalšie čítanie

Postupy v týchto článkoch platia pre hostingové balíky a VPS od WebOké; u iných poskytovateľov to funguje podobne.

Chvíľu strpenia…

Nastavte svoje domény

Pri každej doméne nastavte nameservery, prepojenie s hostingom a to, kto bude jej vlastníkom.

Načítavajú sa vaše domény…