Gym
lesson

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/passwd je č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 sudo umesto 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)