Skip to content

Archives

  • Leden 2022
  • Prosinec 2021
  • Listopad 2021
  • Říjen 2021
  • Září 2021

Categories

  • Žádné rubriky
Trend RepositoryArticles and guides
Articles

Vysvětlení SUID a SGID v Linuxu s příklady

On 1 října, 2021 by admin

Představte si situaci, kdy máte skript nebo spustitelný soubor, který musí být vždy spuštěn určitým uživatelem, protože tento uživatel má příslušná přístupová práva pro akce prováděné skriptem. Také si přejete, aby ostatní uživatelé mohli tento skript spustit, ale nakonec je třeba, aby byl spuštěn jako původní uživatel skriptu(protože pouze tento uživatel má požadované sady oprávnění pro prováděné akce).

Ve výchozím nastavení se linuxové aplikace a programy spouštějí s přesně stejnými právy jako uživatel, který je spouští. Z tohoto důvodu potřebujeme dobré řešení pro výše uvedenou situaci (tj. všichni uživatelé by měli mít možnost spustit program vlastněný určitým uživatelem, jako by ho spustil sám vlastník).

Tady přichází ke slovu SUID. SUID není nic jiného než speciální bit oprávnění dostupný v Linuxu, který toho dosahuje velmi snadno.

Jste-li vlastníkem spustitelného souboru, s pomocí nastaveného oprávnění SUID budou ostatní uživatelé spouštět spustitelný soubor s vaším oprávněním, a ne s jejich.

SUID se v Linuxu běžně používá k dočasnému poskytování zvýšených oprávnění během spouštění. Toto zvýšení oprávnění není vůbec trvalé. Jeho dočasné zvýšení je pouze v době, kdy je program/skript spouštěn.

  • Příklad spustitelných souborů v Linuxu s nastaveným bitem oprávnění SUID
  • Jak nakonfigurovat SUID v Linuxu?
  • Jak ověřit, zda je na souboru použit bit SUID, nebo ne?
  • Jak najít všechny soubory, které mají v Linuxu povolený bit SUID?
  • Příklady souborů SGID v Linuxu
  • Jak nakonfigurovat SGID v Linuxu?
  • Jak ověřit, zda je na souboru nebo skriptu použito SGID?

Příklad spustitelných souborů v Linuxu s nastaveným bitem oprávnění SUID

Pochopíme to na příkladu. Z výše uvedeného seznamu spustitelných souborů je /usr/bin/passwd něco, co by mělo být spustitelné všemi uživateli v systému (to proto, že všichni uživatelé by měli mít možnost změnit si vlastní heslo). Pokud nevíte, jak hesla v Linuxu fungují, doporučuji přečíst si níže uvedený článek.

Přečtěte si: Jak fungují hesla v Linuxu

Aktualizace hesla uživatele vyžaduje, aby uživatel upravil soubor /etc/passwd, /etc/shadow v Linuxu. To je však povoleno pouze pro uživatele root. To je důvod, proč je na soubor /usr/bin/passwd aplikován bit SUID. Vzhledem k tomu, že root je vlastníkem tohoto souboru a SUID je nastaveno na tomto souboru, každý uživatel, který provede příkaz /usr/bin/passwd, jej provede jako uživatel root. Podívejme se na to prakticky.

Níže je zobrazen příkaz passwd spuštěný uživatelem jménem sarath. Podívejme se, zda se tento proces příkazu passwd spouští jako uživatel root.

$ passwdChanging password for user sarath.Changing password for sarath.(current) UNIX password:

Otevřeme další terminál a spustíme ps aux commad a uvidíme, zda se proces příkazu passwd spouští s uživatelem root. To lze provést podle následujícího obrázku.

$ ps aux | grep passwdroot 24531 0.0 0.0 156928 1664 pts/0 S+ 07:24 0:00 passwd

Je jasně vidět, že proces příkazu passwd je spuštěn s uživatelem root(viditelné z prvního pole výše uvedeného výstupu.). Podobně jako příkaz passwd bude jakýkoli příkaz z dříve zobrazeného seznamu souborů s aplikovaným SUID vždy spuštěn s oprávněním vlastníka souboru, bez ohledu na to, který uživatel jej provádí.

Všimněte si také skutečnosti, že i příkaz ping je SUID(viz úvodní seznam uvedený výše), je to proto, že provedení příkazu PING vyžaduje několik síťových operací, které může provést pouze root.

Jak nakonfigurovat SUID v Linuxu?

Konfiguraci SUID u požadovaných souborů/skriptů stačí jediný příkaz CHMOD.

$ chmod u+s /path/to/file/or/executable

Výše uvedený příkaz „/path/to/file/or/executable“ nahraďte absolutní cestou ke skriptu, na kterém potřebujete SUID bit. Toho lze dosáhnout i pomocí číselné metody chmod.

$ chmod 4755 /path/to/file/or/executable

První „4“ v „4755“ označuje SUID. Další příklad numerické metody je uveden níže.

$ chmod 4750 /path/to/file/or/executable

Zásadně v číselné metodě jednoduše přidejte 4 k ostatním sadám oprávnění, které jsou v daném souboru potřeba.

Jak ověřit, zda je na souboru použit bit SUID, nebo ne?

Příkazem ls, jak je uvedeno níže, můžete ověřit, zda je na souboru použit bit SUID, nebo ne.

root@ip-10-12-2-217:# cd /usr/binroot@ip-10-12-2-217:/usr/bin# ls -l passwd-rwsr-xr-x 1 root root 47032 Jul 15 2015 passwd

Příkazls -l by vám měl ukázat, zda je SUID aplikován, nebo ne. Stačí se podívat na první pole výstupu příkazu ls -l. Písmeno s ve znaku -rwsr-xr-x označuje bit SUID. V některých případech uvidíte velké S místo malého s, které jsme viděli výše. Velké S znamená, že na daný soubor/skript není aplikováno žádné oprávnění ke spuštění.

root@ip-10-12-2-217:/usr/bin# chmod -x passwdroot@ip-10-12-2-217:/usr/bin# ls -l passwd-rwSr--r-- 1 root root 47032 Jul 15 2015 passwd

Z výše uvedeného výstupu jasně vidíte, že po odebrání spustitelného oprávnění ze souboru /usr/bin/passwd se výstup ls -l změnil na velké S. Přidáním spustitelného oprávnění zpět na tento soubor se z něj stane malé s, jak je uvedeno níže.

root@ip-10-12-2-217:/usr/bin# chmod +x passwdroot@ip-10-12-2-217:/usr/bin# ls -l passwd-rwsr-xr-x 1 root root 47032 Jul 15 2015 passwd

Jak najít všechny soubory, které mají v Linuxu povolený bit SUID?

Pro vyhledání všech souborů v systému, které mají povolený bit SUID, můžete použít níže uvedený příkaz find. Pokud s příkazem find začínáte, doporučuji přečíst si níže uvedený článek.

Přečtěte si:

root@ip-10-12-2-217:~# find / -perm -4000 -exec ls -l {} \;

Zaměňte první / ve výše uvedeném příkazu za požadované umístění, abyste našli všechny soubory SUID v tomto umístění. Chcete-li například najít všechny soubory s SUID uvnitř /usr/bin, spusťte níže uvedený příkaz.

Nezapomeňte prosím na skutečnost, že bit SUID je u adresářů v Linuxu ignorován.

SGID je velmi podobný SUID. Jediný rozdíl je v tom, že skript/soubor, který má nakonfigurováno SGID, bude spuštěn se stejnými právy vlastníka skupiny.

Pokud nastavíte SGID na adresářích, všechny soubory nebo adresáře vytvořené uvnitř tohoto adresáře budou vlastněny stejnou společnou skupinou(vlastníkem skupiny adresáře, kde je SGID nakonfigurováno).

Příklady souborů SGID v Linuxu

Jak nakonfigurovat SGID v Linuxu?

Podobně jako SUID lze SGID nakonfigurovat pomocí příkazu chmod, jak je uvedeno níže.

root@localhost:~# chmod g+s /path/to/file

Ve výše uvedeném příkazu nahraďte „/cesta/do/souboru“ absolutní cestou ke skriptu, na kterém potřebujete SGID bit. Toho lze dosáhnout také pomocí číselné metody chmod (zobrazené níže).

root@localhost:~# chmod 2755 /path/to/file

Jak ověřit, zda je na souboru nebo skriptu použito SGID?

Podobně jako u SUID můžete snadno provést příkaz ls -l na souboru/adresáři a zjistit, zda je SGID povoleno, nebo ne. Níže uvedený příklad ukazuje totéž.

root@ip-10-12-2-217:# cd /usr/binroot@ip-10-12-2-217:/usr/bin# ls -l chage-rwxr-sr-x 1 root shadow 54968 Jul 15 2015 chage

Malá část s v prvním poli ve výstupu about (-rwxr-sr-x) označuje bit SGID. Podobně jako u SUID, pokud nemáte na skupinu aplikováno spustitelné oprávnění, bude mít místo malého S velké S, jak je ukázáno níže.

root@ip-10-12-2-217:/usr/bin# chmod g-x chageroot@ip-10-12-2-217:/usr/bin# ls -l chage-rwxr-Sr-x 1 root shadow 54968 Jul 15 2015 chage

Při povolení spustitelného oprávnění na skupinu bude mít malé s (ukázáno níže.)

root@ip-10-12-2-217:/usr/bin# chmod g+x chageroot@ip-10-12-2-217:/usr/bin# ls -l chage-rwxr-sr-x 1 root shadow 54968 Jul 15 2015 chage

.

Napsat komentář Zrušit odpověď na komentář

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

Archivy

  • Leden 2022
  • Prosinec 2021
  • Listopad 2021
  • Říjen 2021
  • Září 2021

Základní informace

  • Přihlásit se
  • Zdroj kanálů (příspěvky)
  • Kanál komentářů
  • Česká lokalizace
  • DeutschDeutsch
  • NederlandsNederlands
  • SvenskaSvenska
  • DanskDansk
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • RomânăRomână
  • PolskiPolski
  • ČeštinaČeština
  • MagyarMagyar
  • SuomiSuomi
  • 日本語日本語

Copyright Trend Repository 2022 | Theme by ThemeinProgress | Proudly powered by WordPress