Upravljanje uporabnikov in skupin, dovoljenj in atributov datotek ter omogočanje sudo dostopa do računov - 8. del


Lani avgusta je fundacija Linux začela s certificiranjem LFCS (Linux Foundation Certified Sysadmin), povsem novim programom, katerega namen je omogočiti posameznikom povsod in kjer koli opravljati izpit, da pridobijo osnovno do vmesno operativno podporo za sisteme Linux, ki vključuje podpora delujočim sistemom in storitvam, skupaj s splošnim nadzorom in analizami, ter inteligentno odločanje, da se lahko odločite, kdaj je treba vprašanja razširiti na podporne skupine na višji ravni.

Na hitro si oglejte naslednji videoposnetek, ki opisuje uvod v certifikacijski program Linux Foundation.

Ta članek je 8. del 10-vadnice, v tem poglavju vas bomo vodili, kako upravljati dovoljenja uporabnikov in skupin v sistemu Linux, ki so potrebna za izpit za certificiranje LFCS.

Ker je Linux več uporabniški operacijski sistem (saj omogoča več uporabnikom v različnih računalnikih ali terminalih dostop do enega sistema), boste morali vedeti, kako učinkovito upravljati uporabnike: kako dodati, urediti, začasno ustaviti ali izbrisati uporabniških računov, skupaj z dodelitvijo potrebnih dovoljenj za izvajanje dodeljenih nalog.

Dodajanje uporabniških računov

Če želite dodati nov uporabniški račun, lahko zaženete katerega koli od naslednjih dveh ukazov kot root.

# adduser [new_account]
# useradd [new_account]

Ko je v sistem dodan nov uporabniški račun, se izvedejo naslednje operacije.

1. Njegov/njen domači imenik je ustvarjen (/dom/uporabniško ime privzeto).

2. Naslednje skrite datoteke se kopirajo v uporabnikov domači imenik in bodo uporabljene za zagotavljanje spremenljivk okolja za njegovo uporabniško sejo.

.bash_logout
.bash_profile
.bashrc

3. Za uporabnika je ustvarjena poštna tuljava na/var/spool/mail/ uporabniško ime .

4. Skupina se ustvari in dobi isto ime kot novi uporabniški račun.

Popolni podatki o računu so shranjeni v datoteki /etc/passwd . Ta datoteka vsebuje zapis na sistemski uporabniški račun in ima naslednjo obliko (polja so ločena z dvopičjem).

[username]:[x]:[UID]:[GID]:[Comment]:[Home directory]:[Default shell]

  1. Polji [uporabniško ime] in [Komentar] sta samoumevni.
  2. x v drugem polju označuje, da je račun zaščiten s senčnim geslom (v /etc/shadow ), ki je potrebno za prijavo kot [uporabniško ime] .
  3. Polji [UID] in [GID] sta celi števili, ki predstavljata identifikacijo uporabnika in primarno identifikacijo skupine, do katere [uporabniško ime] pripada.
  4. [Domači imenik] označuje absolutno pot do domačega imenika [uporabniško ime] in
  5. [Privzeta lupina] je lupina, ki bo na voljo temu uporabniku, ko se prijavi v sistem.

Podatki o skupini so shranjeni v datoteki /etc/group . Vsak zapis ima naslednjo obliko.

[Group name]:[Group password]:[GID]:[Group members]

  1. [Ime skupine] je ime skupine.
  2. Znak x v [geslo skupine] pomeni, da se gesla skupine ne uporabljajo.
  3. [GID] : enako kot v/etc/passwd.
  4. [Člani skupine] : seznam uporabnikov, ločenih z vejico, ki so člani [Ime skupine] .

Po dodajanju računa lahko z ukazom usermod , katerega osnovna sintaksa usermod je naslednja, uredite naslednje podatke (da poimenujete nekaj polj).

# usermod [options] [username]

Uporabite oznako –iztekel , ki ji sledi datum v obliki LLLL-MM-DD .

# usermod --expiredate 2014-10-30 tecmint

Uporabite kombinirane možnosti -aG ali –dodaj –skupinam , ki jim sledi seznam skupin, ločenih z vejico.

# usermod --append --groups root,users tecmint

Uporabite možnosti -d ali –home , čemur sledi absolutna pot do novega domačega imenika.

# usermod --home /tmp tecmint

Uporabite lupino , čemur sledi pot do nove lupine.

# usermod --shell /bin/sh tecmint
# groups tecmint
# id tecmint

Zdaj pa izvedimo vse zgornje ukaze z enim potezom.

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

V zgornjem primeru bomo nastavili datum poteka uporabniškega računa tecmint na 30. oktober 2014. Račun bomo dodali tudi v korensko in uporabniško skupino. Nazadnje bomo kot privzeto lupino nastavili sh in lokacijo domačega imenika spremenili v/tmp:

Preberite tudi :

  1. 15 primerov ukazov useradd v Linuxu
  2. 15 primerov ukazov usermod v Linuxu

Za obstoječe račune lahko storimo tudi naslednje.

Za zaklepanje uporabniškega gesla uporabite možnost -L (velika črka L) ali možnost –zakleni .

# usermod --lock tecmint

Uporabite možnost –u ali –odkleni , da odklenete uporabniško geslo, ki je bilo prej blokirano.

# usermod --unlock tecmint

Izvedite naslednjo serijo ukazov, da dosežete 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

Skupino lahko izbrišete z naslednjim ukazom.

# groupdel [group_name]

Če obstajajo datoteke v lasti ime_grupe , jih ne bodo izbrisane, ampak bo lastnik skupine nastavljen na GID skupine, ki je bila izbrisana.

Dovoljenja za datoteke Linux

Poleg osnovnih dovoljenj za branje, pisanje in izvajanje, o katerih smo razpravljali v Orodjih za arhiviranje in nastavitev atributov datotek - 3. del te serije, obstajajo še druge manj uporabljene (vendar ne manj pomembne) nastavitve dovoljenj, včasih imenovane tudi\" posebna dovoljenja «.

Tako kot osnovna dovoljenja, o katerih smo že govorili, so tudi ta nastavljena z osmerodelno datoteko ali s črko (simbolni zapis), ki označuje vrsto dovoljenja.

Račun lahko izbrišete (skupaj z domačim imenikom, če je ta v lasti uporabnika, in vse datoteke, ki v njem prebivajo, pa tudi poštni vmesnik) z ukazom userdel z –odstrani možnost.

# userdel --remove [username]

Vsakič, ko je v sistem dodan nov uporabniški račun, se ustvari skupina z istim imenom z uporabniškim imenom kot edinim članom. Druge uporabnike lahko pozneje dodate v skupino. Eden od namenov skupin je izvajanje preprostega nadzora dostopa do datotek in drugih sistemskih virov z nastavitvijo pravih dovoljenj za te vire.

Denimo, da imate naslednje uporabnike.

  1. uporabnik1 (primarna skupina: uporabnik1)
  2. uporabnik2 (primarna skupina: uporabnik2)
  3. uporabnik3 (primarna skupina: uporabnik3)

Vsi potrebujejo branje in pisanje dostopa do datoteke z imenom common.txt , ki se nahaja nekje v vašem lokalnem sistemu ali morda v omrežni skupni rabi, ki uporabnik1 je ustvaril. Morda vas bo zamikalo kaj takega,

# 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]

Vendar bo to omogočilo dostop za branje in pisanje samo lastniku datoteke in tistim uporabnikom, ki so člani lastnika skupine datoteke ( uporabnik1 v tem primeru). Ponovno vas bo morda zamikalo, da dodate uporabnika2 in uporabnika3 v skupino uporabnik1 , vendar jim bo to omogočilo tudi dostop do ostalih datotek v lasti uporabnik uporabnik1 in skupina uporabnik1 .

Tu so skupine prav prišle in tukaj je, kaj morate storiti v takem primeru.

Ko se dovoljenje setuid uporabi za izvršljivo datoteko, uporabnik, ki izvaja program, podeduje dejanske privilegije lastnika programa. Ker lahko ta pristop upravičeno vzbuja pomisleke glede varnosti, je treba število datotek z dovoljenjem setuid čim manjše. Programe s tem dovoljenjem boste verjetno našli, ko bo sistemski uporabnik moral dostopati do datoteke v lasti root.

Če povzamemo, ne gre le za to, da lahko uporabnik zažene binarno datoteko, ampak tudi za to, da lahko to stori s korenskimi privilegiji. Preverimo na primer dovoljenja za /bin/passwd . Ta binarna datoteka se uporablja za spreminjanje gesla računa in spreminja datoteko /etc/shadow . Naduporabnik lahko spremeni geslo vsakogar, vsi drugi uporabniki pa bi lahko lahko spremenili le svoje.

Tako bi moral imeti vsak uporabnik dovoljenje za zagon /bin/passwd , vendar bo račun lahko določil samo root. Drugi uporabniki lahko spremenijo le ustrezna gesla.

Ko je nastavljen bit setgid , dejanski GID dejanskega uporabnika postane lastnik skupine. Tako lahko vsak uporabnik dostopa do datoteke pod privilegiji, dodeljenimi lastniku skupine take datoteke. Poleg tega, ko je setgid bit nastavljen v imeniku, novo ustvarjene datoteke podedujejo isto skupino kot imenik, na novo ustvarjeni podimeniki pa bodo podedovali tudi setgid bit nadrejenega imenika. Ta pristop boste najverjetneje uporabili, kadar člani določene skupine potrebujejo dostop do vseh datotek v imeniku, ne glede na primarno skupino lastnika datoteke.

# chmod g+s [filename]

Če želite setgid nastaviti v osmiško obliko, dodajte številko 2 trenutnim (ali želenim) osnovnim dovoljenjem.

# chmod 2755 [directory]

Ko je\" lepljivi bit " nastavljen na datotekah, ga Linux preprosto prezre, pri imenikih pa uporabnikom prepreči brisanje ali celo preimenovanje datotek, ki jih vsebuje, razen če je uporabnik imenik v lasti, datoteka ali je root.

# chmod o+t [directory]

Če želite lepljivi bit nastaviti v osmiško obliko, dodajte številko 1 trenutnim (ali želenim) osnovnim dovoljenjem.

# chmod 1755 [directory]

Brez lepljivega bitja lahko vsak, ki lahko piše v imenik, datoteke izbriše ali preimenuje. Zaradi tega je lepljivi bit pogosto na voljo v imenikih, kot je /tmp , ki jih je mogoče zapisati po vsem svetu.

Posebni atributi datotek Linux

Obstajajo tudi drugi atributi, ki omogočajo nadaljnje omejitve operacij, ki so dovoljene za datoteke. Na primer, preprečite preimenovanje, premikanje, brisanje ali celo spreminjanje datoteke. Nastavijo se z ukazom chattr in si jih lahko ogledate z orodjem lsattr, kot sledi.

# chattr +i file1
# chattr +a file2

Po izvedbi teh dveh ukazov bo datoteka1 nespremenljiva (kar pomeni, da je ni mogoče premakniti, preimenovati, spremeniti ali izbrisati), medtem ko bo datoteka2 prešla v način samo za dodajanje (lahko samo odprt v načinu dodajanja za pisanje).

Dostop do korenskega računa in uporaba sudo

Eden od načinov, kako lahko uporabniki pridobijo dostop do korenskega računa, je tipkanje.

$ su

in nato vnesite geslo root.

Če preverjanje pristnosti uspe, boste prijavljeni kot root s trenutnim delovnim imenikom, enakim kot prej. Če želite namesto tega biti umeščeni v korenski domači imenik, zaženite.

$ su -

in nato vnesite root geslo.

Zgornji postopek zahteva, da običajen uporabnik pozna geslo root, kar predstavlja resno varnostno tveganje. Iz tega razloga lahko sysadmin konfigurira ukaz sudo tako, da omogoča običajnemu uporabniku, da ukaze izvaja kot drug uporabnik (običajno super uporabnik) na zelo nadzorovan in omejen način. Tako je mogoče uporabniku nastaviti omejitve, ki mu omogočajo izvajanje enega ali več posebnih privilegiranih ukazov in nobenega drugega.

Preberite tudi : Razlika med uporabnikom su in sudo

Za avtentikacijo z uporabo sudo uporabnik uporablja svoje geslo. Po vnosu ukaza bomo pozvani, da vnesemo naše geslo (ne super uporabnika) in če avtentikacija uspe (in če je uporabnik dobil privilegije za zagon ukaza), se izvede ukaz.

Za odobritev dostopa do sudo mora sistemski skrbnik urediti datoteko /etc/sudoers . Priporočljivo je, da to datoteko urejate z ukazom visudo , namesto da jo odprete neposredno z urejevalnikom besedil.

# visudo

Odpre se datoteka /etc/sudoers z uporabo vim (za urejanje datoteke lahko sledite navodilom v poglavju Namesti in uporabi vim kot urejevalnik - 2. del te serije).

To so najpomembnejše vrstice.

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

Oglejmo si jih podrobneje.

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

V tej vrstici lahko določite imenike, ki se bodo uporabljali za sudo , in se uporablja za preprečevanje uporabe uporabniško specifičnih imenikov, ki lahko škodujejo sistemu.

Naslednje vrstice se uporabljajo za določanje dovoljenj.

root        ALL=(ALL) ALL

  1. Prva ključna beseda VSE označuje, da to pravilo velja za vse gostitelje.
  2. Drugi VSE pomeni, da lahko uporabnik v prvem stolpcu izvaja ukaze s privilegiji katerega koli uporabnika.
  3. Tretji VSE pomeni, da je mogoče zagnati kateri koli ukaz.

tecmint     ALL=/bin/yum update

Če za znakom = ni naveden noben uporabnik, sudo prevzame korenskega uporabnika. V tem primeru bo uporabnik tecmint lahko zagnal yum update kot root.

gacanepa    ALL=NOPASSWD:/bin/updatedb

Direktiva NOPASSWD uporabniku gacanepa omogoča zagon /bin/updatedb brez vnosa gesla.

%admin      ALL=(ALL) ALL

Znak % pomeni, da se ta vrstica nanaša na skupino z imenom\" admin ". Pomen preostale vrstice je enak pomenu običajnega uporabnika. To pomeni da lahko člani skupine\" admin " izvajajo vse ukaze kot kateri koli uporabnik na vseh gostiteljih.

Če si želite ogledati, katere privilegije vam podeli sudo, jih uporabite na seznamu\" -l ".

PAM (vtični moduli za preverjanje pristnosti)

Vstavljivi moduli za preverjanje pristnosti (PAM) ponujajo prilagodljivost pri določanju določene sheme za preverjanje pristnosti za posamezno aplikacijo in/ali storitev z uporabo modulov. To orodje, ki je bilo prisotno v vseh sodobnih distribucijah Linuxa, je premagalo težavo, s katero so se razvijalci pogosto soočali v zgodnjih dneh Linuxa, ko je bilo treba vsak program, ki je zahteval preverjanje pristnosti, sestaviti posebej, da bo vedel, kako pridobiti potrebne informacije.

Na primer, pri PAM ni pomembno, ali je vaše geslo shranjeno v/etc/shadow ali na ločenem strežniku znotraj vašega omrežja.

Na primer, ko mora prijavni program preveriti pristnost uporabnika, PAM dinamično zagotavlja knjižnico, ki vsebuje funkcije za pravilno shemo preverjanja pristnosti. Tako je sprememba sheme preverjanja pristnosti za prijavo (ali kateri koli drug program, ki uporablja PAM) enostavna, saj vključuje samo urejanje konfiguracijske datoteke (najverjetneje datoteke, imenovane po aplikaciji, ki se nahaja znotraj /etc/pam.d in manj verjetno v /etc/pam.conf ).

Datoteke v /etc/pam.d kažejo, katere aplikacije izvorno uporabljajo PAM. Poleg tega lahko ugotovimo, ali določena aplikacija uporablja PAM, tako da preverimo, ali je knjižnica PAM (libpam) povezana z njo:

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

Na zgornji sliki lahko vidimo, da je libpam povezan z aplikacijo za prijavo. To je smiselno, ker ta aplikacija sodeluje pri preverjanju pristnosti sistemskih uporabnikov, top pa ne.

Preučimo konfiguracijsko datoteko PAM za passwd - ja, dobro znani pripomoček za spreminjanje uporabniških gesel. Nahaja se na /etc/pam.d/passwd:

# cat /etc/passwd

Prvi stolpec označuje vrsto preverjanja pristnosti, ki se bo uporabljala s potjo modula (tretji stolpec). Ko se pred tipom pojavi vezaj, PAM ne bo zapisal v sistemski dnevnik, če modula ni mogoče naložiti, ker ga ni bilo mogoče najti v sistemu.

Na voljo so naslednje vrste preverjanja pristnosti:

  1. račun : ta vrsta modula preveri, ali je uporabnik ali storitev za preverjanje pristnosti navedel veljavne poverilnice.
  2. auth : ta vrsta modula preveri, ali je uporabnik tak, za katerega se trdi, in podeljuje vse potrebne privilegije.
  3. geslo : ta vrsta modula omogoča uporabniku ali storitvi, da posodobi svoje geslo.
  4. seja : ta vrsta modula označuje, kaj je treba storiti pred in/ali po uspešni overitvi.

Drugi stolpec (imenovan control ) prikazuje, kaj naj se zgodi, če preverjanje pristnosti s tem modulom ne uspe:

  1. zahtevano : če preverjanje pristnosti prek tega modula ne uspe, bo splošno preverjanje pristnosti takoj zavrnjeno.
  2. required je podoben zahtevanemu, čeprav bodo vsi drugi navedeni moduli za to storitev poklicani, preden zanikajo preverjanje pristnosti.
  3. zadostno : če preverjanje pristnosti prek tega modula ne uspe, bo PAM še vedno odobril preverjanje pristnosti, tudi če predhodno označeno kot zahtevano ni uspelo.
  4. neobvezno : če preverjanje pristnosti prek tega modula ne uspe ali uspe, se nič ne zgodi, razen če je to edini modul te vrste, opredeljen za to storitev.
  5. include pomeni, da je treba vrstice določene vrste brati iz druge datoteke.
  6. podstak je podoben kot vključuje, vendar napake ali uspehi preverjanja pristnosti ne povzročijo izhoda celotnega modula, temveč le podstaka.

Četrti stolpec, če obstaja, prikazuje argumente, ki jih je treba poslati modulu.

Prve tri vrstice v /etc/pam.d/passwd (prikazano zgoraj), naložite modul system-auth, da preverite, ali je uporabnik navedel veljavne poverilnice (račun). V tem primeru mu dovoli, da spremeni žeton za preverjanje pristnosti (geslo) z dovoljenjem za uporabo passwd (auth).

Na primer, če dodate

remember=2

v naslednjo vrstico

password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok

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

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

zadnji dve zgoščeni gesli vsakega uporabnika se shranita v/etc/security/opasswd, tako da ju ni mogoče ponovno uporabiti:

Povzetek

Učinkovite veščine upravljanja uporabnikov in datotek so bistvenega pomena za vsakega sistemskega skrbnika. V tem članku smo opisali osnove in upamo, da ga boste lahko uporabili kot dobro izhodišče za nadaljevanje. Pustite svoje komentarje ali vprašanja spodaj in hitro se bomo odzvali.