Specijalne dozvole
Cilj lekcije: Upoznati se sa tri specijalne Linux dozvole — SUID, SGID i sticky bit — znati kako ih prepoznati u ls -l izlazu i razumeti kada se pojavljuju.
Uvod u specijalne dozvole
Pored standardnih rwx dozvola, Linux ima jos tri "specijalne" dozvole koje menjaju ponasanje izvrsnih fajlova i direktorijuma. Svaka ima svoju oktalnu vrednost i prepoznatljiv simbol u ls -l izlazu.
| Dozvola | Oktal | Simbol | Primenjuje se na |
|---|---|---|---|
| SUID | 4000 | s (na x poziciji vlasnika) |
Izvrsni fajlovi |
| SGID | 2000 | s (na x poziciji grupe) |
Fajlovi i direktorijumi |
| Sticky bit | 1000 | t (na x poziciji ostalih) |
Direktorijumi |
SUID — Set User ID (4000)
Kada se izvrsni fajl sa SUID bitom pokrene, proces se izvrsava sa pravima vlasnika fajla, a ne sa pravima korisnika koji ga pokrene.
Primer — komanda passwd:
ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 59976 Mar 22 2024 /usr/bin/passwd
Malo s na poziciji x vlasnika oznacava SUID. Komanda passwd mora da upise u /etc/shadow (zastiten fajl dostupan samo root-u) — SUID joj to omogucava jer se izvrsava kao root, bez obzira ko je pokrenuo.
Isto vazi za su i sudo — sve tri komande imaju SUID jer trebaju root privilegije da bi radile za sve korisnike.
Prepoznavanje u ls -l:
-rwsr-xr-x ← malo 's' — SUID setovan, x postoji
-rwSr-xr-x ← veliko 'S' — SUID setovan, x ne postoji
Kako setovati:
chmod u+s program # simbolicki
chmod 4755 program # oktalni
SGID — Set Group ID (2000)
Na direktorijumu, SGID znaci da novi fajlovi kreirati unutar njega automatski nasledjuju grupu tog direktorijuma — korisno za deljene direktorijume timova.
chmod g+s deljeni-dir/ # simbolicki
chmod 2775 deljeni-dir/ # oktalni
Prepoznavanje u ls -l:
drwxrwsr-x ← malo 's' na mestu 'x' grupe — SGID setovan
Na izvrsnom fajlu, SGID funkcionise slicno kao SUID ali sa grupom umesto vlasnika.
Sticky bit (1000)
Sticky bit na direktorijumu znaci: samo vlasnik fajla (ili root) moze da obrise ili preimenuje fajl unutar tog direktorijuma, cak i ako drugi korisnici imaju w dozvolu.
Primer — /tmp direktorijum:
ls -ld /tmp
drwxrwxrwt 10 root root 4096 Apr 13 12:00 /tmp
Malo t na kraju — sticky bit je setovan. /tmp je otvoren za sve (rwxrwxrwx), ali svaki korisnik moze da brise samo svoje fajlove.
Prepoznavanje u ls -l:
drwxrwxrwt ← malo 't' — sticky bit setovan, x postoji
drwxrwxrwT ← veliko 'T' — sticky bit setovan, x ne postoji
Kako setovati:
chmod o+t /deljeni/direktorijum/ # simbolicki
chmod 1777 /tmp-direktorijum/ # oktalni
Rezime
| Dozvola | Simbol | Oktal | Gde | Efekat |
|---|---|---|---|---|
| SUID | s/S na u poziciji |
4000 | Izvrsni fajl | Izvrsava se kao vlasnik fajla |
| SGID | s/S na g poziciji |
2000 | Direktorijum | Novi fajlovi nasledjuju grupu |
| Sticky | t/T na o poziciji |
1000 | Direktorijum | Samo vlasnik moze brisati |
- Malo slovo (
s,t) — specijalna dozvola setovana,xpostoji - Veliko slovo (
S,T) — specijalna dozvola setovana,xne postoji /tmpima sticky bit —drwxrwxrwt/usr/bin/passwdima SUID —-rwsr-xr-x