GNU/Linux >> Znalost Linux >  >> Linux

Oprávnění pro Linux:SUID, SGID a sticky bit

Linuxová oprávnění jsou koncept, se kterým se každý uživatel důvěrně seznámí v rané fázi vývoje. Abychom mohli efektivně spravovat systémy, potřebujeme spouštět skripty, upravovat soubory a spouštět procesy, ale co se stane, když uvidíme Povolení odepřeno ? Víte, proč vidíme tuto zprávu? Pokud znáte příčinu problému, víte, jak implementovat řešení?

Stručně vysvětlím různé způsoby výpočtu oprávnění a poté se zaměříme na speciální oprávnění v rámci Linuxu. Pokud se chcete podívat do hloubky chmod příkaz, podívejte se na tento článek od Sudoer Shashank Hegde, oprávnění pro Linux:Úvod do chmod.

TL;DR spočívá v tom, že existují dva hlavní způsoby přidělování oprávnění.

Symbolická metoda

Symbolická metoda používá následující syntaxi:

[tcarrigan@server ~]$ chmod WhoWhatWhich file | directory

Kde:

  • Kdo - představuje identity:u,g,o,a (uživatel, skupina, ostatní, všechny)
  • Co - představuje akce:+, -, =(přidat, odebrat, nastavit přesné)
  • Který - představuje úrovně přístupu:r, w, x (čtení, zápis, provádění)

Příkladem je, když chci přidat přečtení a pište oprávnění k souboru s názvem test.txt pro uživatele a skupina , používám následující příkaz:

[tcarrigan@server ~]$ chmod ug+rw test.txt

Úplné zveřejnění, toto není můj preferovaný způsob přidělování oprávnění, a pokud byste o této metodě chtěli více informací, doporučuji váš nejbližší vyhledávač.

Číselná metoda

Numerická metoda je podle mých zkušeností nejlepší způsob, jak se naučit a procvičit oprávnění. Je založen na následující syntaxi:

[tcarrigan@server ~]$ chmod ### file | directory

Zde zleva doprava znak # představuje úroveň přístupu. Existují tři úrovně přístupu – uživatel, skupina a další. K určení jednotlivých číslic používáme následující:

  • Začít na 0
  • Pokud přečtete oprávnění by mělo být nastaveno, přidejte 4
  • Pokud zapište oprávnění by mělo být nastaveno, přidejte 2
  • Pokud spustíte oprávnění by mělo být nastaveno, přidejte 1

To se počítá na základě úrovně přístupu. Vysvětleme si tento příklad oprávnění:

-rw-r-x---

Oprávnění jsou označena jako 650 . Jak jsem k těmto číslům přišel?

  • Uživatelská oprávnění jsou:rw- nebo 4+2=6
  • Oprávnění skupiny jsou:r-x nebo 4+1=5
  • Oprávnění ostatních jsou:--- nebo 0

Chcete-li to vložit do syntaxe příkazu, vypadá to takto:

[tcarrigan@server ~]$ chmod 650 test.txt

Nyní, když rozumíte základům výpočtu oprávnění v Linuxu, pojďme se podívat na zvláštní oprávnění součástí OS.

[ Také by se vám mohlo líbit: Úvod do seznamů řízení přístupu (ACL) systému Linux ]

Vysvětlení zvláštních oprávnění

Zvláštní oprávnění tvoří kromě uživatele čtvrtou úroveň přístupu , skupina a jiné . Speciální oprávnění umožňují další oprávnění oproti standardním sadám oprávnění (jak název napovídá). Pro každou úroveň přístupu, kterou jsme probrali výše, existuje zvláštní možnost oprávnění. Podívejme se na každý jednotlivě, počínaje Set UID:

uživatel + s (zvláštní)

Běžně se označuje jako SUID , speciální oprávnění pro úroveň uživatelského přístupu má jedinou funkci:Soubor s SUID se vždy spustí jako uživatel, který vlastní soubor, bez ohledu na uživatele předávající příkaz. Pokud vlastník souboru nemá oprávnění ke spuštění, použijte velké S zde.

Abyste to viděli v praktickém světle, podívejme se na /usr/bin/passwd příkaz. Tento příkaz má ve výchozím nastavení oprávnění SUID:

[tcarrigan@server ~]$ ls -l /usr/bin/passwd 
-rwsr-xr-x. 1 root root 33544 Dec 13  2019 /usr/bin/passwd

Všimněte si s kde x obvykle označují oprávnění ke spuštění pro uživatele.

skupina + s (speciální)

Běžně se označuje jako SGID , toto zvláštní oprávnění má několik funkcí:

  • Pokud je nastaveno u souboru, umožňuje spuštění souboru jako skupiny který soubor vlastní (podobně jako SUID)
  • Pokud je nastaveno v adresáři, všechny soubory vytvořené v adresáři budou mít svou skupinu vlastnictví nastaveno na vlastníka adresáře
[tcarrigan@server article_submissions]$ ls -l 
total 0
drwxrws---. 2 tcarrigan tcarrigan  69 Apr  7 11:31 my_articles

Tato sada oprávnění je označena malým s kde x by normálně znamenalo provést oprávnění pro skupinu . Je to také zvláště užitečné pro adresáře, které se často používají při spolupráci mezi členy skupiny. Každý člen skupiny má přístup k jakémukoli novému souboru. To platí i pro spouštění souborů. SGID je při správném použití velmi výkonný.

Jak bylo uvedeno dříve pro SUID , pokud vlastnící skupina nemá oprávnění ke spuštění, pak velké S se používá.

ostatní + t (pevné)

Poslední zvláštní povolení bylo nazváno „lepkavý kousek“. Toto oprávnění nemá vliv na jednotlivé soubory. Na úrovni adresáře však omezuje mazání souborů. Pouze vlastník (a root ) souboru může odstranit soubor v tomto adresáři. Běžným příkladem je /tmp adresář:

[tcarrigan@server article_submissions]$ ls -ld /tmp/
drwxrwxrwt. 15 root root 4096 Sep 22 15:28 /tmp/

Sada oprávnění je označena malými písmeny t , kde je x by normálně označovalo oprávnění ke spuštění.

Nastavení zvláštních oprávnění

Chcete-li nastavit zvláštní oprávnění k souboru nebo adresáři, můžete použít jednu ze dvou metod uvedených pro standardní oprávnění výše:Symbolická nebo číselná.

Předpokládejme, že chceme nastavit SGID v adresáři community_content .

Chcete-li to provést pomocí symbolické metody, provedeme následující:

[tcarrigan@server article_submissions]$ chmod g+s community_content/

Pomocí numerické metody musíme do našeho chmod předat čtvrtou předcházející číslici příkaz. Použitá číslice se vypočítá podobně jako standardní číslice oprávnění:

  • Začít na 0
  • SUID =4
  • SGID =2
  • Sticky =1

Syntaxe je:

[tcarrigan@server ~]$ chmod X### file | directory

Kde je číslice zvláštních oprávnění.

Zde je příkaz pro nastavení SGID na community_content pomocí numerické metody:

[tcarrigan@server article_submissions]$ chmod 2770 community_content/
[tcarrigan@server article_submissions]$ ls -ld community_content/
drwxrws---. 2 tcarrigan tcarrigan 113 Apr  7 11:32 community_content/

[ Zdarma ke stažení:Cheat sheet pro pokročilé příkazy Linuxu. ] 

Shrnutí

Na závěr, oprávnění jsou zásadně důležitá pro to, abyste byli efektivním správcem Linuxu. Existují dva definované způsoby, jak nastavit oprávnění pomocí chmod příkaz:Symbolický a číselný. Zkoumali jsme syntaxi a výpočty potřebné pro obě metody. Zvažovali jsme také speciální oprávnění a jejich roli v systému. Nyní, když rozumíte oprávněním a základním konceptům, můžete vyřešit stále nepříjemné Povolení odepřeno chyba, když se pokusí bránit vaší práci.


Linux
  1. Oprávnění pro Linux 101

  2. Jak najít soubory s oprávněními SUID a SGID v Linuxu

  3. Co je Sticky Bit, SUID a SGID v Linuxu

  1. Linux – spouštění versus čtení bit. Jak fungují adresářová oprávnění v Linuxu?

  2. Linux – Suid nemá žádný vliv na adresáře s Linuxem?

  3. UNIX / Linux:Jak používat Sticky Bit na adresář a soubor

  1. Cheat sheet pro uživatele Linuxu a oprávnění

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

  3. Otázky k pohovoru s Linuxem – základní oprávnění k souborům a adresářům