GNU/Linux >> Znalost Linux >  >> Linux

Linux Sticky Bit koncept vysvětlený s příklady

Představte si scénář, kdy vytvoříte adresář Linux, který mohou používat všichni uživatelé systému Linux k vytváření souborů. Uživatelé mohou v tomto adresáři vytvářet, mazat nebo přejmenovávat soubory podle svého pohodlí. Pro všechny, kteří si myslí, že proč by takový adresář vznikal? V systému Linux existuje například adresář /tmp, který mohou různí uživatelé Linuxu používat k vytváření dočasných souborů.

Co když uživatel omylem nebo úmyslně smaže (nebo přejmenuje) soubor vytvořil nějaký jiný uživatel v tomto adresáři?

Abychom se vyhnuli těmto problémům, používá se koncept lepivého bitu.

Sticky bit je bit oprávnění, který je nastaven pro soubor nebo adresář, který umožňuje pouze vlastníkovi souboru/adresáře nebo uživateli root soubor odstranit nebo přejmenovat. Žádný jiný uživatel nemá oprávnění smazat soubor vytvořený jiným uživatelem.

Historie Sticky Bit

Než dále vysvětlíme lepivý bit, pojďme diskutovat o historii lepivého bitu, protože tato informace stojí za projednání.

Lepivý kousek není nový koncept. Ve skutečnosti byl poprvé představen v roce 1974 v operačním systému Unix. Tenkrát byl účel lepivého kousku jiný. Byl zaveden, aby se minimalizovalo časové zpoždění při každém spuštění programu.

Když je program spuštěn, načtení programu do paměti trvá určitou dobu, než jej uživatel může skutečně začít používat. Pokud je program, například editor, často používán uživateli, byla tehdy prodleva při spuštění příliš velká.

Pro zlepšení tohoto časového zpoždění byl zaveden lepivý bit. OS zkontroloval, že pokud je sticky bit na spustitelném souboru ZAPNUTÝ, pak byl textový segment spustitelného souboru zachován ve swapovacím prostoru. To usnadnilo načtení spustitelného souboru zpět do paměti RAM, když byl program znovu spuštěn, čímž se minimalizovalo časové zpoždění.

Ačkoli se tato metoda ukázala jako úspěšná při minimalizaci časového zpoždění spouštění, vyskytl se v důsledku této operace velký problém. Problém byl v tom, že pokud byl na spustitelný soubor aplikován nějaký druh opravy jako oprava chyby nebo nová funkce, bylo třeba provést následující kroky:

  • Nejprve odstraňte lepivý bit ze spustitelného souboru
  • Nyní spusťte spustitelný soubor a ukončete jej, aby se vyprázdnil existující textový segment ze swapu
  • Nyní znovu nastavte lepivý bit na spustitelném souboru a znovu spustitelný soubor spusťte, aby se nový textový segment uložil do odkládací paměti

Výše uvedené kroky byly vyžadovány, aby program odrážel nové funkce nebo opravy chyb, které byly přidány do spustitelného souboru.

Takže tohle byl jeden z hlavních problémů. S rozvojem technologie se také vyvinuly techniky rychlého přístupu do paměti, které tak trochu překonaly požadavek na lepivý bit pro tento účel.

Příklady lepivých bitů

V této části probereme, jak nastavit a deaktivovat sticky bit pomocí několika příkladů.

Základní příklad

Vytvořte adresář a poskytněte všem uživatelům přístup pro čtení, zápis a provádění:

# mkdir allAccess

# chmod 777 allAccess/

# ls -ld allAccess/
drwxrwxrwx 2 himanshu himanshu 4096 Oct 24 15:43 allAccess/

Vidíme tedy, že je vytvořen adresář s názvem ‚allAccess‘ a přístup pro čtení, zápis a spouštění do tohoto adresáře je udělen všem uživatelům prostřednictvím příkazu chmod.

Nyní vytvořte v tomto adresáři více souborů (s různými uživateli), aby k nim měli všichni uživatelé přístup pro čtení, zápis a spouštění.

Například:

# ls -l allAccess/
total 0
-rwxrwxrwx 1 himanshu himanshu 0 Oct 24 15:48 user1
-rwxrwxrwx 1 guest    guest    0 Oct 24 16:11 user_file_0
-rwxrwxrwx 1 guest-2  guest-2  0 Oct 24 16:15 user_file_1

Soubory user_file_0 a user_file_1 jsou vytvořeny různými uživateli, ale mají přístup pro čtení, zápis a spouštění pro všechny uživatele. To znamená, že uživatel „host“ může smazat nebo přejmenovat soubor vytvořený uživatelem „host-2“.

Aby se tomu zabránilo, lze v adresáři allAccess nastavit sticky bit.

Nyní zapněte lepivý bit v adresáři pomocí příznaku +t příkazu chmod.

# chmod +t allAccess/

# ls -ld allAccess/
drwxrwxrwt 2 himanshu himanshu 4096 Oct 24 16:19 allAccess/

Jak lze pozorovat, do bitů oprávnění v adresáři je zaveden bit oprávnění „t“.

Nyní, pokud se uživatel ‚host‘ pokusí přejmenovat soubor ‚user_file_1‘, stane se toto:

$ mv /home/himanshu/allAccess/user_file_1 /home/himanshu/allAccess/user_file_0
mv: cannot move `/home/himanshu/allAccess/user_file_1' to `/home/himanshu/allAccess/user_file_0': Operation not permitted

Vidíme tedy, že operace nebyla povolena.

Odstraňte lepivý bit pomocí volby -t

Sticky bit lze odstranit z oprávnění adresáře pomocí volby -t příkazu chmod.

Zde je příklad:

# chmod -t allAccess/

# ls -ld allAccess/
drwxrwxrwx 2 himanshu himanshu 4096 Oct 24 16:19 allAccess/

Vidíme tedy, že bit oprávnění „t“ je z adresáře odstraněn.

Různé OS se s lepivými bity chovají odlišně, jak je vysvětleno v tomto článku na wikipedii. Například Linux hledá sticky bit pouze tehdy, když se uživatel pokusí přejmenovat soubor. Pokud je soubor mazán, nezkontroluje lepivý bit.


Linux
  1. Příkaz vypnutí Linuxu s příklady

  2. Příkaz nslookup Linux vysvětlený s příklady

  3. Příkaz Linux Traceroute, vysvětlený s příklady

  1. Linux cut Command Vysvětlení pomocí 6 příkladů

  2. Příkaz whoami v Linuxu vysvětlený na příkladech

  3. Linuxový příkaz Ping vysvětlený s příklady

  1. Příkaz Linux ldd vysvětlený s příklady

  2. Linux dělá příkaz vysvětlený s příklady

  3. Linux více Příkaz vysvětlený s příklady