Kako koristiti SUID, SGID i Sticky Bits na Linuxu

Prozor terminala na Linux sustavu.

Fatmawati Achmad Zaenuri/Shutterstock



SUID, SGID i Sticky Bits moćna su posebna dopuštenja koja možete postaviti za izvršne datoteke i direktorije na Linuxu. Podijelit ćemo prednosti – i potencijalne zamke – njihove upotrebe.

Već su u upotrebi

Ugradnja sigurnosti u višekorisnički operativni sustav predstavlja nekoliko nedoumica. Uzmimo za primjer (naizgled) osnovni koncept lozinki. Sve ih je potrebno pohraniti tako da svaki put kada se netko prijavi, sustav može usporediti lozinku koju upiše sa pohranjenom kopijom. Očito, kako su lozinke ključevi kraljevstva, moraju se čuvati.





U Linuxu su pohranjene lozinke zaštićene na dva načina: šifrirane su i samo netko s |_+_| privilegije mogu pristupiti datoteci koja sadrži lozinke. To bi moglo zvučati dobro, ali predstavlja nedoumicu: Kad bi samo ljudi s |_+_| privilegije mogu pristupiti pohranjenim lozinkama, kako oni koji nemaju taj pristup mijenjaju svoje lozinke?

Podizanje vašeg statusa

Obično se Linux naredbe i programi izvode s istim skupom dopuštenja kao i osoba koja pokreće program. Kada |_+_| pokreće |_+_| naredba za promjenu lozinke , radi s dopuštenjima |_+_|. To znači |_+_| naredba može slobodno pristupiti pohranjenim lozinkama u |_+_| datoteka.



Ono što bi bilo idealno je shema u kojoj bi svatko u sustavu mogao pokrenuti |_+_| program, ali imaju |_+_| program zadržava |_+_|ove povišene privilegije. To bi svakome omogućilo promjenu vlastite lozinke.

Oglas

Gornji scenarij je upravo ono što radi bit Set User ID (|_+_|). To pokreće programe i naredbe s dopuštenjima vlasnika datoteke, a ne s dopuštenjima osobe koja pokreće program.

Podižete status programa

Međutim, postoji još jedna nedoumica. Osoba mora biti spriječena da se miješa u tuđu lozinku. Linux uključuje |_+_| shema koja mu omogućuje pokretanje aplikacija sa skupom privremeno posuđenih dozvola - ali to je samo polovica sigurnosne priče.



Kontrolni mehanizam koji sprječava nekoga da radi s lozinkom druge osobe nalazi se unutar |_+_| program, a ne operativni sustav i SUID shema.

Programi koji se pokreću s povišenim privilegijama mogu predstavljati sigurnosne rizike ako nisu kreirani s načinom razmišljanja o sigurnosti. To znači da je sigurnost prva stvar koju uzmete u obzir, a zatim na to nadograđujete. Nemojte pisati svoj program, a zatim mu nakon toga pokušajte dati zaštitni sloj.

Najveća prednost softvera otvorenog koda je možete sami pogledati izvorni kod ili se uputite na provjerene recenzije kolega. U izvornom kodu za |_+_| programa, postoje provjere, tako da možete vidjeti je li osoba koja pokreće program |_+_|. Dopuštene su različite mogućnosti ako je netko |_+_| (ili netko tko koristi |_+_|).

Ovaj je kod koji otkriva je li netko |_+_|.

Isječak izvornog koda iz

Sljedeći je primjer u kojem je to uzeto u obzir. Jer |_+_| može promijeniti bilo koju lozinku, program se ne mora zamarati provjerama koje obično obavlja kako bi vidio koje lozinke osoba ima dopuštenje za promjenu. Dakle, za |_+_|, to preskače te provjere i izlazi iz funkcije provjere .

Isječak izvornog koda iz

Oglas

S osnovnim naredbama i uslužnim programima Linuxa, možete biti sigurni da su u njih ugrađena sigurnost i da je kod pregledan mnogo puta. Naravno, uvijek postoji prijetnja od još nepoznatih podviga. Međutim, brzo se pojavljuju zakrpe ili ažuriranja kako bi se suprotstavili novootkrivenim ranjivostima.

Radi se o softveru treće strane—posebno onom koji nije otvorenog koda—trebate biti iznimno oprezni pri korištenju |_+_| s. Ne kažemo da to ne radite, ali, ako to učinite, želite biti sigurni da to neće izložiti vaš sustav riziku. Ne želite podići privilegije programa koji neće ispravno samostalno upravljati sobom i osobom koja ga pokreće.

Linux naredbe koje koriste SUID

Slijedi nekoliko Linux naredbi koje koriste SUID bit za davanje naredbi povišenih privilegija kada ih izvodi obični korisnik:

root root root passwd root

Imajte na umu da su nazivi datoteka označeni crvenom bojom, što označava da je SUID bit postavljen.

Dozvole za datoteku ili direktorij obično su predstavljene s tri skupine od tri znaka: rwx. Oni označavaju čitanje, pisanje i izvršavanje. Ako su pisma prisutna, to je dopuštenje odobreno. Međutim, ako je umjesto slova prisutna crtica (|_+_|), to dopuštenje nije dano.

Postoje tri grupe ovih dopuštenja (s lijeva na desno): one za vlasnika datoteke, za članove grupe datoteke i za ostale. Kada je |_+_| bit je postavljen na datoteku, a s predstavlja dopuštenje za izvršavanje vlasnika.

Oglas

Ako je |_+_| bit je postavljen na datoteku koja nema izvršne mogućnosti, velika slova S to označavaju.

Pogledat ćemo primjer. Redovni korisnik |_+_| upisuje |_+_| naredba:

passwd

The |_+_| naredbene linije |_+_| za njegovu novu lozinku. Možemo koristiti |_+_| naredba da biste vidjeli pojedinosti pokrenutih procesa .

Koristit ćemo |_+_| sa |_+_| u drugom prozoru terminala i potražite |_+_| postupak. Također ćemo koristiti |_+_| (svaki proces) i |_+_| (punog formata) opcije s |_+_|.

Upisujemo sljedeću naredbu:

/etc/shadow

Izvještavaju se o dvije linije, od kojih je drugi |_+_| proces koji traži naredbe s nizom passwd u njima. Ipak, to je prva linija koja nas zanima, jer je ona za |_+_| proces |_+_| pokrenut.

Možemo vidjeti |_+_| proces radi isto kao i ako |_+_| ga je lansirao.

Postavljanje bita SUID

Lako je promijeniti |_+_| bit s |_+_|. The |_+_| simbolički način postavlja |_+_| bit i |_+_| simbolički način briše |_+_| malo.

Oglas

Da bismo ilustrirali neke od koncepata bita SUID, kreirali smo mali program pod nazivom |_+_|. Nalazi se u korijenskom direktoriju |_+_| korisnika, a nema |_+_| bit set. Kada se izvrši, prikazuje stvarne i učinkovite korisničke ID-ove ( UID ).

Stvarno UID pripada osobi koja je pokrenula program. Efektivni ID je račun s kojim se program ponaša kao da je pokrenut.

Upisujemo sljedeće:

passwd passwd

Kada pokrenemo lokalnu kopiju programa, vidimo da su stvarni i učinkoviti ID-ovi postavljeni na |_+_|. Dakle, ponaša se baš kako bi normalan program trebao.

Kopirajmo ga u |_+_| imenik kako bi ga drugi mogli koristiti.

Upisujemo sljedeće, koristeći |_+_| za postavljanje |_+_| bit, a zatim provjerite je li postavljeno:

root SUID SUID

Oglas

Dakle, program je kopiran i postavljen je SUID bit. Pokrenut ćemo ga ponovno, ali ovaj put ćemo pokrenuti kopiju u |_+_| mapa:

passwd

Iako |_+_| pokrenuo program, efektivni ID je postavljen na |_+_| korisnik. Dakle, ako |_+_| pokrene program, događa se ista stvar, kao što je prikazano u nastavku:

passwd

Pravi ID je |_+_|, a efektivni ID je |_+_|. Program radi s dopuštenjima root korisnika.

POVEZANO: Kako koristiti naredbu chmod na Linuxu

Bit SGID

Bit Postavi ID grupe (|_+_|) vrlo je sličan |_+_| malo. Kada je |_+_| bit je postavljen na izvršnu datoteku, efektivna grupa je postavljena na grupu datoteke. Proces se izvodi s dopuštenjima članova grupe datoteke, a ne s dopuštenjima osobe koja ga je pokrenula.

Dotjerali smo naše |_+_| program tako da pokazuje i učinkovitu grupu. Promijenit ćemo grupu |_+_| program koji će biti zadana grupa korisnika |_+_|, |_+_|. Također ćemo koristiti |_+_| i |_+_| simbolički načini s |_+_| za uklanjanje |_+_| bit i postavite |_+_|.

Da bismo to učinili, upisujemo sljedeće:

root root sudo

Možete vidjeti |_+_| bit označen sa s u dopuštenjima grupe. Također, imajte na umu da je grupa postavljena na |_+_| a naziv datoteke sada je označen žutom bojom.

Oglas

Prije nego što pokrenemo program, ustanovimo koje grupe |_+_| i |_+_| pripada. Koristit ćemo |_+_| naredba s |_+_| (skupine) opcija, za ispis svih ID-ova grupe . Zatim ćemo pokrenuti |_+_| programirati kao |_+_|.

Upisujemo sljedeće naredbe:

root root root

ID zadane grupe za |_+_| je 1001, a efektivna grupa od |_+_| program je 1001. Dakle, iako ga je pokrenuo |_+_|, on radi s dopuštenjima članova u |_+_| skupina. To je isto kao da |_+_| pridružio se |_+_| skupina.

Primijenimo |_+_| bit do imenika. Prvo ćemo stvoriti direktorij pod nazivom rad, a zatim njegovu grupu promijeniti u geek. Zatim ćemo postaviti |_+_| malo u imeniku.

Kada koristimo |_+_| za provjeru postavki imenika, također ćemo koristiti |_+_| (imenik) opciju tako da vidimo detalje imenika, a ne njegov sadržaj.

Upisujemo sljedeće naredbe:

SUID - SUID SUID

The |_+_| bit i geek grupa su postavljeni. To će utjecati na sve stavke stvorene unutar |_+_| imenik.

Upisujemo sljedeće za unos |_+_| imenik, kreirajte direktorij pod nazivom demo i provjerite njegova svojstva:

dave passwd passwd

Oglas

The |_+_| bit i geek grupa se automatski primjenjuju na demo direktorij.

Upišimo sljedeće da kreiramo datoteku s dave naredba i provjeri njena svojstva:

ps ps

Grupa nove datoteke automatski se postavlja na geek.

POVEZANO: Kako koristiti naredbu chown na Linuxu

Sticky Bit

Ljepljivi komad je dobio ime po svojoj povijesnoj namjeni. Kada se postavi na izvršnu datoteku, operacijskom sustavu je označeno da se tekstualni dijelovi izvršne datoteke trebaju držati u zamijeniti , što čini njihovu ponovnu upotrebu bržom. Na Linuxu, sticky bit utječe samo na direktorij - postavljanje na datoteku ne bi imalo smisla.

Kada postavite sticky bit na direktorij, ljudi mogu brisati samo datoteke koje im pripadaju unutar tog direktorija. Ne mogu izbrisati datoteke koje pripadaju nekom drugom, bez obzira na to koja je kombinacija dopuštenja datoteka postavljena na datoteke.

To vam omogućuje stvaranje direktorija koji svi – i procesi koje pokreću – mogu koristiti kao zajedničku pohranu datoteka. Datoteke su zaštićene jer, opet, nitko ne može izbrisati tuđe datoteke.

Oglas

Kreirajmo direktorij pod nazivom shared. Koristit ćemo |_+_| simbolički način s |_+_| da postavite ljepljivi bit na taj direktorij. Zatim ćemo pogledati dopuštenja za taj direktorij, kao i |_+_| i |_+_| imenike.

Upisujemo sljedeće naredbe:

grep passwd -e -f ps

Ako je sticky bit postavljen, izvršni bit drugog skupa dopuštenja datoteke postavljen je na t. Naziv datoteke također je istaknut plavom bojom.

The |_+_| i |_+_| mape su dva primjera direktorija koji imaju sva dopuštenja datoteka postavljena za vlasnika, grupu i druge (zato su označeni zelenom bojom). Koriste se kao dijeljene lokacije za privremene datoteke.

S tim dopuštenjima svatko bi, teoretski, trebao moći učiniti bilo što. Međutim, ljepljivi bit ih nadjačava i nitko ne može izbrisati datoteku koja mu ne pripada.

Podsjetnici

Slijedi kratki kontrolni popis onoga što smo pokrili gore za buduću upotrebu:

  • |_+_| radi samo na datotekama.
  • Možete se prijaviti |_+_| u direktorije i datoteke.
  • Sticky bit možete primijeniti samo na direktorije.
  • Ako su |_+_|, |_+_| ili |_+_| indikatori se pojavljuju velikim slovima, izvršni bit (|_+_|) nije postavljen.
PROČITAJTE SLJEDEĆE Fotografija profila Davea McKaya Dave McKay
Dave McKay je prvi put koristio računala kada je bušena papirna traka bila u modi i od tada se bavi programiranjem. Nakon više od 30 godina u IT industriji, sada je stalni tehnološki novinar. Tijekom svoje karijere radio je kao freelance programer, voditelj međunarodnog tima za razvoj softvera, voditelj projekta IT usluga, a nedavno i kao službenik za zaštitu podataka. Njegovo pisanje objavili su howtogeek.com, cloudsavvyit.com, tenterpriser.com i opensource.com. Dave je Linux evanđelist i zagovornik otvorenog koda.
Pročitajte cijelu biografiju

Zanimljivi Članci