Od svého zdrodu počátkem 90. let byl Linux multiuživatelským systémem, takže na něm mohlo současně pracovat více uživatelů. Uživatelé se musí před začátkem práce do systému přihlási (přilogovat) zadáním svého uživatelského jména a hesla. Každý uživatel má vlastní uživatelské jméno a heslo. Tento způsob zaručuje, že každý uživatel bude pracovat jen se svými daty. Normální uživatelé také postrádají řadu práv, jako je možnost instalovat nové programy nebo měnit nastavení celého systému. Tato práva má jediný uživatel—superuživatel nebo-li root. Díky tomuto uspořádání je systém bezpečný před nechtěnými změnamy systémových nastavení nebo nepříjemnostmi typu trojských koní. Aby to platilo i o vašem systému, přihlašujte se jako superuživatel pouze pokud je to nezbytně nutné.
V zásadě má každý soubor linuxového systému vlastníka a vlastnickou skupinu. Jak vlastníkům, členům vlastnických skupin tak všem ostatním lze povolit práva k čtení, zápisu a vykonání souboru.
Skupinu lze v tomto případě definovat jako skupinu uživatelů, kteří mají stejná práva. Například skupina pracující na projektu project3. Každý uživatel linuxového systému je člen alespoň jedné skupiny, obvykle users.
V systému můžete mít mnoho různých skupin, ale zařadit vás do nich může pouze uživatel root. Skupiny, jejichž jste členem zjistíte jednoduše zadáním příkazu groups.
The organization of permissions in the file system differs for files and directories. Přístupová práva souboru zobrazíte příkazem ls -l. příklad výstupu:
-rw-r----- 1 tux project3 14197 Jun 21 15:03 Roadmap
Podle údaje ve třetím sloupci patří soubor uživateli tux. Přiřazen je do skupiny project3. Abychom zjistili přístupová práva souboru
Roadmap, musíme podrobněji prozkoumat první sloupec.
- | rw- | r-- | --- |
Typ | Práva uživatele | Práva skupiny | Práva ostatních |
První položka udává typ souboru. Pomlčka (–)
říká, že jde o soubor. V systému můžete narazit taklé na adresář (d), odkaz
(l), blokové zařízení (b) nebo také znakové zařžízení.
Další položky jsou seskupeny do skupin po třech. První trojice popisuje práva vlastníka, druhá trojice práva skupiny a třetí práva všech ostatních.
V každé trojici první položka informuje o právech ke čtení (r), druhá o právech k zápisu (w) a třetí o právech k vykonání souboru (x), pokud jde o spustitelnýsoubor. Jestliže položka obsahuje –, nejsou udělena žádná práva.
V našem případě má vlastník tux souboru Roadmap práva ke čtení (r) a zápisu (w), ale již ne k vykonání (x). Členové vlastnické skupiny project3 mohou soubor pouze číst. Ostatní uživatelé nemají k souboru žádný přístup. Pokud byste chtěli přístupová práva rozšířit, můžete použít ACLs (Access Control Lists) viz
20.2.6 – „ACLs (Access Control Lists)“.
Adresář je označen ve výstupu příkazu ls jako
d. Význam přístupových práv u adresářů je trošku odlišný než u souborů.
drwxrwxr-x 1 tux project3 35 Jun 21 15:15 ProjectData
Ve výše uvedeném příkladě jsou vlastník
(tux) a vlastnická skupina
(project3) adresáře
ProjectData zřejmí. Na rozdíl od souborů však práva ke čtení (r) neznamenají čtení adresáře, ale právo k zobrazení jeho obsahu tj. výpis jmen a vlastností jednotlivých souborů, ale již ne jejich obsahu. Práva k zápisu (w) dávají právo k vytvoření nového souboru v adresáři. práva k vykonání (x) dávají právo do adresáře vstoupit. Výše uvedený příklad tedy znamená, že uživatel tux stejně jako členové skupiny
project3 mohou vstoupit do adresáře
ProjectData (x), prohlížet si obsah (r) a vytvářet zde nové soubory (w). Ostatní uživatelé mají trošku méně práv, movou do adresáře vstupovat (x) a zjistit jeho obsah (r), ale již nemají práva zde vytvářet soubory (w).
Přístupová práva souboru může změnit jeho vlastník a samozřejmě také root.
chmod
Přístupová práva jednoho nebo více souborů můžete změnit pomocí následujících parametrů. The parameters form different categories:
uživatelské
u (user)—vlastník
g (group)—vlastnická skupina
o (others) —
ostatní (bez udání parametrů se změna aplikuje na všechny kategorie)
znak pro smazání (–), nastavení
(=) nebo vložení (+)
zkratky
r—čtení (read)
w—zápis (write)
x—vykonání (execute)
jméno souboru nebo jména oddělená mezerou
Například pokud se uživatel tux
z našeho příkladu rozhodne dát práva k zápisu do adresáře ProjectData, i ostatním uživatelům
(w), musí zadat příkaz
chmod o+w ProjectData.
Pokud by však chtěl naopak všem mimo sebe práva k zápisu odebrat, napíše chmod go-w
ProjectData. Všem uživatelům zakáže zápis do ProjectData příkazem chmod -w
ProjectData. Po zadání tohoto příkazu nebude mít právo vytvářet v adresáři nové soubory ani vlastník tohoto adresáře.
Další důležitý příkaz v systému správy přístupových práva jsou chown
(change owner) a chgrp (change group).
Příkazem chown lze převést vlastnictví na jiného uživatele. Tuto operaci může provést pouze uživatel root.
Předpokládejme, že soubor Roadmap z našeho příkladu by již neměl patřit uživateli tux, ale vlastníkem by měl být uživatel geeko. Správce systému root tedy zadá příkaz chown
geeko Roadmap.
Příkaz chgrp mění vlastnickou skupinu.
Vlastník souboru musí být současně členem skupiny. V tomto případě tux může změnit vlastnickou skupinu souboru ProjectData na project4 příkazem chgrp project4 ProjectData pouize pokud je členm i této skupiny.
V řadě případů mohou být přístupová práva příliš omezující. Linux má proto pro určité situace prostředky k dočasné změně uživatele a skupiny. Například program cdrecord vyžaduje k zápisu na CD za obvyklých podmínek rootovská práva, což by ale vedlo k tomu, že by normální uživatelé nemohli vypalovat, protože je příliš nebezpečná jim taková práva dát. Řešením tohoto problému je setuid. setuid (set user ID) je zvláštní atribut souboru, který dovoluje, aby systém soubor spustil pod určitým uživatelským ID. Podívejme se na příkaz cdrecord:
-rwxr-x--- 1 root root 281356 2002-10-08 21:30 /usr/bin/cdrecord
nastavme setuid bit příkazem chmod u+s
/usr/bin/cdrecord. Pak nastavme vlastnickou skupinu cdrecord
na users příkazem
chgrp users /usr/bin/cdrecord.
Přístupová práva se změní následujícím způsobem:
-rws--x--- 1 root users 281356 2002-10-08 21:30 /usr/bin/cdrecord
Nyní mohou program využívat všichni uživatelé skupiny
users. program je vykonáván pod uživatelem root.
![]() | Varování |
|---|---|
Nastavením setuid bitu samozřejmě riskujete bezpečnost svého systému. nenastavujte jej proto bezdůvodně a u programů, u kterých si nejste jistí možnými riziky. | |
Podobný příznak jako setuid existuje i pro skupiny—jedná se o setgid. Program s nastaveným setgid se spustí pod určitým ID skupiny bez ohledu na skupinu uživatele, který jej spustil. Například:
drwxrwxr-- 2 root archive 48 Nov 19 17:12 backup
Nastavme setuid bpříkazem chmod g+s /test. Získáme následující přístupová práva:
drwxrwxr-- 2 root archive 48 Nov 19 17:12 backup
K dispozici je také sticky
bit. Chová se různě podle toho, zda jde o soubor nebo adresář. V případě souboru s nastaveným sticky bitem se soubor nahraje do RAM, aby nebylo nutné při jeho každém použití sahat na disk. Tento příznak se používal v dobách nepříliš rychlých disků a dnes je již používán velmi vzádcně. V případě nastavení u adresáře zabraňuje mazání souborů jiných uživatelů. Typickým příkladem jsou /tmp a /var/tmp:
drwxrwxrwt 2 root root 1160 2002-11-19 17:15 /tmp
Tradiční unixový systém přístupových práv lze rozšířit pomocí ACLs (access control lists).
Existenci rozšířených přístupových práv lze zjistit jednoduše příkazem ls -l:
-rw-r--r--+ 1 tux project3 14197 Jun 21 15:03 Roadmap
Výstup ls nebosahuje nijak zvlášť velké odlišnost od výstupu tohoto příkazu na systému bez ACLs. Roadmap je vlastněn uživatelem tux ze skupiny project3. tux má práve ke čtení i zápisu a skupina i ostatní mohou tento soubor číst. jediný rozdíl představuje znak +.
Přesný výpis práv získáte příkazem getfacl Roadmap:
# file: Roadmap # owner: tux # group: project3 user::rw- user:jane:rw- effective: r-- group::r-- group:djungle:rw- effective: r-- mask::r-- other::---
první tři řádky obsahují stejné infromace jako v případě normálního ls -l. Řádky 4 až 9 obsahují ACLs položky. V našem případě je přístup k záspisu a čtení udělen také uživateli jane (řádky 4 a 5). Konveční systém přístupových práv tedy zde ACLs rozšiřují o přidání dalšího uživatele. Podobně jsou zde rozšířena i práva skupiny djungle (řádka 6). Položka masky na řádce 8 redukuje efektivní přístupová práva uživatele jane a skupiny djungle pouze na práva ke čtení. Ostatní uživatelé nebo skupiny nemají přístupová práva k souboru žádná (řádka 9).
Výše uvedené informace jsou jen velmi povrchni, pokud vás ACLs zajímají více, prostudujte si příslušnou kapitolu v Příručce správce systému.