Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Informace
Přístupová práva
14. března 2002, 00.00 | Minule jsme si ukázali, co kterému uživateli patří a jak; dnes se povídáme na to, jakým způsobem systém hlídá a vynucuje, aby nikdo "nedělal co nemá".
Minule jsme si ukázali, co kterému uživateli patří a jak; dnes se povídáme na to, jakým způsobem systém hlídá a vynucuje, aby nikdo "nedělal co nemá".
R, w, x...
Přístupová práva jsou reprezentována trojicí přepínačů: prvnímu z nich říkáme "r", protože určuje právo čtení (read); druhému "w" pro právo zápisu (write), a třetímu "x" pro právo použití (execute).
Na způsob, jakým systém nalezne tuto trojici přepínačů pro každou konkrétní akci prováděnou každým konkrétním programem, se podíváme za chvilku; teď budeme chvilku předpokládat, že už přepínače máme, a vysvětlíme si jejich význam.
Soubory
Nejjednodušší to je s obyčejnými soubory: je-li k dispozici přepínač "r", smíme číst obsah souboru (třeba příkazem shellu cat, nebo z programu pomocí standardní knihovní funkce fread). Pokud přepínač "r" k dispozici není, jakýkoli příkaz nebo služba, jež by se pokusily jakkoli číst obsah souboru, skončí chybou a nic nepřečtou.
Podobně je tomu s přepínačem "w": je-li k dispozici, můžeme obsah souboru měnit třeba pomocí knihovní služby fwrite; jestliže však právo "w" nemáme, skončí jakýkoli pokus změnit obsah souboru chybou, a obsah souboru se samozřejmě nezmění.
Přece jen je ale s přepínačem "w" určitá komplikace: začátečníci, zmateni atributy souborů např. v MS DOSu (nebo, to se ví, v Mac OS Classic), často předpokládají, že nemáme-li k dispozici právo "w", nesmíme soubor mazat. To je samozřejmě úplný nesmysl: pročpak by tomu tak mělo být?!? Nemáme-li "w", nesmíme měnit obsah souboru; protože při rušení souboru se jeho obsah nijak nemění, mazat klidně můžeme!
Začátečník by jistě mohl namítnout, že se obsah sice nemění, ale zanikne; jenomže to právě ve slušném filesystému v obecném případě není pravda. Pokud si ještě pořád myslíte, že ano, přečtěte si znovu pátý díl našeho seriálu, a zvláště se soustřeďte na hardlinky!
S přepínačem "x" to je i není jednoduché: máme-li jej k dispozici, můžeme soubor použít; jestliže jej nemáme, soubor použít nemůžeme. To je samozřejmé a prosté, jenže... co to znamená "použít soubor"? Inu, u souborů, jenž obsahují programy (a mají tedy speciální formát, který se mimochodem nazývá Mach-O), je to jasné — ty se prostě spustí. Textové soubory se "spouští" také, a to tak, že se předají shellu jako seznam příkazů, jež má shell provést (tj. skript). Později si ukážeme, že je možné dokonce předepsat jaký shell se má použít, takže klidně můžeme třeba připravit textový soubor s přepínačem "x", tj. "spustitelný program", který bude obsahovat jen odkaz na "shell" awk, a odpovídající skript...
Uvědomme si, o kolik lepší možnosti zabezpečení dávají unixová přístupová práva oproti jednodušším systémům: můžeme např. nastavit práva k souboru, obsahujícímu program, na samotné "x". Uživatel pak může takový program volně používat; nemůže jej ale číst — a tedy ani studovat a "cracknout"!
Složky
Na první pohled je způsob, jímž se interpretují bity "r", "w" a "x" pro práci se složkami, trochu komplikovaný. Ve skutečnosti tomu tak ale není: stačí si jen uvědomit, že složka vlastně není nic jiného, než soubor, obsahující jména vnořených souborů a složek — a význam přístupových práv se stane naprosto jasným.
Jestliže tedy přepínač "r" dovoluje čtení, znamená to, že si smíme "přečíst obsah složky" — jinými slovy, můžeme zjistit, které objekty složka obsahuje. Pokud právo "r" nemáme, obsah složky číst nesmíme; neexistuje tedy zůsob, jak zjistit, co složka obsahuje: příkaz ls (stejně jako všechny ostatní způsoby, jak zjistit obsah složky) prostě vrátí chybu.
Přepínač "w" dovoluje změnu, v našem případě tedy změnu složky samotné. Kdy se mění složka (je-li "souborem, obsahujícím jména vnořených souborů a složek")? Samozřejmě, kdykoli, když bychom chtěli některý z objektů, jež ve složce leží, přejmenovat či smazat, nebo kdybychom do složky chtěli přidat nový objekt. To jsou tedy přesně akce, jež nesmíme dělat nad objekty ve složce, pro niž nemáme právo "w".
Na první pohled asi nejzáhadnější bude přepínač "x": jakýpak může mít smysl "použít" složku? Ale samozřejmý: používáme ji přece pro přístup k objektům, které leží uvnitř! Máme-li tedy k dispozici přepínač "x", můžeme do složky zapsat nový soubor, můžeme otevřít soubor, který už ve složce leží... pokud ovšem nemáme zároveň "r", nemůžeme vypsat obsah složky. Podívejte se na následující příklad (pro výpis obsahu složky používáme "echo qqq/*" namísto ls, protože příkaz ls přistupuje nejen ke složce, ale i k souborům unvitř ní):
103 /tmp> mkdir qqq
104 /tmp> echo "a" > qqq/a
105 /tmp> echo "b" > qqq/b
106 /tmp> echo qqq/*
qqq/a qqq/b
107 /tmp> chmod u-r qqq # u složky qqq zrušíme bit "r"
108 /tmp> echo "c" > qqq/c
109 /tmp> cat qqq/a
a
110 /tmp> echo qqq/*
zsh: no matches found: qqq/*
111 /tmp> chmod u+r-x qqq # nastavíme "r", zrušíme "x"
112 /tmp> echo "d" > qqq/d
zsh: permission denied: qqq/d
113 /tmp> cat qqq/a
cat: qqq/a: Permission denied
114 /tmp> echo qqq/*
qqq/a qqq/b qqq/c
115 /tmp>
Rwx nestačí, máme ještě s a t!
Přepínače "r", "w" a "x" tak, jak jsme je popsali, jsou sice velmi silné, ale přece jen nestačí pokrýt všechny situace, se kterými se v moderních operačních systémech můžeme setkat. Proto existují trochu speciální přepínače "s" a "t".
Přepínač "s" (Setuid) je speciální alternativa "x", jež má význam pouze pro spustitelné soubory. Říká nejen "můžeš tento soubor použít (spustit)", ale navíc "já ti k tomu propůjčuji svá práva". Typickým příkladem jsou systémové programy, jež musí mít přístup k systémovým datům, ale spouští je běžně obyčejný uživatel. Takový soubor pak může spustit kdokoli; za běhu však program má práva vlastníka souboru, bez ohledu na to, kdo jej spustil.
Přepínač "t" (sTicky) je také speciální alternativa "x", jež naopak má (v Mac OS X) smysl jen pro složky, a oproti "x" znamená určité omezení: značí, že smazat soubor je možné jen pod podmínkou, že ten, kdo jej chce smazat, je buď vlastníkem daného souboru, nebo vlastníkem složky (a samozřejmě má právo "w").
Díky sticky bitu je možné pracovat se složkami, do kterých sice může zapsat kdokoli cokoli se mu zachce a smazat to po sobě, avšak uživatelé si v nich nemohou soubory rušit navzájem. Je zřejmé, že to je ideální pro různé dočasné soubory ve sdílených složkách, a skutečně standardní složka "/tmp/" sticky bit používá.
Příště...
... si ukážeme, jak se vlastně přístupová práva určují, tj. kde se pro konkrétní operaci konkrétního programu vezme trojice hodnot "r", "w" a "x" (případně "s" nebo "t").
Obsah seriálu (více o seriálu):
- Obcování s ďáblem
- Obcování s ďáblem 2 - základy
- Obcování s ďáblem 3 - Práce se soubory
- Obcování s ďáblem 4 - Další práce se soubory
- Obcování s ďáblem 5 - Stále soubory, hlavně linky
- Obcování s ďáblem 6: Pár zbývajících drobností
- Obcování s ďáblem 7: Samá voda, přihořívá, hoří!
- Obcování s ďáblem 8: Jak se do shellu volá, tak se program ozývá
- Obcování s ďáblem 9: Nové finty na programy
- Obcování s ďáblem 10: Do fronty, pánové, do fronty!
- Obcování s ďáblem 11: Standardní vstup a výstup
- Obcování s ďáblem 13: Další triky
- Obcování s ďáblem 14: Vyšší škola hledání souborů
- Obcování s ďáblem 15: Příkaz find stokrát jinak
- Obcování s ďáblem 16: Co se ještě dá uvařit z příkazu find
- Obcování s ďáblem 17: Regulární výrazy
- Obcování s ďáblem 18: Speciální regulární výrazy
- Obcování s ďáblem 19: Skládání regulárních výrazů
- Obcování s ďáblem 20: Regulární výrazy se zpětnými odkazy
- Obcování s ďáblem 21:K čemu je dobrý grep...
- Zázraky ihned, nemožné na počkání: sed
- Obcování s ďáblem - další finty s příkazem sed
- Rozsáhlejší příklad se sedem
- Obcování s ďáblem: Další kouzla, aneb awk
- Awk a proměnné
- Obcování s ďáblem 27: Awk a výrazy
- Obcování s ďáblem: Awk a funkce
- Awk a příkazy
- Co je to vlastně "uživatel"?
- Vlastnictví objektů
- Přístupová práva
- Vlastník, skupina, ostatní...
- Jak je to se skupinami?
- Skupiny a uživatelé
- Scripty
- Komentáře, a volba shellu
- Pro skript může být shell cokoli!
- Shellové skripty a argumenty
- Skripty a proměnné: aritmetika
- Proměnné shellu, "dědění" hodnot
- Práce s proměnnými
- Práce se jmény souborů
- Pole hodnot
- Další triky kolem polí...
- Standardní proměnné shellu
- Základní příkazy pro skripty
- Příkaz if
- Speciální podmínkové příkazy
- Podmínky pro práci se soubory
- Jednoduchý cyklus
- Příkaz for a pomocné příkazy break a continue
- Příkaz case
- Příkazy exit a select
- Rejstřík a přehled
- Procesy
- Informace o procesech
- Další klíčová slova pro příkaz ps
- Příkaz ps: několik praktických přepínačů
- A k čemu že je "ps" dobré?
- Copak procesor, s pamětí je to horší
- Virtuální paměť
- A ještě jednou virtuální paměť
- Zpět k příkazu ps
- Skutečný žrout paměti
- Ještě jednou top
- Doplněk k topu: vm_stat
- Co to tedy všechno znamená?
- Nevychází nám dal a má dáti?
- Kam se stránky ukládají?
- Změna odkládacího disku
- Změna odkládacího disku / fstab
- Poslední poznámka k fstab
- A jak to je se soubory?
- Co vlastně příkaz lsof vypisuje?
- Příkaz lsof a obsah sloupce NAME
- SIPS - Terminál není jen pro nadšence UNIXu
- Tak nám zabili NetInfo, paní Müllerová