Jak lepkavý bit funguje?

SUID

lepivý bit aplikovaný na spustitelné programy označující systém, aby zachoval obraz programu v paměti po dokončení programu.

Ale nevím, co je v paměti uloženo. A jak je v tomto případě vidím?

Komentáře

Odpověď

Toto je pravděpodobně jedna z mých nejnepříjemnějších věcí, kterou lidé pokazili pořád. Bit SUID / GUID a sticky-bit jsou dvě zcela odlišné věci.

Pokud uděláte man chmod, můžete si přečíst o SUID a sticky-bitech. Zde je také k dispozici manuálová stránka .

pozadí

výňatek

Písmena rwxXst vyberte bity režimu souboru pro ovlivnění uživatelé: read (r), write (w), execute (or search for directories) (x), execute / search only if the file is a directory or already has execute permission for some user (X), nastavit ID uživatele nebo skupiny při provádění , příznak omezeného odstranění nebo lepivý bit ( t) .

SUID / GUID

Co je výše uvedená stránka snaží se říci, že pozice, kterou bit x zaujímá v rwxrwxrwx pro uživatele osmičkový (1. skupina rwx) a osmičkový soubor (2. skupina rwx) může nabývat dalšího stavu, kdy se x stává s. Pokud k tomu dojde, tento soubor se při spuštění (pokud jde o program a ne pouze o skript prostředí) spustí s oprávněními vlastníka nebo skupiny souboru.

Takže pokud je soubor vlastněn uživatelem root a bit SUID je zapnutý, program poběží jako root. I když jej spustíte jako běžný uživatel. Totéž platí pro bit GUID.

výňatek

SETUID A SETGID BITS

chmod vymaže bit ID skupiny z běžného souboru, pokud ID skupiny souboru neodpovídá efektivnímu ID skupiny uživatele nebo jednomu z doplňkových ID skupiny uživatele, pokud uživatel nemá příslušná oprávnění. Další omezení mohou způsobit ignorování bitů sady ID uživatele a skupiny ID skupiny MODE nebo RFILE. Toto chování závisí na zásadách a funkcích základního systémového volání chmod. Máte-li pochybnosti, zkontrolujte základní chování systému.

chmod zachová bity set-user-ID a set-group-ID v adresáři, pokud výslovně neurčíte jinak. Bity můžete nastavit nebo vymazat pomocí symbolických režimy jako u + s a gs a bity můžete nastavit (ale ne vymazat) pomocí číselného režimu.

SUID / GUID příklady

žádný suid / guid – jsou nastaveny pouze bity rwxr-xr-x .

$ ls -lt b.pl -rwxr-xr-x 1 root root 179 Jan 9 01:01 b.pl 

suid & spustitelný bit uživatele povoleno (malá písmena) – jsou nastaveny bity rwsr-xrx .

$ chmod u+s b.pl $ ls -lt b.pl -rwsr-xr-x 1 root root 179 Jan 9 01:01 b.pl 

suid povolen & spustitelný bit deaktivován (velká písmena S) – bity Jsou nastaveny rwSr-xr-x .

$ chmod u-x b.pl $ ls -lt b.pl -rwSr-xr-x 1 root root 179 Jan 9 01:01 b.pl 

guid & spustitelný bit skupiny povoleno (malá písmena) – jsou nastaveny bity rwxr-sr-x .

$ chmod g+s b.pl $ ls -lt b.pl -rwxr-sr-x 1 root root 179 Jan 9 01:01 b.pl 

průvodce povolen & spustitelný bit zakázán (velká písmena S) – bity rwxr-Sr-x jsou nastaveny.

$ chmod g-x b.pl $ ls -lt b.pl -rwxr-Sr-x 1 root root 179 Jan 9 01:01 b.pl 

sticky bit

Sticky bit na druhá ruka je označena jako t, například v adresáři /tmp:

$ ls -l /|grep tmp drwxrwxrwt. 168 root root 28672 Jun 14 08:36 tmp 

Tento bit měl být vždy nazýván „bitem s omezeným odstraněním“, protože to ve skutečnosti znamená. Když je tento bit režimu povolen, vytvoří adresář tak, aby uživatelé mohli mazat pouze & adresáře v něm, které vlastní.

výňatek

OMEZENÁ VLASTNÍ ODSTRANĚNÍ NEBO STICKY BIT

Příznak omezeného odstranění nebo lepivý bit je jeden bit, interpretace závisí na typu souboru. U adresářů

brání neprivilegovaným uživatelům odebrat nebo přejmenovat soubor v adresáři, pokud soubor nebo adresář nevlastní; toto se nazývá příznak omezeného odstranění adresáře a běžně se nachází ve světově zapisovatelných adresářích jako / tmp.U běžných souborů v některých starších systémech bit uloží textový obrázek programu na odkládací zařízení, aby se při spuštění načítal rychleji; tomu se říká lepivý bit.

Komentáře

  • Sticky-bit ve skutečnosti mohl být dříve použit na spustitelné soubory, což způsobilo, že tyto zůstaly v swapu po jejich prvním načtení. To by mohlo ušetřit spousta zbytečného využití disku / sítě (NFS) a CPU pro programy, které byly hodně využívány. Avšak ani Linux, ani většina (všechny?) unixové systémy to již nepodporují (bylo to odstraněno z jádra). It ' s " lepkavý ", protože spustitelný soubor se zasekl ve swapu. Kromě toho byl použit pro adresáře jako popisujete.
  • Vlastně " hodně používaný nebo velmi velký " by byl lepší popis. Pamatujte, že moje vysoká škola měla webový prohlížeč Netscape jako " lepkavý " na svém počítači HP-UX již v roce 1995. Tak malé programy, které se velmi často používaly (např. systémové příkazy spouštěné často cronem) a velké programy (např. Netscape) byly hlavními kandidáty, které měly být vytvořeny " sticky ". V obou případech by jejich neustálé načítání z disku / NFS bylo zbytečné.
  • Sticky-bitové programy měly zůstat rezidenty v RAM, nikoli ve swapu (načítání obrázku ze swapového souboru není ' t mnohem rychlejší než jeho načítání z disku souborového systému). Byl určen pro základní příkazy na úrovni OS, jako je ls. Je zřejmé, že pouze superuživatel mohl nastavit lepivý bit do souboru. Po zavedení virtuální paměti a sdílených knihoven se to stalo méně důležitým, zejména když se pagery staly chytřejšími a mohou dynamicky rozhodovat, které stránky zůstanou rezidenty.
  • A protože lepkavá vlastnost neměla pro adresář smysl, bit masky oprávnění byl později interpretován za účelem úpravy tradiční sémantiky vytváření souborů pro adresáře.
  • @alexis: Původně byly lepkavé bitové programy uchovávány ve swapovém prostoru. To bylo mnohem rychlejší než čtení ze souborového systému, protože čtení obrazů swapových souborů byly souvislé sektory, takže je bylo možné číst většinou asynchronně. S časnými souborovými systémy neexistovaly žádné sektorové " délky běhu " a většina časných ovladačů souborového systému čte jeden sektor najednou, i když sektory se stalo po sobě. Výsledkem na PDP-40 byly lepkavé programy, které se zdály načítat okamžitě, zatímco nelepivé programy trvaly obvyklou sekundu nebo dva. Myslím, že jsme měli pouze ed lepkavé.

Odpověď

„Lepivý bit aplikovaný na spustitelné programy označující systém tak, aby po dokončení programu zůstal obraz programu v paměti.“

Domnívám se, že je to docela zastaralá informace, dnes to většina moderních unixů ignoruje. V Linuxu je lepivý bit relevantní pouze pro adresáře. Viz zde a docela poučný článek Wikipedie .

V tomto starém chování je každopádně obrázek (pouze „kód“, nikoli data) byla uchovávána pouze ve virtuální paměti – normálně prohozená, nikoli ve skutečné paměti, aby byla příště spuštěna rychleji.

Odpovědět

Co jsou lepkavé bity?

Lepkavý bit je nastavený bit oprávnění v adresáři, který umožňuje pouze vlastníkovi souboru v rámci t adresář nebo uživatel root, který soubor smaže nebo přejmenuje. Žádný jiný uživatel nemá potřebná oprávnění k odstranění souboru vytvořeného jiným uživatelem.

Toto je bezpečnostní opatření, které zabrání odstranění důležitých složek a jejich obsahu (podadresářů a souborů), ačkoli ostatní uživatelé mají plná oprávnění.

Komentáře

  • To ' není správné: en.wikipedia.org/wiki/Sticky_bit
  • @AB Zdá se mi to docela přesné, téměř do té míry, že bych parafrázoval začátek článku Wikpedia, který citujete. Co je na tom ' špatně?
  • Řekl bych, že odpověď je neúplná. " Lepkavý " také označuje, že spustitelný soubor bude uložen ve swapovém prostoru, aby byl rychlejší. Nyní je to prastará historie, ale ve starších souborových systémech se ovladače četly vždy po jednom sektoru, i když byly sektory po sobě jdoucí. Díky tomu byly nelepivé spustitelné soubory pomalé, lepivost měla v té době velký smysl.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *