GNU/Linux >> Znalost Linux >  >> Linux

Vytvářejte a konfigurujte adresáře setgid pro spolupráci – příprava cíle RHCSA

Oprávnění a práva souborového systému GNU/Linux jsou základem zabezpečení systému a jedním z jeho principů je jasné oddělení práv k souborům a složkám. V silně víceuživatelském prostředí, jako je školní server, práva k souborům ve výchozím nastavení brání uživateli v náhodném smazání nebo přepsání dokumentů jiného uživatele. Existují však případy použití, kdy více uživatelů potřebuje přistupovat (číst, zapisovat a dokonce i mazat) k souborům jiných uživatelů – jako je tomu například u výše zmíněného školního serveru, kde studenti pracují na stejném projektu. V této části přípravy na zkoušku RHCSA se naučíme, jak vytvořit prostředí pro takovou spolupráci pomocí techniky setgid (set groupID). Všimněte si, že i když tyto kroky provádíme na nejnovějším operačním systému, setgid není nic nového a najdete ho ve všech distribucích.

V tomto tutoriálu se naučíte:

  • Jak přidat uživatele do doplňkové skupiny
  • Jak používat set-GID v adresáři
  • Jak zkontrolovat správné vlastnictví v adresáři set-GID
  • Jak používat speciální adresář jako člen skupiny

Povolení spolupráce s adresářem setgid.

Požadavky na software a použité konvence

Softwarové požadavky a konvence příkazového řádku systému Linux
Kategorie Požadavky, konvence nebo použitá verze softwaru
Systém Red Hat Enterprise Linux 8
Software GNU Coreutils 8.30
Jiné Privilegovaný přístup k vašemu systému Linux jako root nebo prostřednictvím sudo příkaz.
Konvence # – vyžaduje, aby dané linuxové příkazy byly spouštěny s právy root buď přímo jako uživatel root, nebo pomocí sudo příkaz
$ – vyžaduje, aby dané linuxové příkazy byly spouštěny jako běžný neprivilegovaný uživatel

Případ použití

Abychom demonstrovali použití setgid, máme virtuální server a na něm musíme vytvořit skupinu uživatelů, přidat členy a nastavit adresář, ke kterému mají oba přístup. Zatím je to pouze
záležitost nastavení oprávnění. Trik bude v přidání setgid do adresáře, takže soubory vytvořené v adresáři budou mít skupinu vlastníků nadřazeného adresáře. Vzhledem k tomu, že skupina bude mít v adresáři oprávnění ke čtení a zápisu, mohou soubory číst a zapisovat všichni členové skupiny, aniž by bylo nutné explicitně nastavit původní členství ve skupině.

Základní nastavení

Nejprve vytvoříme potřebné objekty. Vytvoříme adresář projektu:

# mkdir -p /student_projects/rocket_science

A naši dva uživatelé, sarah a john pomocí příkazu useradd:

# useradd john# useradd sarah

Potřebujeme také vytvořit uživatelskou skupinu, která umožní spolupráci mezi jejími členy:

# groupadd rocketengineers

Dále nastavíme tuto skupinu jako vlastníka adresáře projektu, rekurzivně:

# chown -R :rocketengineers /student_projects/rocket_science

Dále přidáme naše uživatele do rocketengineers skupina:

# usermod -a -G rocketengineers john# usermod -a -G rocketengineers sarah

Skupinu jsme přidali jako sekundární skupinu. Podrobnosti o skupinách najdete v kurzu členství ve skupině.

K dokončení základního nastavení potřebujeme přidat úplné oprávnění skupině v adresáři:

# chmod 770 /student_projects/rocket_science

A tímto je naše základní nastavení kompletní. Oba uživatelé mohou zapisovat do adresáře a vytvořené soubory budou ve vlastnictví uživatele a vlastnící skupina bude primární skupinou uživatele. Můžeme zkontrolovat
oprávnění, která jsme nastavili pomocí stat :

# stat /student_projects/rocket_science Soubor:/student_projects/rocket_science Velikost:6 Bloky:0 IO Blok:4096 adresářZařízení:fd00h/64768d Inode:17789698 Odkazy:2Přístup:(0770/dr) root) Gid:( 1003/rocketengineers)Context:unconfined_u:object_r:default_t:s0Přístup:2020-10-04 18:29:57.500453785 +0200Chang:2020-10-0954:2020-10-0954 1870.0004 18:30:34.809115974 +0200 Narození:-

Identifikátory se s největší pravděpodobností budou lišit. Vidíme, že vlastníkem adresáře je root , zatímco vlastnictví skupiny patří rocketengineers skupina. To umožňuje oběma členům
skupiny číst a zapisovat z a do adresáře.

Spolupráce bez setgid

Řekněme, že tito dva uživatelé by chtěli sdílet nějaké poznámky k tomuto nastavení. sarah má ve svém domovském adresáři textový soubor s důležitými daty:

$ iduid=1002(sarah) gid=1002(sarah) groups=1002(sarah),1003(raketoví inženýři) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023$ text cat general_project.notes před> 

Chcete-li jej sdílet s john , zkopíruje soubor do sdíleného adresáře (takže v jejím domovském adresáři je stále záloha, pro každý případ):

$ cp general_project.notes /student_projects/rocket_science/

Zkontrolováním vlastnictví můžeme zjistit, že vlastníkem je skutečně sarah a skupina vlastnící soubor je také sarah , primární skupina uživatele:

$ stat /student_projects/rocket_science/general_project.notes Soubor:/student_projects/rocket_science/general_project.notes Velikost:5 bloků:8 IO blok:4096 běžný souborZařízení:fd00h/64768d Inode:1506641 Inode:1506641 rw-rw-r--) Uid:( 1002/ sarah) Gid:( 1002/ sarah)Kontext:unconfined_u:object_r:default_t:s0Přístup:2020-10-04 18:31:30.229099624Mo2000020024:02010 18:31:30.229099624 +0200Změna:2020-10-04 18:31:30.229099624 +0200 Narození:-

Pojďme se přepnout na john . Má také některá zjištění týkající se projektu a rád by se o ně podělil.

$ iduid=1001(john) gid=1001(john) groups=1001(john),1003(rocketengineers) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023$ echo "mytext"> raketa. txt$ cp rocket.txt /student_projects/rocket_science/

Platí stejná oprávnění, nově zkopírovaný soubor bude vlastnit john :

$ stat /student_projects/rocket_science/rocket.txt Soubor:/student_projects/rocket_science/rocket.txt Velikost:7 Bloků:8 IO Blok:4096 běžný souborZařízení:fd00h/64768d Inode:18356857 Odkazy:064 (Odkazy:0 rw-rw-r--) Uid:( 1001/ john) Gid:( 1001/ john)Context:unconfined_u:object_r:default_t:s0Access:2020-10-04 18:32:24.433075710 Mo202:02010 18:32:24.433075710 +0200Změna:2020-10-04 18:32:24.433075710 +0200 Narození:-

Protože oba jsou členy rocketengineers mohou číst obsah adresáře, a protože obě jejich poznámky jsou čitelné po celém světě, mohou si oba navzájem číst
soubory.

$ cat /student_projects/rocket_science/general_project.notes text

Problém nastává, když john rád bych přidal nějaké poznámky k sarah důležitý datový soubor:

$ echo "nějaké komentáře">> /student_projects/rocket_science/general_project.notes -bash:/student_projects/rocket_science/general_project.notes:Povolení odepřeno

Ve skutečnosti nemohou pracovat se soubory toho druhého, pouze je číst. Nyní sarah mohla nastavit skupinové vlastnictví svého souboru na jejich společnou skupinu, a tím problém vyřešit. Ale proč by to potřebovala
s každým souborem, když máme setgid, aby nám pomohl?

Nastavení příznaku setgid

K nastavení příznaku setgid používáme chmod :

# chmod g+s /student_projects/rocket_science

Všimněte si příznaku „s“ u oprávnění skupiny (z důvodu srozumitelnosti nastavte jako tučné):

# stat /student_projects/rocket_science Soubor:/student_projects/rocket_science Velikost:53 Bloky:0 IO Blok:4096 adresářZařízení:fd00h/64768d Inode:17789698 Odkazy:2Přístup:(2770) (2770) ---) Uid:( 0/ root) Gid:( 1003/rocketengineers)Context:unconfined_u:object_r:default_t:s0Přístup:2020-10-04 18:32:29.389167450 +0200Upravit:1803:1803 24.433075710 +0200Změna:2020-10-04 18:34:04.449927062 +0200 Narození:-

Testování a ověřování výsledků

Nyní sarah může sdílet své nové výzkumné poznámky:

$ cat finds.txt raketa potřebuje křídla$ cp results.txt /student_projects/rocket_science/$ stat /student_projects/rocket_science/findings.txt Soubor:/student_projects/rocket_science/findings.txt Velikost:19 Bloky:8 IO Blok:4096 běžný souborZařízení:fd00h/64768d Inode:18999000 Odkazy:1Přístup:(0664/-rw-rw-r--) Uid:( 1002/ sarah) Gid:( 1003/rocketengineers )Kontext:unconfined_u:object_r:default_t:s0Přístup:2020-10-04 18:35:15.195236593 +0200Změnit:2020-10-04 2020-10-04 18:35:15.19522316593 :-

Vlastnictví skupiny je nastaveno na skupinu nadřazeného adresáře kvůli setgid na místě. To způsobí john abyste mohli komentovat nové výzkumné poznámky:

$ echo "ověřeno!">> /student_projects/rocket_science/findings.txt$ cat /student_projects/rocket_science/findings.txt raketa potřebuje ověřená křídla!

A tím jsme dokončili náš cíl vytvořit adresář pro spolupráci pro skupinu uživatelů. Mohli bychom to udělat pro ostatní skupiny pomocí výše uvedené metody, kdy oddělíme data různých projektů pomocí
oprávnění, takže člen jedné skupiny nemůže náhodně smazat data jiného projektu.

# Název videa:Práce v adresáři setgid
# Popis videa:Úprava souborů jiného uživatele v adresáři setgid
# Název souboru videa:rhcsa_setgid.webm

Práce v adresáři setgid – Úprava souborů jiného uživatele v adresáři setgid

Závěr

V rámci přísných oprávnění a vlastnických práv GNU/Linux setgid je jednoduchý způsob, jak uživatelům systému umožnit zabezpečenou vzájemnou interakci se soubory ostatních, což umožňuje skupinovou práci
bez použití nějakého náročného externího řešení nebo rušení počátečních skupin a oprávnění uživatele. Ve výše uvedeném příkladu jsme se nemuseli dotýkat domovských adresářů uživatelů ani jejich celosystémových
oprávnění, pouze jsme vytvořili speciální místo, kde mohou sdílet, co potřebují.

Cvičení

  1. Vytvořte více adresářů projektu s různými skupinami. Zkontrolujte, zda členové jednoho projektu mohou číst soubory jiného projektu.
  2. Vytvořte adresář pro více projektů, kam má přístup každý člen projektu.
  3. Vytvořte meziprojektový pouze pro čtení adresář, do kterého mohou psát pouze členové jednoho projektu (projektového managementu), ale členové všech projektů mohou číst.

Linux
  1. Jak vytvořit a odstranit uživatelskou skupinu v Linuxu

  2. Vynutit vytvoření pevných odkazů na adresář?

  3. Vytvořit soubor jako jiný uživatel a skupina?

  1. 5 příkladů pro vytvoření více adresářů v Linuxu

  2. Proč se pro některé aplikace doporučuje vytvořit skupinu a uživatele?

  3. Vytvořte soubor zip a ignorujte strukturu adresářů

  1. Vytváření, mazání a správa adresářů v systému Linux

  2. Vytvořte vyhrazenou složku pro každý soubor zip v adresáři a extrahujte soubory zip

  3. Jak vynutím skupinu a oprávnění pro vytvořené soubory v konkrétním adresáři?