Kdo ima dostop do strežnika, kdo je trenutno prijavljen in kateri uporabnik spada v katero skupino? Ta vprašanja so potrebna ob prevzemu novega strežnika, pri varnostnem pregledu ali pri iskanju napake dovoljenj. Ta članek predstavlja, kako izpišeš uporabnike in skupine, kako uporabnika dodaš v skupino in na katere pasti je treba pri tem paziti.
Ukaze smo novembra 2026 preizkusili v sistemih AlmaLinux 10.2, AlmaLinux 9.8, Ubuntu 24.04.5 in Debian 13.7, na navideznih računalnikih, nameščenih iz lastnih cloud image distribucij; na KVM VPS delujejo enako. Za izpis sudo ni potreben, za spremembe pa. V primerih je ime uporabnika janos, ime skupine pa fejlesztok.
Izpis uporabnikov
Datoteka /etc/passwd
Lokalni uporabniki so v datoteki /etc/passwd, po eden na vrstico, s polji, ločenimi z dvopičjem:
janos:x:1001:1001::/home/janos:/bin/bash
| Polje | Primer | Pomen |
|---|---|---|
| 1. | janos |
Uporabniško ime |
| 2. | x |
Mesto gesla; razpršeno geslo je v resnici v datoteki /etc/shadow |
| 3. | 1001 |
Identifikator uporabnika (UID) |
| 4. | 1001 |
Identifikator primarne skupine (GID) |
| 5. | (prazno) | Komentar, na primer polno ime |
| 6. | /home/janos |
Lastni (domači) imenik |
| 7. | /bin/bash |
Lupina, ki se zažene ob prijavi |
Celoten seznam da getent passwd. Ta pokaže vsebino /etc/passwd, če pa strežnik uporablja tudi centralni imenik (LDAP, Active Directory, SSSD), tudi uporabnike iz njega:
getent passwd
# Le imena
getent passwd | cut -d: -f1
# Podatki uporabnika
getent passwd janos
Pravi uporabniki in sistemski uporabniki
Velik del seznama niso ljudje, temveč sistemski uporabniki: storitve (sshd, nginx, mysql, polkitd in podobne) tečejo z lastnimi računi. Ločuje ju UID, meje pa določa /etc/login.defs:
| Sistem | Sistemski uporabniki | Navadni uporabniki |
|---|---|---|
| AlmaLinux 9 in 10 | 201–999 (in nekaj starih računov pod 200) | 1000–60000 |
| Ubuntu 24.04, Debian 13 | 100–999 | 1000–60000 (adduser dodeljuje do 59999) |
UID uporabnika root je vedno 0. Seznam navadnih uporabnikov z mejami iz /etc/login.defs:
min=$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)
max=$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)
awk -F: -v min="$min" -v max="$max" '$3 >= min && $3 <= max {print $1}' /etc/passwd
Krajše, če zadošča običajni obseg 1000–60000 (drugi ukaz pokaže tudi uporabnike iz imenika):
awk -F: '$3 >= 1000 && $3 < 60000 {print $1, $3, $7}' /etc/passwd
getent passwd {1000..60000}
Kdo se lahko prijavi?
Zadnje polje, lupina, pove, ali uporabnik lahko dobi ukazno vrstico. Pri sistemskih uporabnikih je to /usr/sbin/nologin ali /bin/false, zato se z njimi ni mogoče prijaviti. Računi z drugačno lupino:
grep -Ev '(nologin|false)$' /etc/passwd | cut -d: -f1,7
V preizkusu je to poleg uporabnika root in navadnih uporabnikov izpisalo tudi nekaj posebnih računov (sync, v AlmaLinuxu shutdown in halt): ti zaženejo en sam ukaz in nimajo gesla. Seznam veljavnih lupin je v datoteki /etc/shells.
Lupina sama ni vse: za prijavo s ključem SSH geslo ni potrebno, za prijavo z geslom pa je. Stanje gesla pokaže passwd -S:
sudo passwd -S janos
L ali LK v drugem stolpcu pomeni zaklenjeno (ali sploh nenastavljeno) geslo, P ali PS pa nastavljeno geslo. V preizkusu so bila na računalnikih, nameščenih iz cloud image, gesla vseh računov zaklenjena, prijava je delovala le s ključem SSH.
Kdo je prijavljen?
# Trenutno prijavljeni uporabniki
who
# Enako, s tekočim ukazom in obremenitvijo
w
# Le imena, v eni vrstici
users
# Prejšnje prijave in ponovni zagoni (zadnjih 10)
last -n 10
# Neuspešni poskusi prijave
sudo lastb -n 10
# Zadnja prijava vsakega uporabnika
lastlog
who in last pokažeta uporabnike, prijavljene na terminalu (TTY, pts/0) ali prek SSH, z naslovom IP oddaljenega računalnika. Povezave SSH, ki zaženejo le en ukaz brez terminala (na primer scp, rsync ali ssh szerver parancs), se na seznamu last ne prikažejo.
V Debianu 13 manjkajo last, lastb in lastlog: po opombah ob izdaji Debian 13 stara oblika datotek wtmp in lastlog leta 2038 prekipi, zato je Debian prešel na nova orodja na osnovi SQLite, ki na cloud image privzeto niso nameščena. Namesti jih:
sudo apt install wtmpdb libpam-wtmpdb lastlog2 libpam-lastlog2
Nato je ukaz last spet na voljo (iz paketa wtmpdb), namesto lastlog pa uporabi ukaz lastlog2. Namesto lastb opombe ob izdaji priporočajo ukaz sudo lslogins --failed. V preizkusu je last začel kazati podatke po naslednjem ponovnem zagonu, prejšnje prijave pa niso bile vključene. V sistemih AlmaLinux 9 in 10 ter Ubuntu 24.04 so bili last, lastb in lastlog na voljo privzeto.
Podrobnejši dnevnik prijav je v datoteki /var/log/secure (AlmaLinux) ali /var/log/auth.log (Ubuntu, Debian) in v izpisu journalctl -u sshd (v Ubuntuju in Debianu -u ssh), glej: Branje dnevniških datotek v Linuxu.
Izpis skupin
Skupine so v datoteki /etc/group:
fejlesztok:x:1000:janos,anna
Polja: ime skupine, mesto gesla (praktično se ne uporablja), identifikator skupine (GID), nazadnje pa člani, ločeni z vejicami.
# Vse skupine
getent group
# Podatki in člani skupine
getent group fejlesztok
# Skupine uporabnika
groups janos
id janos
# Tvoje skupine
id
id je najnatančnejši: izpiše UID uporabnika, njegovo primarno skupino (gid=) in vse njegove skupine s številkami, na primer uid=1001(janos) gid=1001(janos) groups=1001(janos),1000(fejlesztok). Le za imena skupin uporabi ukaz id -nG janos.
Past: člani primarne skupine niso vidni
Vsak uporabnik ima primarno skupino (četrto polje v /etc/passwd), običajno skupino z istim imenom. Članov primarne skupine /etc/group ne navaja, zato jih tudi getent group ne pokaže. V preizkusu je bila primarna skupina uporabnika admin users, izpis getent group users pa je kljub temu pokazal prazen seznam članov:
users:x:100:
Če te zanimajo vsi člani skupine, zberi tudi uporabnike, ki jim je dodeljena kot primarna skupina:
g=users
gid=$(getent group "$g" | cut -d: -f3)
{ getent group "$g" | cut -d: -f4 | tr , '\n'
getent passwd | awk -F: -v gid="$gid" '$4 == gid {print $1}'
} | grep -v '^$' | sort -u
Dodajanje uporabnika v skupino
usermod -aG
sudo usermod -aG fejlesztok janos
# Več skupin hkrati, ločenih z vejico
sudo usermod -aG fejlesztok,docker janos
Stikalo -a je obvezno. Brez -a (append) usermod -G ne doda, temveč vse dodatne skupine uporabnika zamenja z navedeno. V preizkusu je bil uporabnik janos član skupine fejlesztok; po usermod -G adm janos je ostal le v skupini adm:
Ta napaka lahko odvzame tudi pravice sudo: če skrbniškega uporabnika brez -a dodaš v novo skupino, izpade iz skupine wheel ali sudo. Zato med spremembo vedno pusti odprto povezavo s pravicami root ali sudo. Popravi se s ponovnim dodajanjem manjkajočih skupin (usermod -aG).
gpasswd: dodajanje in odstranjevanje
gpasswd naenkrat spremeni le eno skupino, zato z njim seznama skupin ni mogoče pomotoma izprazniti. Tudi odstranitev iz skupine je z njim najpreprostejša:
# Dodajanje
sudo gpasswd -a janos fejlesztok
# Odstranitev
sudo gpasswd -d janos fejlesztok
V Ubuntuju in Debianu adduser janos fejlesztok in deluser janos fejlesztok naredita isto. V AlmaLinuxu je adduser le drugo ime za useradd, tam te oblike ne uporabljaj.
Kdaj začne veljati?
Članstvo v skupini se naloži ob prijavi. V že tekoči seji nova skupina ni vidna: id janos jo že pokaže, id, zagnan v lastni lupini uporabnika, pa še ne, tudi pravice skupine še ne veljajo. Uporabnik se mora odjaviti in znova prijaviti (pri SSH odpreti novo povezavo).
Če se ne želiš odjaviti, newgrp zažene novo lupino, v kateri nova skupina že velja:
newgrp fejlesztok
V lupini newgrp navedena skupina postane primarna, zato tudi datoteke, ustvarjene tam, dobijo to skupino; exit te vrne v prvotno lupino. Enako velja za storitve: če si uporabnika storitve dodal v novo skupino, storitev znova zaženi.
Skupini wheel in sudo
Pravica uporabe sudo je v različnih distribucijah vezana na različno skupino:
| Sistem | Skupina | Vnos v datoteki /etc/sudoers |
|---|---|---|
| AlmaLinux, Rocky Linux, RHEL | wheel |
%wheel ALL=(ALL) ALL |
| Ubuntu, Debian | sudo |
%sudo ALL=(ALL:ALL) ALL |
Kdo lahko dobi skrbniške pravice, pokaže getent group wheel ali getent group sudo. Kaj natančno sme zagnati določen uporabnik, izpiše sudo -l -U, skupaj s posebnimi pravili v imeniku /etc/sudoers.d/:
sudo -l -U janos
V preizkusu je bilo pri uporabniku brez članstva v skupini to User janos is not allowed to run sudo on ..., po vključitvi v skupino sudo pa (ALL : ALL) ALL. Ustvarjanje uporabnika in dodelitev pravic sudo korak za korakom predstavlja članek Ustvarjanje uporabnika in dodelitev pravic sudo v Linuxu, uporabo sudo pa Uporaba ukaza sudo s primeri.
Ustvarjanje in brisanje skupine
# Nova skupina (GID izbere sistem, nad 1000)
sudo groupadd fejlesztok
# Megadott GID-del
sudo groupadd -g 2000 projekt
# Sistemska skupina za storitev (GID pod 1000)
sudo groupadd -r myapp
# Brisanje skupine
sudo groupdel projekt
Primarno skupino uporabnika je mogoče spremeniti s stikalom usermod -g (mali g); to je redko potrebno. V preizkusu je usermod -g datoteke v uporabnikovem lastnem imeniku prepisal na novo skupino, njegove datoteke zunaj imenika (na primer pod /tmp) pa so ostale pri stari skupini. Skupine ni mogoče izbrisati, dokler je nekomu primarna skupina (groupdel: cannot remove the primary group of user 'janos'), najprej je treba uporabnika prestaviti ali izbrisati.
Za skupni imenik, v katerega lahko pišejo vsi člani skupine, je treba nastaviti tudi skupino in dovoljenja imenika (chgrp, chmod 2775); podrobnosti opisuje članek Dovoljenja datotek (chmod, chown) v Linuxu.
Povzetek
| Naloga | Ukaz |
|---|---|
| Vsi uporabniki | getent passwd |
| Navadni uporabniki | awk -F: '$3 >= 1000 && $3 < 60000 {print $1}' /etc/passwd |
| Prijavljeni uporabniki | who, w |
| Prejšnje prijave | last, lastlog (Debian 13: lastlog2) |
| Vse skupine | getent group |
| Člani skupine | getent group fejlesztok (brez članov primarne skupine) |
| Skupine uporabnika | id janos, groups janos |
| Dodajanje v skupino | sudo usermod -aG fejlesztok janos ali sudo gpasswd -a janos fejlesztok |
| Odstranitev iz skupine | sudo gpasswd -d janos fejlesztok |
| Pravice sudo | sudo -l -U janos |


