Gym
lesson

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, x postoji
  • Veliko slovo (S, T) — specijalna dozvola setovana, x ne postoji
  • /tmp ima sticky bit — drwxrwxrwt
  • /usr/bin/passwd ima SUID — -rwsr-xr-x