Sticky bit
From Wikipedia, the free encyclopedia
Remove ads
Ve výpočetní technice, se termínem sticky bit rozumí jeden ze speciálních příznaků přístupových oprávnění v UNIXu, které mohou být přiřazeny souborům a adresářům.
Historie
Sticky bit byl představen s příchodem páté edice Unixu pro použití ve spojitosti se spustitelnými soubory. Když byl nastaven, operační systém ponechal textový segment programu ve swapovacím prostoru i po skončení běhu procesu. Toto urychlilo všechna další spuštění tím, že program mohl být kernelem přesunut ze swapovací oblastí do oblasti paměti jedinou operací. Díky tomu, často používané programy, jako třeba textové editory, se mohly spouštět výrazně rychleji. Používání sticky bitu ale disponovalo neduhem, jenž se projevoval v momentě, kdy bylo potřeba nahrát novou verzi tohoto spustitelného souboru (například ho aktualizovat). Aby tato modifikace byla úspěšná a ihned funkční, bylo třeba odebrat sticky bit z onoho souboru, spustit program a následně ho vypnout (za účelem vyprázdnění cache), teprve nyní přehrát starý soubor novým a nakonec obnovit sticky bit.
V současnosti se toto chování uplatňuje u HP-UX, NetBSD, a UnixWare. Zdá se, že Solaris od tohoto opustil v roce 2005. BSD ve verzi 4.4-Lite zachoval původní chování sticky bitu, avšak bylo následně odebráno z OpenBSD (od verze 3.7) a FreeBSD (od verze 2.2.1). V NetBSD bylo ponecháno. Toto tradiční chování nikdy nebylo implementováno žádnou z verzí Linuxu.
Remove ads
Užití
Dnes se funkcionalita sticky bitu nejčastější využívá na adresáře. Pokud je na nějakém nastaven, pouze vlastník objektu, vlastník adresáře, nebo správce počítače může přejmenovávat či mazat položky v tomto adresáři. Bez nastaveného sticky bitu, kdokoli s právy zápisu a spuštění na adresáři, by mohl přejmenovávat či mazat položky v něm obsažené, nehledě na to, kdo je jejich vlastníkem. Typicky se tento příznak používá pro adresář /tmp
, aby nedocházelo k tomu, že běžní uživatelé budou mazat či přesouvat soubory ostatních uživatelů. Tuto funkcionalitu představil v roce 1986 systém 4.3BSD a dnes je k nalezení v nejmodernějších unixových systémech.
Navíc, Solaris (od Solaris 2.5) definoval speciální chování v případě, že je sticky bit nastaven na nespustitelných souborech: když je k takovým souborům přistoupeno, nejsou kernelem ukládány do Cache. Této vlastnosti se může příležitostně využívat pro testování výkonu.
Sticky bit je nastavován rovněž automounterem, aby indikoval, že soubor doposud nebyl namountovan. To umožňuje programům jako ls ignorovat nenamountované vzdálené soubory.
Remove ads
Příklady
Sticky bit může být nastaven použitím příkazu chmod, a to v jeho oktalovém tvaru 1000 nebo jeho symbolem t (s je již zarezervováno pro setuid bit). Například, abychom nastavili tento bit na adresář /usr/local/tmp
, bude potřeba napsat chmod +t /usr/local/tmp
. Nebo, pro ujištění, že adresář tmp
bude mít standardní oprávnění, lze napsat chmod 1777 /usr/local/tmp
.
Pro odebrání, použijeme chmod -t /usr/local/tmp
nebo chmod 0777 /usr/local/tmp
(použití numerického módu rovněž nastaví standardní oprávnění na adresář tmp
.
V Unixovém symbolickém zápisu přístupových oprávnění, je sticky bit reprezentován písmenem t na posledním místě. Například na Solaris 8, se /tmp
adresář, který ve výchozím stavu má sticky bit nastaven, ukazuje ve výpisu jako:
$ ls -ld /tmp
drwxrwxrwt 4 root sys 485 Nov 10 06:01 /tmp
Pokud je sticky bit nastaven na souboru či adresáři, jenž nemá povolené práva spuštění pro ostatní kategorii uživatelů (tedy uživatele a skupinu, která není vlastníkem souboru), je indikován zápisem s velkým T:
$ ls -l test
-rw-r--r-- 1 root other 0 Nov 10 12:57 test
$ chmod +t test; ls -l test
-rw-r--r-T 1 root other 0 Nov 10 12:57 test
Související články
Reference
V tomto článku byl použit překlad textu z článku Sticky bit na anglické Wikipedii.
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads