Existují dvě speciální oprávnění, která lze nastavit pro spustitelné soubory:Set User ID (setuid) a Set Group ID (sgid). Tato oprávnění umožňují, aby byl spouštěný soubor spuštěn s oprávněními vlastníka nebo skupiny. Podobně existují dvě speciální oprávnění pro adresáře:sticky bit a setgid bit. Níže je uvedeno několik nejčastějších dotazů na rozhovory s Linuxem týkající se speciálních oprávnění, jako je SUID, SGID a sticky bit.
Co je nastavení ID uživatele (setuid)?
SUID je speciální oprávnění přiřazené souboru. Tato oprávnění umožňují, aby byl spouštěný soubor spuštěn s oprávněními vlastníka. Pokud by například soubor vlastnil uživatel root a měl nastavený bit setuid, bez ohledu na to, kdo soubor spustil, vždy by se spouštěl s právy uživatele root.
Jak nastavit bit SUID v souboru?
Chcete-li nastavit bit setuid, musíte být vlastníkem souboru nebo uživatelem root. Spusťte následující příkaz pro nastavení bitu setuid:
# chmod u+s file1
Zobrazte oprávnění pomocí příkazu ls -l:
# ls -l file1 -rwSrw-r-- 1 user1 user1 0 2017-10-29 21:41 file1
Všimněte si velkého S . To znamená, že neexistují žádná oprávnění ke spuštění. Spuštěním následujícího příkazu přidejte oprávnění ke spuštění k souboru file1 a poznamenejte si malá písmena s .
# chmod u+x file1
# ls -l file1 -rwsrw-r-- 1 user1 user1 0 2017-10-29 21:41 file1
Všimněte si malých písmen s. To znamená, že existují oprávnění ke spuštění.
Alternativně můžete nastavit bit setuid pomocí numerické metody přidáním 4 před režim. Chcete-li například nastavit bit setuid, číst, zapisovat a spouštět oprávnění pro vlastníka souboru file1, spusťte následující příkaz:
# chmod 4700 file1
Co je nastavení ID skupiny (setgid) pro soubory?
Když je nastaven bit Set Group ID, spustí se spustitelný soubor s oprávněním skupiny. Pokud by například soubor vlastnila uživatelská skupina, bez ohledu na to, kdo tento soubor spustil, byl by vždy spuštěn s oprávněním skupiny uživatelů.
Jak nastavit bit SGID pro soubory?
Spusťte následující příkaz a nastavte bit setgid pro soubor file1:
# chmod g+sPoznámka :Bity setuid i setgid se nastavují pomocí symbolu s. Setgid je reprezentován stejně jako setuid bit, s výjimkou skupiny oprávnění.
Spusťte následující příkaz jako root k nastavení bitu setgid a ke čtení, zápisu a spouštění oprávnění pro vlastníka souboru file1:
# chmod 2700 file1
Setgid je reprezentován stejně jako bit setuid, s výjimkou skupiny oprávnění:
ls -l file1 -rwx--S--- 1 user1 user1 0 2017-10-30 21:40 file1
Pomocí příkazu chmod u+s nastavte bit setuid. Pomocí příkazu chmod g+s nastavte bit setgid.
Co je nastavení oprávnění ID skupiny pro adresáře
Když je v adresáři nastaven bit setgid, všechny soubory vytvořené v tomto adresáři zdědí skupinové vlastnictví tohoto adresáře. Například složku folder1 vlastní uživatel user1 a skupina group1:
# ls -ld folder1 drwxrwxr-x 2 user1 group1 4096 2017-10-30 22:25 folder1
Soubory vytvořené ve složce folder1 zdědí členství ve skupině group1:
# touch folder1/file1 # ls -l folder1/file1 -rw-rw-r-- 1 user1 group1 0 2017-10-30 22:29 folder1/file1
Jak nastavit bit SGID pro adresáře?
Chcete-li nastavit bit setgid na adresář, použijte příkaz chmod g+s:
# chmod g+s folder1
Zobrazte oprávnění pomocí příkazu ls -ld a poznamenejte si s ve skupinových oprávněních:
# ls -ld folder1 drwxrwsr-x 2 user1 group1 4096 2017-10-30 22:32 folder1
Případně přidejte před režim adresářů 2:
# chmod 2770 folder1
Co je lepivý bit v adresáři
Když je v adresáři nastaven sticky bit, může soubory v tomto adresáři odstraňovat pouze uživatel root, vlastník adresáře a vlastník souboru.
Jak nastavit lepivý bit
Příkladem lepivého bitu je adresář /tmp. K zobrazení oprávnění použijte příkaz ls -ld /tmp:
# ls -ld /tmp drwxrwxrwt 24 root root 4096 2017-10-30 22:00 tmp
t na konci symbolizuje, že je nastaven lepivý bit. Soubor vytvořený v adresáři /tmp může odstranit pouze jeho vlastník nebo uživatel root. Například spusťte následující příkaz pro nastavení lepivého bitu pro složku folder1:
# chmod a+t folder1
Případně přidejte před režim adresáře 1, abyste nastavili lepivý bit:
# chmod 1777 folder1
Oprávnění by se měla číst, zapisovat a spouštět pro vlastníka, skupinu a všechny ostatní v adresářích, které mají nastavený lepivý bit. To umožňuje komukoli cd do adresáře a vytvářet soubory.
jak najít soubory s SUID/SGID ale nastaveným
1. Chcete-li najít všechny soubory s SUID, ale nastaveným, použijte níže uvedený příkaz:
# find / -perm +4000
2. Chcete-li najít všechny soubory s nastaveným bitem SGID, použijte níže uvedený příkaz:
# find / -perm +2000
Můžete také zkombinovat oba příkazy a najít soubory SGID i SUID but set.
# find / -type f \\( -perm -4000 -o -perm -2000 \\) -exec ls -l {} \\;Co je SUID, SGID a Sticky bit?
Linux / UNIX :Jak najít soubory, které mají nastaveno SUID/SGID
Linux / UNIX :Příklady příkazu find k nalezení souborů se specifickými sadami oprávnění Konečný rozhovor s Linuxem otázky :swap