Vlastník, skupina, ostatní... - MujMAC.cz - Apple, Mac OS X, Apple iPod

Odběr fotomagazínu

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:

Soutěž

Sponzorem soutěže je:

IDIF

 

Odkud pochází fotografka Anne Erhard?

V dnešní soutěži hrajeme o:

Seriály

Více seriálů



Informace

Vlastník, skupina, ostatní...

21. března 2002, 00.00 | Minule jsme si ukázali, že práva jsou vždy určena trojicí přepínačů "r", "w" a "x" (z nichž poslední může kromě hodnot "ano" a "ne" také mít speciální hodnoty "s" pro spustitelné soubory nebo "t" pro složky).

Minule jsme si ukázali, že práva jsou vždy určena trojicí přepínačů "r", "w" a "x" (z nichž poslední může kromě hodnot "ano" a "ne" také mít speciální hodnoty "s" pro spustitelné soubory nebo "t" pro složky).

Víme už, jaká skutečná práva se od hodnot těchto přepínačů dají odvodit pro soubory i pro složky; dosud jsme si ale neřekli, kde systém hodnoty těchto přepínačů pro danou operaci vezme. Na to se podíváme dnes.

Kdy je vlastník efektivní?

Už jsme se zmínili o tom, že kromě všech objektů v systému souborů mají de facto vlastníka také všechny běžící programy: je jím vždy ten uživatel, v rámci jehož konta byl program spuštěn, a systém tuto informaci pro všechny běžící programy poctivě udržuje.

Minule jsme se však zmínili o přepínači "s", který zajistí, že program může běžet s právy nikoli toho, kdo jej spustil, ale s právy toho, komu patří soubor, ve kterém je kód programu uložen. To je zajištěno tak, že systém kromě vlastníka běžícího programu zná ještě tzv. efektivního vlastníka (effective UID). To je ten, jehož práva program má: u programů s přepínačem "x" ten, kdo program spustil; vlastník souboru u programů s přepínačem "s".

Třikrát tři je devět

Každý objekt v systému souborů s sebou nese kromě informace o vlastníkovi, se kterou jsme se seznámili předminule, také tři trojice bitů, representujících přístupová práva: první se vztahuje k vlastníkovi samotnému, druhá ke skupině (skupinami se budeme zabývat později, protože se používají poměrně málokdy, a teď by nám zbytečně komplikovaly situaci), a třetí ke "všem ostatním".

Způsob, jakým systém získá trojici přepínačů, určující práva programu provést určitou operaci, je tedy poměrně jednoduchý:

  • porovná efektivního vlastníka běžícího programu s vlastníkem objektu. Jsou-li totožní, použije první trojici přepínačů;
  • způsobem, na který se podíváme později, ověří skupinu — pokud je efektivní vlastník programu v požadované skupině, použije druhou trojici přepínačů;
  • jinak použije třetí trojici.

Zbytek je už zřejmý...

Zobrazení přístupových práv

Přístupová práva k objektům zobrazuje příkaz ls jako řadu devíti písmenek: tři prvá jsou "r", "w" a "x" vlastníka, tři následující "r", "w" a "x" skupiny, a tři poslední "r", "w" a "x" pro všechny ostatní. Jestliže dané právo je k dispozici, zobrazí se odpovídající písmenko "r", "w" nebo "x"; není-li, zobrazí se na jeho místě pomlčka. Speciální práva "s" a "t" indikuje přímo písmeno "s" nebo "t" na místě odpovídajícího "x".

"Písmenka" přímo navazují na znak, určující typ objektu; písmen v řadě je tedy dohromady deset: první určuje typ, následujících devět práva. Ukažme si pár typických příkladů:

22 ~> ls -l
total 304
drwxr-xr-x   4 ocs  staff     92 Feb  7 21:11 Applications/
-rw-r--r--   1 ocs  staff  17109 Jan  6 18:00 Contacts.export
drwx------  22 ocs  staff    704 Jan 30 17:23 Documents/
-rw-------   1 ocs  staff    640 Feb  5 04:32 Saved.channel
-rwx------   1 ocs  staff   1560 Feb  7 20:14 a.out*
...
23 ~> 

Složka "Applications" je k dispozici komukoli — všichni mají práva "r" a "x". Jen vlastník (jak vidíme v třetím sloupci, uživatel "ocs") však smí obsah složky měnit. Znak "d" na začátku samozřejmě ukazuje, že jde o složku. Obdobný případ se souborem je "Contacts.export": číst jeho obsah smí kdokoli, ale jen vlastník jej může měnit.

Jinak je tomu se složkou "Documents" a se souborem "Saved.channel": ty jsou přístupné pouze vlastníkovi. Nikdo jiný nesmí složku či soubor ani číst, ani měnit, ani žádným jiným způsobem používat.

Velmi podobně jsou nastavena práva souboru "a.out"; opět nikdo jiný než vlastník nemá žádná práva. Vlastník však tentokrát má i právo "x", protože "a.out" je spustitelný program.

25 ~> ls -l /bin
total 4200
-r-xr-xr-x  2 root  wheel      13728 Sep  3 04:51 [*
-r-xr-xr-x  1 root  wheel      13980 Sep  3 04:58 cat*
...
-r-sr-xr-x  1 root  wheel      24588 Sep  3 04:31 rcp*
...
26 ~> 

Standardní unixové programy smí kdokoli spouštět i číst; nikdo je však nesmí měnit (ani "root", který je jejich vlastníkem — ten ovšem může jako jediný jejich přístupová práva kdykoli změnit).

Program rcp ovšem potřebuje přístup k administrátorským prostředkům; proto má nastaven bit "s" ve skupině práv vlastníka, což znamená, že ať program spustí kdo chce, jeho efektivním vlastníkem bude "root".

26 ~> ls -ld /private/tmp
drwxrwxrwt  15 root  wheel  466 Feb  7 22:27 /private/tmp/
27 ~> 

Sdílená složka "/private/tmp" (my ji známe jako "/tmp", ale to je jen link) dává komukoli plné právo ji číst, používat i měnit. Ale pozor: "sticky" přepínač "t", zobrazený ve skupině práv "ostatních", zamezuje mazání cizích souborů: uvnitř této složky smíme smazat jen to, co jsme tam uložili sami.

Změny práv

Pro změnu práv slouží standardní příkaz chmod. Jeho prvním argumentem je požadované nastavení práv; za ním následuje seznam objektů, jimž se mají práva požadovaným způsobem nastavit.

Příkaz chmod nabízí velmi bohatou paletu možností; my se zde seznámíme opět jen se základním ovládáním. To je ovšem velmi jednoduché: nejprve určíme skupinu nebo skupiny, pro které chceme přepínač změnit; k tomu slouží písmena

  • u ("user"): vlastník objektu;
  • g ("group"): skupina;
  • o ("other"): všichni ostatní;
  • a ("all"): všechny tři skupiny. Písmeno 'a' je ekvivalentní trojici písmen 'ugo'.

Pak zapíšeme znak '+' pro nastavení přepínače, znak '-' pro jeho zrušení. Nakonec přidáme seznam přepínačů, s nimiž chceme pracovat — k tomu použijeme jejich standardní značky "r", "w", "x", "s" a "t". Podívejme se na pár příkladů:

61 /tmp> echo "Test" > test
62 /tmp> chmod a-rwx test ; ls -l test
----------  1 ocs  wheel  5 Feb  7 23:30 test
63 /tmp> chmod uo+rw test ; ls -l test
-rw----rw-  1 ocs  wheel  5 Feb  7 23:30 test
64 /tmp> chmod u+sx test ; ls -l test
-rws---rw-  1 ocs  wheel  5 Feb  7 23:30 test*
65 /tmp> chmod u-s test ; ls -l test
-rwx---rw-  1 ocs  wheel  5 Feb  7 23:30 test*
66 /tmp> chmod u-r,g+rw,o+x test ; ls -l test
--wxrw-rwx  1 ocs  wheel  5 Feb  7 23:30 test*
67 /tmp> 

Za povšimnutí stojí, že přepínač "s" není náhradou "normálního" přepínače "x", ale jeho doplňkem; musíme tedy nastavit oba, jak je vidět na řádku 64. Jestliže pak zrušíme jen "s", "x" zůstane (řádek 65). Řádek 66 ukazuje, jak je možné spojovat více operací dohromady.

S přepínačem "t" pro složky je tomu podobně, jako s přepínačem "s"; jen je trochu matoucí, že ačkoli se přepínač zobrazuje ve skupině "ostatní", musíme jej nastavit pro "vlastníka" nebo "skupinu" — asi nejintuitivnější je jej určovat pro všechny najednou:

67 /tmp> mkdir tdir
68 /tmp> chmod a+t tdir ; ls -ld tdir
drwxr-xr-t  2 ocs  wheel  24 Feb  7 23:32 tdir/
69 /tmp> chmod a-t tdir ; ls -ld tdir
drwxr-xr-x  2 ocs  wheel  24 Feb  7 23:32 tdir/
70 /tmp> 

Mimochodem, stejně jako chown, i chmod rozumí přepínači -R (recursive) a dokáže na jeho základě měnit přístupová práva pro všechny objekty v zadané složkce i ve složkách jí podřízených.

Zbývají už jen skupiny...

Příště dokončíme povídání o systému vlastnictví a přístupových práv Mac OS X tím, že si vysvětlíme jak fungují skupiny, a k čemu tedy je ta prostřední sada tří "písmenek".

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » Informace  

 » Rubriky  » Agregator  

 » Rubriky  » Software  

 

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: