GNU/Linux >> Znalost Linux >  >> Linux

Jak Sticky Bit funguje?

SUID

Přilnavý bit aplikováno na spustitelné programy označující systém, aby po skončení běhu programu zůstal obraz programu v paměti.

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

Přijatá odpověď:

To je pravděpodobně jedna z mých nejnepříjemnějších věcí, které lidé neustále kazí. Bit SUID/GUID a sticky-bit jsou 2 zcela odlišné věci.

Pokud provedete man chmod můžete si přečíst o SUID a sticky-bits. Manuál je k dispozici také zde.

pozadí

úryvek

Písmena rwxXst vyberte bity režimu souboru pro dotčené uživatele:číst
(r), zapisovat (w), spouštět (nebo hledat adresáře) (x), spouštět/hledat pouze
pokud je soubor adresářem nebo již má oprávnění ke spuštění pro některé uživatele
(X), nastaví ID uživatele nebo skupiny na spuštění (y) , příznak omezeného smazání nebo sticky bit (t) .

SUID/GUID

Výše uvedená manuálová stránka se snaží říci, že pozice, kterou bit x zaujímá v rwxrwxrwx pro uživatele octal (1. skupina rwx) a skupinová osmička (2. skupina rwx), může nabýt dalšího stavu, kdy se x stane s. Když k tomu dojde, tento soubor se při spuštění (pokud se jedná o program a ne pouze o shellový skript) spustí s oprávněními vlastníka nebo skupiny souboru.

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

úryvek

NASTAVENÍ BITŮ A SETGID

chmod vymaže bit set-group-ID běžného souboru, pokud ID skupiny souboru
neodpovídá skutečnému ID skupiny uživatele nebo jednomu z uživatelových
doplňkových ID skupiny, pokud uživatel nemá příslušná oprávnění.
Další omezení mohou způsobit, že bity set-user-ID a set-group-ID
režimu MODE nebo RFILE budou ignorovány. Toto chování závisí na zásadě
a funkčnosti základního systémového volání chmod. V případě pochybností
zkontrolujte základní chování systému.

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

Příklady SUID/GUID

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

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

suid &spustitelný bit uživatele povolen (malá písmena s) – bity rwsr-x-r-x jsou nastaveny.

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

suid povolen a spustitelný bit zakázán (velká písmena S) – bity rwSr-xr-x jsou nastaveny.

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

Povolen spustitelný bit průvodce a skupiny (malá písmena s) – bity rwxr-sr-x jsou nastaveny.

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

GUID povolen a spustitelný bit deaktivován (velké 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

lepivý bit

Lepivý bit na druhé straně je označen jako t , například pomocí /tmp adresář:

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

Tento bit by se měl vždy nazývat „bit s omezeným vymazáním“, protože to skutečně znamená. Když je tento bit režimu povolen, vytvoří adresář takový, že uživatelé v něm mohou mazat pouze soubory a adresáře, jejichž jsou vlastníky.

Související:Koš s 80 tisíci soubory. "Vyprázdnit koš" nefunguje!?

úryvek

VLAJKA S OMEZENÝM VYMAZÁNÍM NEBO PŘILEPĚCÍ BIT

Příznak omezeného odstranění nebo sticky bit je jeden bit, jehož
interpretace závisí na typu souboru. U adresářů
zabraňuje 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 smazání pro adresář a běžně se vyskytuje v
adresářích, do kterých lze zapisovat do světa, jako je /tmp. U běžných souborů na některých
starších systémech bit ukládá textový obrázek programu na swap
zařízení, takže se při spuštění načte rychleji; tomu se říká lepivý bit.


Linux
  1. Co je NGINX? Jak to funguje?

  2. Jak Awk ‚!a[$0]++‘ funguje?

  3. Jak fungují vnitřnosti sudo?

  1. Ssh – Jak funguje Tcp-keepalive v Ssh?

  2. Jak funguje příkaz Exit na Unixovém terminálu?

  3. Jak funguje Tee Command?

  1. Jak funguje příkaz 'ls' v Linuxu/Unixu?

  2. Jak interně funguje copy_from_user z jádra Linuxu?

  3. Jak funguje debugger v Linuxu?