20.2. Uživatelé a přístupová práva

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é.

20.2.1. Přístupová práva souborů

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.

Přístupová práva souborů

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)“.

Přístupová práva adresářů

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).

20.2.2. Změna přístupových práv

Změna přístupových práv

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:

  1. 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)

  2. znak pro smazání (), nastavení (=) nebo vložení (+)

  3. zkratky

    • r—čtení (read)

    • w—zápis (write)

    • x—vykonání (execute)

  4. 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.

Změna vlastníka

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.

20.2.3. Nastavení setuid bitu

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.

[Warning]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.

20.2.4. Nastavení setgid bitu

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

20.2.5. Sticky bit

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
  

20.2.6. ACLs (Access Control Lists)

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.


SUSE LINUX Uživatelská příručka 9.3