Upravljanje korisnicima i grupama, dozvolama i atributima datoteka i omogućavanje sudo pristupa na računima - 8. dio


Prošlog avgusta, Linux fondacija je započela LFCS certifikaciju (Linux Foundation Certified Sysadmin), potpuno novi program čija je svrha omogućiti pojedincima svuda i bilo gdje da polažu ispit kako bi dobiti certifikaciju za osnovnu do srednju operativnu podršku za Linux sisteme, što uključuje podršku pokrenutim sistemima i uslugama, zajedno sa cjelokupnim nadzorom i analizom, plus inteligentno donošenje odluka kako biste mogli odlučiti kada je potrebno eskalirati probleme timovima za podršku višeg nivoa.

Pogledajte sljedeći video koji opisuje uvod u program sertifikacije Linux Foundation.

Ovaj članak je dio 8 duge serije od 10 tutorijala, ovdje u ovom odjeljku, mi ćemo vas voditi o tome kako upravljati dozvolama korisnika i grupa u Linux sistemu, koje su potrebne za LFCS sertifikacijski ispit.

Budući da je Linux višekorisnički operativni sistem (po tome što omogućava više korisnika na različitim računarima ili terminalima da pristupe jednom sistemu), moraćete da znate kako da izvršite efikasno upravljanje korisnicima: kako da dodate, uredite, suspendujete ili obrišete korisničke naloge, zajedno sa dodeljivanjem potrebnih dozvola za obavljanje dodeljenih zadataka.

Dodavanje korisničkih naloga

Da biste dodali novi korisnički nalog, možete pokrenuti bilo koju od sljedeće dvije komande kao root.

adduser [new_account]
useradd [new_account]

Kada se u sistem doda novi korisnički nalog, izvode se sledeće operacije.

1. Njegov/njen početni direktorij je kreiran (/home/username po defaultu).

2. Sljedeći skriveni fajlovi se kopiraju u korisnički direktorij i koristit će se za obezbjeđivanje varijabli okruženja za njegovu/njenu korisničku sesiju.

.bash_logout
.bash_profile
.bashrc

3. mail spool je kreiran za korisnika na /var/spool/mail/korisničko ime.

4. Grupa je kreirana i dobila je isto ime kao novi korisnički nalog.

Razumijevanje /etc/passwd

Potpune informacije o računu pohranjene su u datoteci /etc/passwd. Ova datoteka sadrži zapis po sistemskom korisničkom računu i ima sljedeći format (polja su razdvojena dvotočkom).

[username]:[x]:[UID]:[GID]:[Comment]:[Home directory]:[Default shell]
  1. Polja [korisničko ime] i [Komentar] su sama po sebi razumljiva.
  2. x u drugom polju označava da je račun zaštićen zasjenjenom lozinkom (u /etc/shadow), koja je potrebna za prijavu kao [korisničko ime] .
  3. Polja [UID] i [GID] su cijeli brojevi koji predstavljaju identifikaciju korisnika i primarnu identifikaciju grupe kojoj [korisničko ime] pripada, respektivno .
  4. [Početni direktorij] označava apsolutnu putanju do [korisničko ime] kućnog direktorija, i
  5. [Default shell] je ljuska koja će biti dostupna ovom korisniku kada se on ili ona prijavi na sistem.
Razumijevanje /etc/group

Informacije o grupi su pohranjene u datoteci /etc/group. Svaki zapis ima sljedeći format.

[Group name]:[Group password]:[GID]:[Group members]
  1. [Naziv grupe] je naziv grupe.
  2. Znak x u [Grupna lozinka] označava da se grupne lozinke ne koriste.
  3. [GID]: isto kao u /etc/passwd.
  4. [Članovi grupe]: lista korisnika odvojenih zarezima koji su članovi [naziv grupe].

Nakon dodavanja naloga, možete urediti sljedeće informacije (da imenujete nekoliko polja) koristeći naredbu usermod, čija je osnovna sintaksa usermod-a sljedeća.

usermod [options] [username]
Postavljanje datuma isteka za račun

Koristite oznaku –istek nakon koje slijedi datum u formatu GGGG-MM-DD.

usermod --expiredate 2014-10-30 tecmint
Dodavanje korisnika u dodatne grupe

Koristite kombinovane opcije -aG ili –dodaj –grupe, nakon čega slijedi lista grupa odvojenih zarezima.

usermod --append --groups root,users tecmint
Promjena zadane lokacije korisničkog kućnog direktorija

Koristite opcije -d ili –home, nakon čega slijedi apsolutna putanja do novog matičnog direktorija.

usermod --home /tmp tecmint
Promjena ljuske koju će korisnik koristiti po defaultu

Koristite –ljusku, nakon čega slijedi putanja do nove ljuske.

usermod --shell /bin/sh tecmint
Prikaz grupa čiji je korisnik član
groups tecmint
id tecmint

Sada izvršimo sve gore navedene komande u jednom potezu.

usermod --expiredate 2014-10-30 --append --groups root,users --home /tmp --shell /bin/sh tecmint

U gornjem primjeru, postavit ćemo datum isteka tecmint korisničkog računa na 30. oktobar 2014.. Također ćemo dodati račun u root i korisničku grupu. Konačno, postavit ćemo sh kao zadanu ljusku i promijeniti lokaciju početnog direktorija u /tmp:

Pročitajte također:

  1. 15 primjera naredbi useradd u Linuxu
  2. 15 primjera naredbi usermod u Linuxu

Za postojeće račune možemo uraditi i sljedeće.

Onemogućavanje naloga zaključavanjem lozinke

Koristite -L (velika slova L) ili –lock opciju da zaključate korisničku lozinku.

usermod --lock tecmint
Otključavanje korisničke lozinke

Koristite opciju –u ili –otključaj da otključate korisničku lozinku koja je prethodno bila blokirana.

usermod --unlock tecmint

Kreiranje nove grupe za pristup za čitanje i pisanje datotekama kojima treba pristupiti nekoliko korisnika

Pokrenite sljedeću seriju naredbi da postignete cilj.

groupadd common_group # Add a new group
chown :common_group common.txt # Change the group owner of common.txt to common_group
usermod -aG common_group user1 # Add user1 to common_group
usermod -aG common_group user2 # Add user2 to common_group
usermod -aG common_group user3 # Add user3 to common_group
Brisanje grupe

Grupu možete izbrisati sljedećom naredbom.

groupdel [group_name]

Ako postoje fajlovi u vlasništvu group_name, oni neće biti izbrisani, ali će vlasnik grupe biti postavljen na GID grupe koja je obrisana.

Dozvole za Linux fajlove

Osim osnovnih dozvola za čitanje, pisanje i izvršavanje o kojima smo raspravljali u Alati za arhiviranje i postavljanje atributa datoteke – dio 3 ove serije, postoje i druge manje korištene (ali ne manje važne) postavke dozvola, koje se ponekad nazivaju „posebne dozvole ”.

Kao i osnovne dozvole o kojima smo ranije govorili, one se postavljaju pomoću oktalne datoteke ili putem slova (simbolička notacija) koje označava tip dozvole.

Brisanje korisničkih naloga

Možete obrisati nalog (zajedno sa njegovim početnim direktorijumom, ako je u vlasništvu korisnika, i sve datoteke koje se nalaze u njemu, kao i mail spool) koristeći naredbu userdel sa –remove opcija.

userdel --remove [username]

Grupno upravljanje

Svaki put kada se u sistem doda novi korisnički nalog, kreira se grupa sa istim imenom sa korisničkim imenom kao jedinim članom. Ostali korisnici se mogu naknadno dodati u grupu. Jedna od svrha grupa je implementacija jednostavne kontrole pristupa datotekama i drugim sistemskim resursima postavljanjem pravih dozvola za te resurse.

Na primjer, pretpostavimo da imate sljedeće korisnike.

  1. korisnik1 (primarna grupa: korisnik1)
  2. korisnik2 (primarna grupa: korisnik2)
  3. korisnik3 (primarna grupa: korisnik3)

Svima im je potreban pristup čitanju i pisanju datoteci pod nazivom common.txt koja se nalazi negdje na vašem lokalnom sistemu, ili možda na mrežnom dijeljenju koji korisnik1 je kreirao. Možda ćete biti u iskušenju da uradite nešto poput,

chmod 660 common.txt
OR
chmod u=rw,g=rw,o= common.txt [notice the space between the last equal sign and the file name]

Međutim, ovo će omogućiti samo čitanje i pisanje pristup vlasniku datoteke i onim korisnicima koji su članovi grupe vlasnika datoteke (korisnik1 u ovom slučaju). Opet, možda ćete biti u iskušenju da dodate user2 i user3 u grupu user1, ali to će im također omogućiti pristup ostatku datoteka u vlasništvu od korisnika user1 i grupe user1.

Ovdje grupe dobro dolaze, a evo šta biste trebali učiniti u ovakvom slučaju.

Razumijevanje Setuida

Kada se dozvola setuid primjenjuje na izvršnu datoteku, korisnik koji pokreće program nasljeđuje efektivne privilegije vlasnika programa. Budući da ovaj pristup može razumno izazvati zabrinutost u pogledu sigurnosti, broj datoteka sa setuid dozvolom mora se svesti na minimum. Verovatno ćete pronaći programe sa ovim postavljenim dozvolama kada korisnik sistema treba da pristupi datoteci u vlasništvu root-a.

Ukratko, ne radi se samo o tome da korisnik može izvršiti binarnu datoteku, već i da to može učiniti s root privilegijama. Na primjer, hajde da provjerimo dozvole /bin/passwd. Ova binarna datoteka se koristi za promjenu lozinke naloga i modificira datoteku /etc/shadow. Superkorisnik može promijeniti biločiju lozinku, ali svi ostali korisnici bi trebali moći promijeniti samo svoju.

Dakle, svaki korisnik bi trebao imati dozvolu za pokretanje /bin/passwd, ali samo root će moći odrediti račun. Drugi korisnici mogu promijeniti samo svoje odgovarajuće lozinke.

Razumijevanje Setgida

Kada je bit setgid postavljen, efektivni GID stvarnog korisnika postaje onaj vlasnika grupe. Dakle, svaki korisnik može pristupiti datoteci pod privilegijama koje su dodijeljene vlasniku grupe te datoteke. Osim toga, kada je setgid bit postavljen na direktorij, novokreirane datoteke nasljeđuju istu grupu kao i direktorij, a novokreirani poddirektoriji će također naslijediti setgid bit roditeljskog direktorija. Ovaj pristup ćete najvjerovatnije koristiti kad god članovi određene grupe trebaju pristup svim datotekama u direktoriju, bez obzira na primarnu grupu vlasnika datoteke.

chmod g+s [filename]

Da biste postavili setgid u oktalnom obliku, dodajte broj 2 na trenutne (ili željene) osnovne dozvole.

chmod 2755 [directory]
Postavljanje SETGID-a u direktorij

Razumijevanje Sticky Bit

Kada je “ljepljivi bit” postavljen na datoteke, Linux ga jednostavno ignorira, dok za direktorije ima učinak sprječavanja korisnika da brišu ili čak preimenuju datoteke koje sadrži osim ako korisnik ne posjeduje direktorij, fajl, ili je root.

chmod o+t [directory]

Da postavite ljepljivi bit u oktalnom obliku, dodajte broj 1 trenutnim (ili željenim) osnovnim dozvolama.

chmod 1755 [directory]

Bez ljepljivog bita, svako ko može pisati u direktorij može izbrisati ili preimenovati datoteke. Iz tog razloga, sticky bit se obično nalazi u direktorijima, kao što je /tmp, koji se mogu pisati u cijelom svijetu.

Posebni atributi Linux datoteka

Postoje i drugi atributi koji omogućavaju dalja ograničenja operacija koje su dozvoljene nad datotekama. Na primjer, spriječite da se datoteka preimenuje, premjesti, izbriše ili čak modificira. Postavljaju se pomoću naredbe chattr i mogu se vidjeti pomoću alata lsattr, kako slijedi.

chattr +i file1
chattr +a file2

Nakon izvršenja te dvije naredbe, file1 će biti nepromjenjiv (što znači da se ne može premjestiti, preimenovati, modificirati ili izbrisati) dok će file2 ući u način samo dodavanja (može biti samo otvoriti u načinu dodavanja za pisanje).

Pristup root nalogu i korišćenje sudo

Jedan od načina na koji korisnici mogu dobiti pristup root nalogu je kucanje.

su

a zatim unesite root-ovu lozinku.

Ako autentifikacija uspije, bit ćete prijavljeni kao root sa trenutnim radnim direktorijumom koji je isti kao i prije. Ako umjesto toga želite da budete smješteni u korijenski početni direktorij, pokrenite.

su -

a zatim unesite root-ovu lozinku.

Gornja procedura zahtijeva da normalan korisnik zna root-ovu lozinku, što predstavlja ozbiljan sigurnosni rizik. Iz tog razloga, sysadmin može konfigurirati naredbu sudo da omogući običnom korisniku da izvršava komande kao drugi korisnik (obično superkorisnik) na vrlo kontroliran i ograničen način. Dakle, ograničenja se mogu postaviti na korisnika tako da mu se omogući pokretanje jedne ili više specifičnih privilegiranih naredbi i nijedne druge.

Pročitajte također: Razlika između korisnika su i sudo

Za autentifikaciju korištenjem sudo, korisnik koristi vlastitu lozinku. Nakon unosa naredbe, od nas će biti zatraženo da unesemo našu lozinku (ne superkorisnikovu) i ako autentifikacija uspije (i ako je korisniku dodijeljena privilegije za pokretanje naredbe), navedena naredba se izvršava.

Da bi odobrio pristup sudou, administrator sistema mora urediti datoteku /etc/sudoers. Preporučljivo je da se ovaj fajl uredi pomoću naredbe visudo umjesto da se otvara direktno u uređivaču teksta.

visudo

Ovo otvara datoteku /etc/sudoers koristeći vim (možete slijediti upute date u Instaliraj i koristi vim kao uređivač – 2. dio ove serije za uređivanje datoteke).

Ovo su najrelevantnije linije.

Defaults    secure_path="/usr/sbin:/usr/bin:/sbin"
root        ALL=(ALL) ALL
tecmint     ALL=/bin/yum update
gacanepa    ALL=NOPASSWD:/bin/updatedb
%admin      ALL=(ALL) ALL

Pogledajmo ih pobliže.

Defaults    secure_path="/usr/sbin:/usr/bin:/sbin:/usr/local/bin"

Ova linija vam omogućava da odredite direktorije koji će se koristiti za sudo i koristi se za sprječavanje korištenja korisničkih specifičnih direktorija, koji mogu naštetiti sistemu.

Sljedeći redovi se koriste za specificiranje dozvola.

root        ALL=(ALL) ALL
  1. Prva ključna riječ ALL označava da se ovo pravilo primjenjuje na sve hostove.
  2. Drugi SVE označava da korisnik u prvoj koloni može pokrenuti komande s privilegijama bilo kojeg korisnika.
  3. Treći ALL znači da se svaka naredba može pokrenuti.
tecmint     ALL=/bin/yum update

Ako nijedan korisnik nije naveden iza znaka =, sudo pretpostavlja root korisnika. U ovom slučaju, korisnik tecmint će moći pokrenuti yum update kao root.

gacanepa    ALL=NOPASSWD:/bin/updatedb

NOPASSWD direktiva dozvoljava korisniku gacanepa da pokrene /bin/updatedb bez potrebe da unese svoju lozinku.

%admin      ALL=(ALL) ALL

Znak % označava da se ova linija odnosi na grupu koja se zove “admin”. Značenje ostatka linije je identično onom kod običnog korisnika. To znači da članovi grupe “admin” mogu izvoditi sve naredbe kao bilo koji korisnik na svim hostovima.

Da vidite koje vam privilegije daje sudo, koristite opciju “-l ” da ih navedete.

PAM (moduli za provjeru autentičnosti koji se mogu priključiti)

Moduli za provjeru autentičnosti koji se mogu priključiti (PAM) nude fleksibilnost postavljanja specifične šeme provjere autentičnosti za svaku aplikaciju i/ili uslugu koristeći module. Ovaj alat prisutan u svim modernim distribucijama Linuxa prevazišao je problem s kojim su se često suočavali programeri u ranim danima Linuxa, kada je svaki program koji je zahtijevao autentifikaciju morao biti posebno kompajliran da bi znao kako doći do potrebnih informacija.

Na primjer, kod PAM-a nije važno da li je vaša lozinka pohranjena u /etc/shadow ili na zasebnom serveru unutar vaše mreže.

Na primjer, kada program za prijavu treba autentifikovati korisnika, PAM dinamički pruža biblioteku koja sadrži funkcije za pravu šemu provjere autentičnosti. Stoga je promjena šeme provjere autentičnosti za aplikaciju za prijavu (ili bilo koji drugi program koji koristi PAM) laka jer uključuje samo uređivanje konfiguracijske datoteke (najvjerovatnije, datoteke nazvane po aplikaciji, koja se nalazi unutar /etc/pam.d , a manje vjerovatno u /etc/pam.conf).

Fajlovi unutar /etc/pam.d pokazuju koje aplikacije izvorno koriste PAM. Osim toga, možemo utvrditi da li određena aplikacija koristi PAM provjerom da li je PAM biblioteka (libpam) povezana s njom:


ldd $(which login) | grep libpam # login uses PAM
ldd $(which top) | grep libpam # top does not use PAM

Na gornjoj slici možemo vidjeti da je libpam povezan sa aplikacijom za prijavu. Ovo ima smisla jer je ova aplikacija uključena u rad sistemske autentikacije korisnika, dok top ne.

Hajde da ispitamo PAM konfiguracioni fajl za passwd – da, dobro poznati uslužni program za promjenu korisničkih lozinki. Nalazi se na /etc/pam.d/passwd:


cat /etc/passwd

Prva kolona označava tip autentifikacije koja će se koristiti sa module-path (treća kolona). Kada se crtica pojavi ispred tipa, PAM neće snimati u sistemski dnevnik ako se modul ne može učitati jer se ne može pronaći u sistemu.

Dostupne su sljedeće vrste provjere autentičnosti:

  1. nalog: ovaj tip modula provjerava da li je korisnik ili usluga dostavio važeće vjerodajnice za autentifikaciju.
  2. auth: ovaj tip modula potvrđuje da je korisnik ono za koga se predstavlja i daje sve potrebne privilegije.
  3. password: ovaj tip modula omogućava korisniku ili servisu da ažurira svoju lozinku.
  4. session: ovaj tip modula ukazuje na ono što treba učiniti prije i/ili nakon što autentifikacija uspije.

Druga kolona (nazvana control) pokazuje šta bi se trebalo dogoditi ako autentifikacija s ovim modulom ne uspije:

  1. requisite: ako autentifikacija putem ovog modula ne uspije, ukupna autentifikacija će biti odmah odbijena.
  2. required je sličan potrebnom, iako će svi ostali navedeni moduli za ovu uslugu biti pozvani prije odbijanja autentifikacije.
  3. dovoljno: ako autentifikacija putem ovog modula ne uspije, PAM će i dalje odobriti autentifikaciju čak i ako prethodna označena kao obavezna nije uspjela.
  4. opciono: ako autentifikacija preko ovog modula ne uspije ili ne uspije, ništa se neće dogoditi osim ako je ovo jedini modul tog tipa definiran za ovu uslugu.
  5. include znači da bi redovi datog tipa trebali biti pročitani iz drugog fajla.
  6. podstack je sličan uključivanju, ali neuspjesi ili uspjesi u autentifikaciji ne uzrokuju izlaz cijelog modula, već samo podsklada.

Četvrta kolona, ako postoji, prikazuje argumente koji se prosljeđuju modulu.

Prva tri reda u /etc/pam.d/passwd (prikazano gore), učitavaju system-auth modul da provjerite da li je korisnik dao važeće akreditive (račun) . Ako je tako, dozvoljava mu/joj da promijeni token za autentifikaciju (lozinku) davanjem dozvole za korištenje passwd (auth).

Na primjer, ako dodate


remember=2

na sljedeći red


password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok

u /etc/pam.d/system-auth:


password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=2

posljednje dvije raspršene lozinke svakog korisnika se spremaju u /etc/security/opasswd tako da se ne mogu ponovo koristiti:

Sažetak

Vještine efektivnog upravljanja korisnicima i datotekama su osnovni alati za svakog administratora sistema. U ovom članku smo pokrili osnove i nadamo se da ćete to moći koristiti kao dobar početak za nadogradnju. Slobodno ostavite svoje komentare ili pitanja ispod, a mi ćemo brzo odgovoriti.