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


Prošlog kolovoza Linux Foundation pokrenuo je LFCS certifikaciju (Linux Foundation Certified Sysadmin), potpuno novi program čija je svrha omogućiti pojedincima svugdje i bilo gdje da polažu ispit kako bi certificirajte se za osnovnu do srednju operativnu podršku za Linux sustave, što uključuje podršku operativnim sustavima i uslugama, zajedno s ukupnim nadzorom i analizom, plus inteligentno donošenje odluka kako biste mogli odlučiti kada je potrebno eskalirati probleme timovima za podršku na višoj razini.

Na brzinu pogledajte sljedeći video koji opisuje uvod u program certifikacije Linux Foundation.

Ovaj članak je dio 8 duge serije od 10 tutorijala, ovdje u ovom odjeljku, vodit ćemo vas o tome kako upravljati dozvolama za korisnike i grupe u sustavu Linux, koje su potrebne za LFCS certifikacijski ispit.

Budući da je Linux operacijski sustav za više korisnika (utoliko što omogućuje više korisnika na različitim računalima ili terminalima da pristupe jednom sustavu), morat ćete znati kako izvršiti učinkovito upravljanje korisnicima: kako dodati, urediti, obustaviti ili izbrisati korisničkih računa, uz dodjeljivanje potrebnih dopuštenja za obavljanje dodijeljenih zadataka.

Dodavanje korisničkih računa

Za dodavanje novog korisničkog računa, možete pokrenuti bilo koju od sljedeće dvije naredbe kao root.

adduser [new_account]
useradd [new_account]

Kada se u sustav doda novi korisnički račun, izvode se sljedeće operacije.

1. Njegov/njezin matični direktorij je kreiran (/home/username prema zadanim postavkama).

2. Sljedeće skrivene datoteke kopiraju se u korisnikov početni direktorij i koristit će se za pružanje varijabli okruženja za njegovu/njezinu korisničku sesiju.

.bash_logout
.bash_profile
.bashrc

3. Spool pošte kreiran je za korisnika na /var/spool/mail/username.

4. Grupa se stvara i dobiva isti naziv kao novi korisnički račun.

Razumijevanje /etc/passwd

Potpuni podaci o računu pohranjeni su u datoteci /etc/passwd. Ova datoteka sadrži zapis po korisničkom računu sustava 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 [username] .
  3. Polja [UID] i [GID] su cijeli brojevi koji predstavljaju identifikaciju korisnika i ID primarne grupe kojoj pripada [korisničko ime] .
  4. [Home directory] označava apsolutni put do [username]'s home directory, i
  5. [Zadana ljuska] je ljuska koja će biti dostupna ovom korisniku kada se on ili ona prijavi u sustav.
Razumijevanje /etc/group

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

[Group name]:[Group password]:[GID]:[Group members]
  1. [Naziv grupe] je naziv grupe.
  2. x u [Zaporka grupe] označava da se zaporke grupe ne koriste.
  3. [GID]: isto kao u /etc/passwd.
  4. [Članovi grupe]: popis korisnika koji su članovi [Naziv grupe] odvojen zarezima.

Nakon dodavanja računa, možete urediti sljedeće informacije (da imenujemo nekoliko polja) pomoću naredbe usermod, čija je osnovna sintaksa usermod-a sljedeća.

usermod [options] [username]
Postavljanje datuma isteka računa

Upotrijebite oznaku –istekli nakon koje slijedi datum u formatu GGGG-MM-DD.

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

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

usermod --append --groups root,users tecmint
Promjena zadane lokacije korisničkog matičnog imenika

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

usermod --home /tmp tecmint
Promjena ljuske koju će korisnik koristiti prema zadanim postavkama

Koristite –shell, nakon čega slijedi put do nove ljuske.

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

Sada izvršimo sve gornje naredbe odjednom.

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. listopada 2014.. Također ćemo dodati račun root i grupi korisnika. Konačno, postavit ćemo sh kao zadanu ljusku i promijeniti lokaciju početnog direktorija u /tmp:

Pročitajte također:

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

Za postojeće račune također možemo učiniti sljedeće.

Onemogućavanje računa zaključavanjem lozinke

Koristite -L (veliko L) ili opciju –lock za zaključavanje korisničke lozinke.

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

Koristite opciju –u ili –unlock za otključavanje korisničke lozinke koja je prethodno bila blokirana.

usermod --unlock tecmint

Stvaranje nove grupe za pristup čitanju i pisanju datoteka kojima treba pristupiti više korisnika

Pokrenite sljedeći niz naredbi kako biste postigli 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 datoteke u vlasništvu group_name, one neće biti izbrisane, ali će vlasnik grupe biti postavljen na GID grupe koja je izbrisana.

Dozvole za datoteke Linuxa

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

Kao i osnovna dopuštenja o kojima smo ranije govorili, postavljaju se pomoću oktalne datoteke ili putem slova (simbolička notacija) koje označava vrstu dopuštenja.

Brisanje korisničkih računa

Možete izbrisati račun (zajedno s njegovim matičnim direktorijem, ako je u vlasništvu korisnika, i svim datotekama koje se u njemu nalaze, kao i spool e-pošte) pomoću naredbe userdel s –ukloni opciju.

userdel --remove [username]

Upravljanje grupom

Svaki put kada se u sustav doda novi korisnički račun, stvara se grupa s istim imenom s korisničkim imenom kao jedinim članom. Ostali korisnici mogu se kasnije dodati u grupu. Jedna od svrha grupa je implementacija jednostavne kontrole pristupa datotekama i drugim resursima sustava 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)

Svi oni trebaju pristup čitanju i pisanju datoteci pod nazivom common.txt koja se nalazi negdje na vašem lokalnom sustavu ili možda na dijeljenoj mreži koja user1 je stvorio. Možda ćete biti u iskušenju učiniti 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 (user1 u ovom slučaju). Opet, možda ćete doći u iskušenje dodati user2 i user3 u grupu user1, ali to će im također dati pristup ostatku datoteka u vlasništvu od strane korisnika user1 i grupe user1.

Tu dobro dolaze grupe, a evo što trebate učiniti u ovakvom slučaju.

Razumijevanje Setuida

Kada se dopuštenje setuid primijeni na izvršnu datoteku, korisnik koji pokreće program nasljeđuje efektivne privilegije vlasnika programa. Budući da ovaj pristup može razumno izazvati sigurnosne probleme, broj datoteka s dopuštenjem setuid mora biti minimalan. Vjerojatno ćete pronaći programe s ovim postavljenim dopuštenjima kada korisnik sustava treba pristupiti datoteci u vlasništvu roota.

Ukratko, ne radi se samo o tome da korisnik može pokrenuti binarnu datoteku, već i o tome da to može učiniti s rootovim privilegijama. Na primjer, provjerimo dopuštenja /bin/passwd. Ova se binarna datoteka koristi za promjenu lozinke računa i modificira datoteku /etc/shadow. Superkorisnik može promijeniti bilo čiju lozinku, ali svi drugi korisnici bi trebali moći promijeniti samo svoju.

Stoga bi svaki korisnik trebao imati dopuštenje za pokretanje /bin/passwd, ali samo će root moći odrediti račun. Ostali korisnici mogu promijeniti samo svoje odgovarajuće lozinke.

Razumijevanje Setgida

Kada je bit setgid postavljen, efektivni GID stvarnog korisnika postaje onaj vlasnika grupe. Stoga svaki korisnik može pristupiti datoteci pod privilegijama dodijeljenim grupnom vlasniku takve datoteke. Osim toga, kada je setgid bit postavljen na direktorij, novostvorene datoteke nasljeđuju istu grupu kao i direktorij, a novostvoreni poddirektoriji također će naslijediti setgid bit nadređenog direktorija. Najvjerojatnije ćete koristiti ovaj pristup kad god članovi određene grupe trebaju pristup svim datotekama u direktoriju, bez obzira na primarnu grupu vlasnika datoteke.

chmod g+s [filename]

Za postavljanje setgid u oktalnom obliku, dodajte broj 2 ispred trenutnih (ili željenih) osnovnih dozvola.

chmod 2755 [directory]
Postavljanje SETGID-a u direktoriju

Razumijevanje Sticky Bit-a

Kada je “sticky bit” postavljen na datoteke, Linux ga jednostavno ignorira, dok za direktorije ima učinak sprječavanja korisnika da izbrišu ili čak preimenuju datoteke koje sadrži osim ako je korisnik vlasnik direktorija, datoteku ili je root.

chmod o+t [directory]

Da postavite ljepljivi bit u oktalnom obliku, dodajte broj 1 ispred trenutnih (ili željenih) osnovnih dozvola.

chmod 1755 [directory]

Bez sticky bita, svatko tko može pisati u imenik može brisati ili preimenovati datoteke. Iz tog razloga, ljepljivi bit se obično nalazi u direktorijima, kao što je /tmp, koji su dostupni za pisanje.

Posebni atributi Linux datoteke

Postoje i drugi atributi koji omogućuju dodatna ograničenja operacija koje su dopuštene na datotekama. Na primjer, spriječite preimenovanje, premještanje, brisanje ili čak mijenjanje datoteke. Postavljaju se naredbom chattr i mogu se pregledati pomoću alata lsattr, kako slijedi.

chattr +i file1
chattr +a file2

Nakon izvršavanja te dvije naredbe, file1 bit će nepromjenjiv (što znači da se ne može premještati, preimenovati, modificirati ili brisati), dok će file2 ući u način rada samo za dodavanje (može se samo otvoriti u načinu dodavanja za pisanje).

Pristup root računu i korištenje sudo

Jedan od načina na koji korisnici mogu dobiti pristup root računu je upisivanjem.

su

a zatim unos root-ove lozinke.

Ako provjera autentičnosti uspije, bit ćete prijavljeni kao root s trenutnim radnim direktorijem kao i prije. Ako umjesto toga želite biti smješteni u rootov početni direktorij, pokrenite.

su -

a zatim unesite root lozinku.

Gornji postupak zahtijeva da normalni korisnik zna root lozinku, što predstavlja ozbiljan sigurnosni rizik. Iz tog razloga, sistemski administrator može konfigurirati naredbu sudo kako bi omogućio običnom korisniku da izvršava naredbe kao drugi korisnik (obično superkorisnik) na vrlo kontroliran i ograničen način. Stoga se korisniku mogu postaviti ograničenja 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 su i sudo korisnika

Za autentifikaciju pomoću sudo, korisnik koristi vlastitu lozinku. Nakon unosa naredbe, od nas će se tražiti naša lozinka (ne superkorisnikova) i ako autentifikacija uspije (i ako su korisniku dodijeljene privilegije za pokretanje naredbe), navedena naredba se izvršava.

Da bi odobrio pristup sudou, administrator sustava mora urediti datoteku /etc/sudoers. Preporuča se da se ova datoteka uređuje pomoću naredbe visudo umjesto da se otvara izravno pomoću uređivača teksta.

visudo

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

Ovo su najrelevantniji redovi.

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"

Ovaj red vam omogućuje da navedete direktorije koji će se koristiti za sudo i koristi se za sprječavanje korištenja korisničkih direktorija, koji mogu naškoditi sustavu.

Sljedeći redovi koriste se za određivanje dopuštenja.

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 prvom stupcu može pokretati naredbe s privilegijama bilo kojeg korisnika.
  3. Treći ALL znači da se može pokrenuti bilo koja naredba.
tecmint     ALL=/bin/yum update

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

gacanepa    ALL=NOPASSWD:/bin/updatedb

Direktiva NOPASSWD omogućuje korisniku gacanepa pokretanje /bin/updatedb bez potrebe za unosom lozinke.

%admin      ALL=(ALL) ALL

Znak % označava da se ovaj redak odnosi na grupu pod nazivom “admin”. Značenje ostatka retka je identično onome kod običnog korisnika. To znači da članovi grupe “admin” mogu pokretati sve naredbe kao bilo koji korisnik na svim hostovima.

Da biste vidjeli koje vam privilegije daje sudo, upotrijebite opciju “-l” da ih navedete.

PAM (priključni moduli za provjeru autentičnosti)

Pluggable Authentication Modules (PAM) nude fleksibilnost postavljanja određene sheme provjere autentičnosti na temelju aplikacije i/ili usluge pomoću modula. Ovaj alat prisutan na svim modernim distribucijama Linuxa prevladao je problem s kojim su se programeri često suočavali u ranim danima Linuxa, kada je svaki program koji je zahtijevao autentifikaciju morao biti posebno kompajliran da bi se znalo kako doći do potrebnih informacija.

Na primjer, s PAM-om, nije važno je li vaša lozinka pohranjena u /etc/shadow ili na zasebnom poslužitelju unutar vaše mreže.

Na primjer, kada program za prijavu treba autentificirati korisnika, PAM dinamički osigurava biblioteku koja sadrži funkcije za pravu shemu autentifikacije. Stoga je promjena sheme provjere autentičnosti za aplikaciju za prijavu (ili bilo koji drugi program koji koristi PAM) laka budući da uključuje samo uređivanje konfiguracijske datoteke (najvjerojatnije datoteke nazvane po aplikaciji, smještene unutar /etc/pam.d , a manje vjerojatno u /etc/pam.conf).

Datoteke unutar /etc/pam.d pokazuju koje aplikacije izvorno koriste PAM. Osim toga, možemo reći koristi li određena aplikacija PAM provjerom je li 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 s aplikacijom za prijavu. Ovo ima smisla budući da je ova aplikacija uključena u operaciju provjere autentičnosti korisnika sustava, dok top ne.

Ispitajmo PAM konfiguracijsku datoteku za passwd – da, dobro poznati uslužni program za promjenu korisničkih lozinki. Nalazi se na /etc/pam.d/passwd:


cat /etc/passwd

Prvi stupac označava vrstu provjere autentičnosti koja će se koristiti s stazom-modula (treći stupac). Kada se ispred tipa pojavi crtica, PAM neće bilježiti u zapisnik sustava ako se modul ne može učitati jer se ne može pronaći u sustavu.

Dostupne su sljedeće vrste provjere autentičnosti:

  1. account: ovaj tip modula provjerava jesu li korisnik ili usluga dostavili važeće vjerodajnice za autentifikaciju.
  2. auth: ovaj tip modula provjerava je li korisnik onaj za kojeg se predstavlja i dodjeljuje sve potrebne privilegije.
  3. lozinka: ova vrsta modula omogućuje korisniku ili usluzi ažuriranje svoje lozinke.
  4. sesija: ova vrsta modula označava što treba učiniti prije i/ili nakon što provjera autentičnosti uspije.

Drugi stupac (nazvan control) označava što bi se trebalo dogoditi ako provjera autentičnosti s ovim modulom ne uspije:

  1. requisite: ako provjera autentičnosti putem ovog modula ne uspije, cjelokupna provjera autentičnosti bit će odmah odbijena.
  2. required je sličan requisite, iako će svi ostali navedeni moduli za ovu uslugu biti pozvani prije odbijanja autentifikacije.
  3. dovoljno: ako provjera autentičnosti putem ovog modula ne uspije, PAM će i dalje odobriti provjeru autentičnosti čak i ako prethodna označena kao potrebna nije uspjela.
  4. neobavezno: ako provjera autentičnosti putem ovog modula ne uspije ili ne uspije, ništa se ne događa osim ako je ovo jedini modul te vrste definiran za ovu uslugu.
  5. include znači da retke zadane vrste treba čitati iz druge datoteke.
  6. substack sličan je uključivanju, ali neuspješne ili neuspješne provjere autentičnosti ne uzrokuju izlaz iz cijelog modula, već samo iz podskupa.

Četvrti stupac, ako postoji, prikazuje argumente koji se prosljeđuju modulu.

Prva tri retka u /etc/pam.d/passwd (prikazano gore), učitajte modul system-auth da provjerite je li korisnik dostavio važeće vjerodajnice (račun) . Ako je tako, dopušta mu/joj promjenu autentifikacijskog tokena (lozinke) davanjem dopuštenja za korištenje passwd (auth).

Na primjer, ako dodate


remember=2

na sljedeći redak


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 spremaju se u /etc/security/opasswd tako da se ne mogu ponovno koristiti:

Sažetak

Učinkovite vještine upravljanja korisnicima i datotekama ključni su alati za svakog administratora sustava. U ovom članku pokrili smo osnove i nadamo se da ga možete koristiti kao dobru polaznu točku za nadogradnju. Slobodno ostavite svoje komentare ili pitanja u nastavku, a mi ćemo brzo odgovoriti.