Práva v Linuxu
Podíváme se spolu, jak fungují práva na Linuxu, proč je dobré se vyznat v číselném označení práv a naučíte se práva měnit. Ukážeme názorné příklady, na které často narazíte třeba ve VPS Centru.
Uživatelé
Uživatelé a skupiny jsou v Linuxu reprezentovány číselnými identifikátory UID (číslo uživatele) a GID (číslo skupiny).
Každý uživatel v Linuxu má:
- username
- password
- domovský adresář v /home
- přiřazená práva
UID
Jde o číslo uživatele, které používá pro rozlišení uživatelů operační systém.
- 0 je vyhrazeno pro správce systému (root).
- 0-500 jsou systémové účty. Např.: MySQL server…
- 500 a výše jsou určena pro běžné uživatele.
Skupiny
Každý uživatel je také členem alespoň jedné skupiny. Členství v jednotlivých skupinách dává uživatelům specifická práva. Můžete si také vytvořit vlastní uživatele a skupiny.
Výpis všech skupin: cat /etc/group:
(část výpisu skupin)
GID
Jde o číslo skupiny, které obsahují práva pro uživatele.
- 0 – je vyhraženo pro root uživatele
- 1-99 jsou názvy skupin pro systémové aplikace
- 100+ jsou pro běžné uživatele
Číselné kódy
První pozice je vyhrazena vlastníkovi, druhá skupině a třetí ostatním.
Jejich práva jde vyjádřit čísly:
- r (read) = 4
- w (write) = 2
- x (execute) = 1
- – (zakázat přístup) = 0
Jednotlivé oprávnění je pak součtem..
Např. zapisuje a čte jen vlastník, ostatní čtou a zvenčí žádná práva nejsou:
- Vlastník: (4+2+0)
- Skupina: (4+0+0)
- Ostatní: (0+0+0)
Tedy 640
Příklady:
číslo | vlastník | skupina | svět | |
777 | rwx (4+2+1) | rwx (4+2+1) | rwx (4+2+1) | Všichni mají právo číst, zapisovat i spouštět |
770 | rwx (4+2+1) | rwx (4+2+1) | —(0+0+0) | Vlastník a ostatní uživatele mohou číst, zapisovat i spouštět. Svět ale nic |
622 | rw-(4+2+0) | -w- (0+2+0) | -w- (0+2+0) | Vlastník může číst a zapisovat. Ostatní jen číst. |
Jak je to na našich serverech
Důležití uživatelé
- root: je nejvyšší administrátorský uživatel.
- www-data: je uživatel, který reprezentuje webserver a je mostem mezi uživatelem – serverem a prohlížečem.
- ostatní: existuje ještě celá řada uživatelských účtu: jako vmail pro přístup k mailům, proftpd pro přístup k FTP napříč doménami, mysql jako účet pro databázový server atp. Plný výpis uživatelů zobrazíte příkazem: cat /etc/passwd
Typickým příkladem je, že pokud vytvoříte složku pod uživatelem root, nebude mít uživatel www-data dostatečná práva a z toho důvodu nemůže přečíst soubory, které máte na serveru.
Jak práva měnit?
Jednoduchá, zato často velmi pomalá cesta je pomocí WinSCP. Stačí se do aplikace přihlásit jako root (SFTP) a pravým tlačítkem vyvolat možnosti:
Přes WinSCP doporučujeme změny provádět pouze pokud to děláte pro pár souborů. Pokud potřebujete změnit práva většímu počtu souborů, tak doporučujeme využít Linuxové příkazy chown + chmod. (níže)
Pokud zaškrtnete políčko, že chcete změnit práva rekurzivně, tak se změní práva všem souborům a složkám uvnitř této složky a to ve je Windows proces který trvá dlouho dobu.
Pokud nechcete vypisovat adresáře do příkazu, můžete použít také Midnight Commander, který je už na našich serverech předinstalovaný. Pouští se příkazem mc.
chmod
slouží pro změnu práv nad soubory. Práva souborů může měnit pouze jeho vlastník nebo root.
Tady je nutné se přihlásit přímo na SSH. Buďto opět přes WinScp nebo klasicky přes Putty.
Jediným standardizovaným přepínačem příkazu chmod je -R, který slouží k rekurzivní změně práv. To znamená, že práva se změní pro všechny soubory a složky, které se v složce nachází.
chmod 721 /www/hosting/domena/www/robots.txt
(vlastník může číst, zapisovat i spouštět, skupina má povolení pouze k zápisu a ostatní jen ke spuštění souboru robots.txt)
chown
Program chown slouží ke změně vlastníka souborů a adresářů. Buďtě ovšem opatrný, protože snadno server i rozbijete.
Například příkazem chown -R nad lokací složky, kde jste to vůbec nechtěli. (např. chown -R /root) by změnil práva každému souboru a složce a znemožnil by operačnímu systému pracovat. Většinou jediná zachrána je pak reinstalace celého systému.
Jaké příkazy s našim VPS Centrem často využijete:
změna vlastníka domény na www-data (nejčastější) |
chown -R www-data:www-data /www/hosting/vase-domena.cz/ |
změna pouze skupiny | chown :www-data /www/hosting/vase-domena.cz/www/ |
změna pouze vlastníka |
chown www-data /www/hosting/vase-domena.cz/www/ |
nastavení čtení a zápisu vlastníkovi, ostatním nic | chmod 600 /www/hosting/vase-domena.cz/devel/ |