Linuxové násroje hlavičkový obrázek

Nastavení SUID bitu

Linuxový souborový systém obsahuje řadu parametrů, kterými můžeme specifikovat a upravovat chování různých skriptů nebo programů. Většina těchto parametrů je modifikovatelná pomocí programu chmod.

O jednotlivých právech a jejich nastavení se nyní zabývat nebudu. Jedním z těchto parametrů kromě běžně známých (read/write/execute) je i takzvaný SUID bit. Zkratka SUID ve skutečnosti znamená Set owner User ID up on execution. Při spuštění běžného programu bez nastaveného UID je spuštěn s právy aktuálního uživatele. Pokud ale je nastaven SUID bit, skript je pak spouštěn s právy vlastníka, nyní by mohla přijít otázka, k čemu to může sloužit.

Jednoduchý příklad nastavení SUID je všem známý program ping. Aby mohl program vytvořit spojení a vyslat požadavek na otestování dostupnosti cíle musí se spouštět s právy roota. Ve většině distribucí ale není potřebné (od většiny uživatelů ani chtěné) spouštět ping jedním z následujících způsobů.

sudo ping
su -c ping

Ve většině systémů je vše zařízeno tak, že binární program ping je vlastněn uživatelem root a přiřazen také do skupiny root. Nastavení SUID bitu tak program automaticky získá stejná práva jako kdyby byl spuštěn libovolným příkazem výše. Aktuální nastavení práv lze vypsat pomocí programu ls.

ls -l $(which ping)
-rwsr-xr-x 1 root root 44168 kvě  7 23:51 /bin/ping

Z výpisu je vidět, že pro vlastníka je nastaven SUID bit. Jak už bylo řečeno vlastníkem je root, proto je možné ping takto používat.

Nyní už se dostáváme k hlavní části tohoto příspěvku a to, jak nastavit SUID bit. Základní kroky nutné v úspěšnému nastavení už by měly být jasné.

  1. nastavit vlastníka skriptu/programu jako root
  2. nastavit skupinu jako root
  3. nastavit SUID bit pro vlastníka
ls -l
-rwxr-xr-x 1 martin martin 150 říj  6 17:09 control-fan

sudo chown root:root control-fan
sudo chmod u+s control-fan

-rwsr-xr-x 1 root   root   150 říj  6 17:09 control-fan

SUID bit je nyní nastaven a při jeho spuštění máme stejná práva jako root. Nastavování SUID bitu je pro systém velmi nebezpečné, proto většina moderních systémů nedovoluje nastavovat SUID bity pro shell skritpty, povolené jsou pouze binární soubory.

Další literatura

http://www.theunixschool.com/2010/06/what-is-suid.html

http://en.wikipedia.org/wiki/Chmod

http://en.wikipedia.org/wiki/Chown


Posted

in

,

by

Tags: