Práva (permissions) jsou další důležitou úlohou víceuživatelského aspektu souborového systému. S jejich pomocí můžete měnit kdo smí číst, zapisovat a spouštět soubory.
Informace o právech jsou ukládána jako čtyři osmičkové číslice, každá specifikuje jinou množinu práv. Jsou to práva pro vlastníka, skupinu a ostatní (world). Čtvrá cifra je použitá k uložení speciálních informací jako je nastavené uživatelské ID, nastavené skupinové ID a "sticky" bit. Osmičkové hodnoty přidělené módům oprávnění jsou (mají též přidělená písmena, která zobrazují programy jako ls a mohou být využívána programem chmod):
Tabulka 9-1. Oktalové (osmičkové) hodnoty práv
| Druh práva Permission Type | Osmičková hodnota | Písmenkové vyjádření |
|---|---|---|
| "sticky" bit | 1 | t |
| nastav ID uživatele | 4 | s |
| nastav ID skupiny | 2 | s |
| čtení | 4 | r |
| zápis | 2 | w |
| spouštění | 1 | x |
Pro každou skupinu práv zadáváte osmičkové hodnotty. Například pokud chcete aby práva skupiny byla "čtení" a "zápis", měli byste pro práva skupiny zadat "6".
Defaultní práva v bashi jsou:
$ ls -l /bin/bash -rwxr-xr-x 1 root bin 477692 Mar 21 19:57 /bin/bash |
Pokud by šlo o adresář, bylo by na místě úvodní pomlčky "d". Dále jsou zobrazeny tři skupiny oprávnění (pro vlastníka, pro skupinu a pro ostatní). Vidíme, že vlastník má právo číst, zapisovat a spouštět (rwx). Skupina smí jenom číst a spouštět (r-x). A rovněž kdokoliv jiný smí pouze číst a spouštět (r-x).
Jak bychom nastavili práva k jinému souboru tak jak to dělá bash? Nejdříve si vytvořme soubor "example":
$ touch /tmp/example $ ls -l /tmp/example -rw-rw-r--- 1 david users 0 Apr 19 11:21 /tmp/example |
Použijeme příkaz chmod(1) (což znamená "change mode" - "změň mód"), kterým nastavíme práva souboru "example". Nastavte osmičková čísla práv, která chcete. Aby vlastník mohl číst, psát a spouštět, měl by mít hodnotu 7. Číst a spouštět by bylo 5. Dejete to dohromady a zadejte to do příkazu chmod:
$ chmod 755 /tmp/example $ ls -l /tmp/example -rwxr-xr-x 1 david users 0 Apr 19 11:21 /tmp/example |
K nastavení zvláštních oprávnění zadáme čísla do prvního sloupce. Například k nastavení ID uživatele a ID skupiny dáme do prvního sloupce "6":
$ chmod 6755 /tmp/example $ ls -l /tmp/example -rwsr-sr-x 1 david users 0 Apr 19 11:21 /tmp/example |
Pokud vás osmičková čísla pletou, můžete místo nich používat písmena. Skupiny oprávnění pro chmod pak vypadají takto:
| Vlastník | u |
| Skupina | g |
| Ostatní | o |
| Všichni zmínění | a |
Abychom dosáhli toho, co nahoře, museli bychom použít několik příkazových řádků:
$ chmod a+rx /tmp/example $ chmod u+w /tmp/example $ chmod ug+s /tmp/example |
Někteří lidé dávají přednost písmenům před číslicemi. Obě cesty vyúsťují do té samé sady oprávnění.
Na několika místech jsme se zmínili o nastavování ID uživatele a ID skupiny. Možná si říkáte, o co jde? Obyčejně, když spustíte program, ten pak pracuje pod vaším uživatelským účtem. To znamená, že má všecha ta oprávnění, která máte vy jako uživatel. Totéž platí pro skupinu. Jestliže spustíte program, vykonává se pod vaší současnou skupinou. S nastaveným oprávněním ID uživatele si můžete vynutit, aby program vždy běžel jako majitel programu (třeba jako "root"). Nastavení ID skupiny je totéž, ale pro skupinu.
Zacházejte s tím opatrně. Nastavení ID uživatele a ID skupiny programům může ve vašem systému otevřít významné bezpečnostní mezery. Pokud často nastavujete ID uživatele programům, které vlastní "root", povolíte každému, aby provozoval tento program stejně jako root. A protože root nemá v systému žádná omezení, můžete si sami představit, jak velký bezpečnostní problém to je. Stručně řečeno, není špatné používat nastavení oprávnění ID uživatele a ID skupiny, ale dělejte to s citem.