Korisnici i grupe
Cilj lekcije: Razumeti kako Linux upravlja korisnicima i grupama, naučiti kako čitati sistemske fajlove koji opisuju korisnike, i savladati komande za proveru i promenu identiteta.
Linux je višekorisnički operativni sistem
Za razliku od nekih starijih sistema, Linux je od samog početka dizajniran kao višekorisnički (multi-user) operativni sistem. To znači da više korisnika može istovremeno da koristi isti sistem — svaki sa sopstvenim fajlovima, procesima i dozvolama.
Svaki korisnik ima:
- Jedinstveni korisnički ID (UID — User ID)
- Kućni direktorijum (home directory), obično
/home/korisnik - Podrazumevani shell koji se pokreće pri prijavi
- Grupu ili više grupa kojima pripada
Ovo omogućava izolaciju: fajlovi jednog korisnika su zaštićeni od neovlašćenog pristupa drugog korisnika.
/etc/passwd — registar korisnika
Fajl /etc/passwd sadrži osnovne informacije o svim korisnicima sistema. Svaka linija opisuje jednog korisnika i ima sedam polja odvojenih dvotačkom:
korisnik:x:UID:GID:komentar:home_dir:shell
| Polje | Opis |
|---|---|
korisnik |
Korisničko ime |
x |
Mesto za lozinku (lozinka je u /etc/shadow) |
UID |
Numerički korisnički ID |
GID |
Numerički ID primarne grupe |
komentar |
Opis korisnika (GECOS polje) |
home_dir |
Putanja do kućnog direktorijuma |
shell |
Shell koji se pokreće pri prijavi |
Primer nekoliko linija iz /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
student:x:1000:1000:Student User:/home/student:/bin/bash
alice:x:1001:1001:Alice:/home/alice:/bin/bash
Primetno je da root ima UID 0 — to je superkorisnik koji ima neograničen pristup svemu na sistemu.
Čitanje /etc/passwd
cat /etc/passwd
Možeš i pretražiti samo određenog korisnika:
grep "student" /etc/passwd
Napomena:
/etc/passwdje čitljiv svim korisnicima — ne sadrži stvarne lozinke.
/etc/shadow — zaštićene lozinke
Fajl /etc/shadow čuva hešovane lozinke korisnika. Za razliku od /etc/passwd, ovaj fajl je dostupan samo korisniku root zbog bezbednosnih razloga.
# Samo root može čitati ovaj fajl
sudo cat /etc/shadow
Format svake linije:
korisnik:hes_lozinke:datum_izmene:min_dana:max_dana:upozorenje:...
Kao student, samo trebaš znati da /etc/shadow postoji i da je zaštićen.
/etc/group — registar grupa
Fajl /etc/group opisuje sve grupe na sistemu. Format:
ime_grupe:x:GID:lista_clanova
Primer
root:x:0:
sudo:x:27:alice,student
projekat:x:1002:alice,bob,student
cat /etc/group
Komande za identitet korisnika
whoami — ko sam ja?
Najjednostavnija komanda — ispisuje korisničko ime trenutno ulogovanog korisnika:
whoami
student
id — detaljan identitet
Komanda id pokazuje UID, GID i sve grupe kojima korisnik pripada:
id
uid=1000(student) gid=1000(student) groups=1000(student),27(sudo),1002(projekat)
Možeš i proveriti identitet drugog korisnika:
id alice
uid=1001(alice) gid=1001(alice) groups=1001(alice),1002(projekat)
groups — liste grupa
Komanda groups ispisuje samo grupe kojima korisnik pripada:
groups
student sudo projekat
passwd — promena lozinke
Komandom passwd menjas svoju lozinku:
passwd
# Trazi se trenutna lozinka, pa nova dva puta
Root korisnik moze da menja lozinku BILO KOJEG korisnika:
sudo passwd alice
Pravila dobre lozinke: minimum 8 karaktera, mesavina velikih/malih slova, brojeva, simbola.
UID 0 — root, superkorisnik
Korisnik sa UID 0 je root — superkorisnik Linux sistema. Root može:
- Čitati i pisati u bilo koji fajl
- Pokretati i zaustavljati bilo koji proces
- Menjati vlasništvo fajlova
- Instalirati softver
- Menjati sistemsku konfiguraciju
Upozorenje: Rad kao root je opasan — jedna greška može da uništi ceo sistem. Uvek preferiraj
sudoumesto direktnog logovanja kao root.
su — promena korisnika
Komanda su (substitute user) menja aktivnog korisnika u terminalu:
# Pređi na korisnika alice
su alice
# Sistem traži lozinku korisnika alice
# Pređi na root (traži root lozinku)
su -
Opcija - (crtice) pokreće i login shell, što znači da se učitavaju i varijable okruženja tog korisnika:
su - alice
Izlaz iz su sesije
exit
ili Ctrl+D.
sudo — izvršavanje komandi kao root
sudo (superuser do) omogućava ovlašćenim korisnicima da izvršavaju pojedinačne komande sa root privilegijama, bez potrebe da znaju root lozinku.
# Instaliraj softver kao root
sudo apt install vim
# Čitaj zaštićeni fajl
sudo cat /etc/shadow
# Pokreni komandu kao drugi korisnik
sudo -u alice cat /home/alice/privatno.txt
Tvoja lozinka, ne root lozinka
Kada koristis sudo, sistem trazi tvoju lozinku — ne root lozinku. To je kljucna razlika: sudo postoji upravo zato da ne moras znati root lozinku. Administrator ti unapred daje prava (dodavanjem u sudo grupu), i svaki put kad izvrsavas privilegovanu komandu, sistem proverava da si zaista ti — tvoja lozinka sluzi kao potvrda identiteta.
Kako sudo zna ko sme sta?
Konfiguracija je u fajlu /etc/sudoers (uvek editovati sa visudo). Na Ubuntu/Debian sistemima, korisnici u grupi sudo automatski dobijaju pun pristup.
# Provjeri da li si u sudo grupi
groups | grep sudo
sudo vs su
| Komanda | Upotreba |
|---|---|
su alice |
Prijavi se kao alice (traži njenu lozinku) |
sudo komanda |
Izvršava komandu kao root (tvoja lozinka) |
sudo su - |
Otvori root shell koristeći sudo |
Rezime
| Koncept | Opis |
|---|---|
| UID | Numerički ID korisnika (root = 0) |
| GID | Numerički ID grupe |
/etc/passwd |
Lista korisnika (čitljivo svima) |
/etc/shadow |
Hešovane lozinke (samo root) |
/etc/group |
Lista grupa i članova |
whoami |
Ispiši trenutnog korisnika |
id |
Prikaži UID, GID i grupe |
groups |
Prikaži grupe korisnika |
su korisnik |
Prijavi se kao drugi korisnik |
sudo komanda |
Izvrsi komandu kao root |
passwd |
Promeni svoju lozinku |
sudo passwd korisnik |
Promeni lozinku drugog korisnika (root) |