Thursday, July 19, 2012

Korisnici i grupe u Linux operacijskom sustavu...

Pojam korisnika (engl. user) i grupe (engl. group) u Linux operacijskom sustavu su preduvjeti za shvaćanje načina na koji OS razdvaja i kontrolira svoje korisnike i njihove objekte (procese, datoteke, dijeljenu memoriju i slično).

I grupa i korisnik na Linux OS-u (a i na bilo kojem drugom OS-u) trebaju biti kreirani kako bi ih OS poznavao. To se radi prilikom instalacije operacijskog sustava, ili ih administrator kreira prema potrebi. U trenutku kreiranja bilo korisnika bilo grupe administrator određuje korisničko ime (primjerice sgros) odnosno, ime grupe (primjerice zavod). Za korisnika, administrator mora još minimalno odrediti lozinku dok se u slučaju grupe obično još definiraju članovi grupe.

Pohranjivanje informacija o korisnicima i grupama


Popis svih korisnika na Unix operacijskim sustavima nalazi se u datoteci /etc/passwd, dok se popis svih grupa (i članova grupa) nalazi u datoteci /etc/group. Ovo vrijedi pod uvijetom da se ne koriste nekakve napredne metode autentifikacije i autorizacije u kom slučaju korisnici mogu biti definirani i na drugim mjestima.

Međutim, treba imati na umu da što se operacijskog sustava tiče, ime grupe, odnosno korisnika nisu bitni, ono što je bitno su njihovi identifikacijski brojevi. U slučaju korisnika to je UID (engl. User IDentificator) a u slučaju grupe GID (engl. Group IDentificator). Alati koji manipuliraju korisničkim imenima i grupama automatski rade translaciju iz simboličkog imena u numeričko i obratno, ovisno o potrebi.

Primjer nekoliko redaka iz datoteke /etc/passwd:
$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
sgros:x:5056:1000:Stjepan Gros:/home/zavod/sgros:/bin/bash
Svaka linija definira jednog korisnika, a linije se sastoje od polja. Polja su međusobno razdvojena dvotočkom i svako polje ima točno određeno značenje:
  1. Prvo polje je korisničko ime, odnosno, simboličko ime
  2. Drugo polje je lozinka, međutim, iz sigurnosnih razloga lozinke su smještene u zasebnu datoteku kojoj je ograničen pristup.
  3. Treće polje je  UID, pa primjerice vidimo u gornjem primjeru da je prvi korisnik privilegiran, dok drugi nije.
  4. Četvrto polje je primarna grupa korisnika, i to zadana putem GID-a. Naime, svaki korisnik ima svoju primarnu grupu koja se definira u samoj /etc/passwd datoteci, ali korisnik može biti član i drugih grupa, što ćemo vidjeti u primjeru grupa.
  5. Peto polje je tzv. GECKOS polje i informativnog karaktera je. Primjerice, tamo se nalazi upisano ime i prezime korisnika.
  6. Šesto polje je matično kazalo korisnika.
  7. Sedmo polje je ljuska koju korisnik upotrebljava.
Detalje o strukturi passwd datoteke moguće je pročitati u datoteci passwd(5).

Primjer nekoliko grupa iz datoteke /etc/group:
$ cat /etc/group
root:x:0:
wbpriv:x:88:squid,apache
Opet, svaka linija definira jednu grupu, pri čemu se linije sastoje od zapisa (polja) koja su odvojena dvotočkama. Polja su:
  1. Prvo polje je ime grupe
  2. Drugo polje je grupna lozinka. Opet, iz sigurnosnih razloga smještena u zasebnu datoteku. Međutim, grupne lozinke se vrlo rijetko upotrebljavaju danas.
  3. Treće polje je GID
  4. Četvrto polje je popis korisnika članova grupa odvojenih zarezima. Primjetite da ne treba definirati člana grupe ako mu je grupa primarna. U gornjem primjeru, izgleda kao da grupa root nema ni jednog člana, međutim, korisnik root ima definiranu primarnu grupu root i na taj način on je član te grupe.
Opet, detalje je moguće pronaći u odgovarajućoj man stranici.

Kao što je mnogima poznato, na Linuxu se nalazi poseban korisnik koji ima sve ovlati, root. Međutim, preciznije je reći kako Linux posebno tretira UID 0, a ne korisničko ime. To znači da je vrlo jednostavno dodatni novo korisničko ime, podesiti mu UID na nulu i on će imati sve ovlasti kao i korisnik root.

Datotečni sustav


Svaki objekt na datotečnom sustavu ima pridruženog korisnika i grupu. Najčešće, to je korisnik koji je kreirao datoteku te je kao grupa postavljena primarna grupa tog istog korisnika. Međutim, naravno da su moguće i druge kombinacije.

Kada izlistavamo direktorij korištenjem naredbe ls(1) dobijamo odmah informaciju koji korisnik i grupa su vlasnici datoteke:
$ ls -l mozilla.pdf
-rw-r--r--. 1 sgros zemris 40360 Vel 27 21:30 mozilla.pdf
U navedenom primjeru, vlasnik datoteke mozilla.pdf je korisnik sgros, dok je grupa kojoj datoteka pripada zemris. Te dvije informacije su bitne kod određivanja prava pristupa datotekama i direktorijima (o čemu ću u zasebnom postu).

Neke korisničke naredbe za rad s korisnicima i grupama


Kako bi neki korisnik saznao svoj UID, GID i kojim grupama pripada, koristi se naredba id(1):
$ id
uid=5056(sgros) gid=1000(zemris) groups=1000(zemris),959(davfs2),968(wireshark)
Obratite pozornost da ovo nije cijeli ispis, postoji još jedan dio (context) koji je vezan uz SELinux, a koji namjerno ignoriram. Uglavnom, naredba mi kaže kako je moj UID 5056 (i korisničko ime sgros vezano uz taj UID), primarna grupa mi je zemris (čiji GID je 1000). Konačno, član sam i grupa zemris, davfs2 i wireshark.

Promjena vlasnika i grupe nekakvog datotečnog objekta (odnosno direktorija, datoteke) obavlja se korištenjem naredbi chown(1) i chgrp(1). Međutim, s obzirom da se na taj način otvaraju mogućnosti zloupotrebe, navedene naredbe može koristiti isključivo administrator sustava.

No comments:

About Me

scientist, consultant, security specialist, networking guy, system administrator, philosopher ;)

Blog Archive