Kik férnek hozzá a szerverhez, ki van éppen bejelentkezve, és melyik felhasználó melyik csoportba tartozik? Ezekre a kérdésekre egy új szerver átvételekor, egy biztonsági ellenőrzésnél vagy egy jogosultsági hiba keresésekor egyaránt szükség van. Ez a cikk bemutatja, hogyan listázhatod a felhasználókat és a csoportokat, hogyan veheted fel a felhasználót egy csoportba, és milyen buktatókra figyelj közben.
A parancsokat 2026 novemberében AlmaLinux 10.2, AlmaLinux 9.8, Ubuntu 24.04.5 és Debian 13.7 rendszeren próbáltuk ki, a disztribúciók saját cloud image-éből telepített virtuális gépeken; egy KVM VPS-en ugyanígy működnek. A listázáshoz nem kell sudo, a módosításokhoz igen. A példákban a felhasználó neve janos, a csoporté fejlesztok.
A felhasználók listázása
Az /etc/passwd fájl
A helyi felhasználók az /etc/passwd fájlban vannak, soronként egy, kettősponttal elválasztott mezőkkel:
janos:x:1001:1001::/home/janos:/bin/bash
| Mező | Példa | Jelentése |
|---|---|---|
| 1. | janos |
Felhasználónév |
| 2. | x |
A jelszó helye; a jelszó hash-e valójában az /etc/shadow fájlban van |
| 3. | 1001 |
Felhasználói azonosító (UID) |
| 4. | 1001 |
Az elsődleges csoport azonosítója (GID) |
| 5. | (üres) | Megjegyzés, például teljes név |
| 6. | /home/janos |
Saját (home) könyvtár |
| 7. | /bin/bash |
Bejelentkezéskor induló shell |
A teljes listát a getent passwd adja. Ez az /etc/passwd tartalmát mutatja, de ha a szerver központi címtárat (LDAP, Active Directory, SSSD) is használ, az onnan érkező felhasználókat is:
getent passwd
# Csak a nevek
getent passwd | cut -d: -f1
# Egy felhasználó adatai
getent passwd janos
Valódi felhasználók és rendszerfelhasználók
A lista nagy része nem ember, hanem rendszerfelhasználó: a szolgáltatások (sshd, nginx, mysql, polkitd és társaik) saját fiókkal futnak. A kettőt az UID különbözteti meg, a határokat az /etc/login.defs adja meg:
| Rendszer | Rendszerfelhasználók | Normál felhasználók |
|---|---|---|
| AlmaLinux 9 és 10 | 201–999 (és néhány régi, 200 alatti fiók) | 1000–60000 |
| Ubuntu 24.04, Debian 13 | 100–999 | 1000–60000 (az adduser 59999-ig oszt ki) |
A root UID-ja mindig 0. A normál felhasználók listája az /etc/login.defs határaival:
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
Rövidebben, ha elég a szokásos 1000–60000 tartomány (a második parancs a címtárból érkező felhasználókat is mutatja):
awk -F: '$3 >= 1000 && $3 < 60000 {print $1, $3, $7}' /etc/passwd
getent passwd {1000..60000}
Ki tud bejelentkezni?
Az utolsó mező, a shell mutatja meg, kaphat-e a felhasználó parancssort. A rendszerfelhasználóknál ez /usr/sbin/nologin vagy /bin/false, így velük nem lehet belépni. Az ettől eltérő shellű fiókok:
grep -Ev '(nologin|false)$' /etc/passwd | cut -d: -f1,7
A teszten ez a root és a normál felhasználók mellett néhány különleges fiókot is kiírt (sync, AlmaLinuxon shutdown és halt): ezek egyetlen parancsot futtatnak, és jelszavuk nincs. Az érvényes shellek listája az /etc/shells fájlban van.
A shell önmagában nem minden: az SSH kulcsos belépéshez nem kell jelszó, a jelszavas belépéshez viszont kell. A jelszó állapotát a passwd -S mutatja:
sudo passwd -S janos
Az L vagy LK a második oszlopban zárolt (vagy be sem állított) jelszót jelent, a P vagy PS beállított jelszót. A teszten a cloud image-ekből telepített gépeken minden fiók jelszava zárolt volt, a belépés csak SSH kulccsal működött.
Ki van bejelentkezve?
# A most bejelentkezett felhasználók
who
# Ugyanez, a futó paranccsal és a terheléssel
w
# Csak a nevek, egy sorban
users
# A korábbi bejelentkezések és újraindítások (a legutóbbi 10)
last -n 10
# A sikertelen bejelentkezési kísérletek
sudo lastb -n 10
# Minden felhasználó legutóbbi bejelentkezése
lastlog
A who és a last a terminálon (TTY, pts/0) vagy SSH-n bejelentkezett felhasználókat mutatja, a távoli gép IP-címével. Az olyan SSH-kapcsolatok, amelyek csak egy parancsot futtatnak terminál nélkül (például scp, rsync vagy ssh szerver parancs), nem jelennek meg a last listájában.
Debian 13-on a last, a lastb és a lastlog hiányzik: a Debian 13 kiadási megjegyzései szerint a régi wtmp és lastlog fájlformátum a 2038-as évnél túlcsordul, ezért a Debian új, SQLite-alapú eszközökre váltott, és a cloud image-en ezek alapból nincsenek telepítve. Telepítsd őket:
sudo apt install wtmpdb libpam-wtmpdb lastlog2 libpam-lastlog2
Ezután a last parancs újra elérhető (a wtmpdb csomagból), a lastlog helyett pedig a lastlog2 parancsot használd. A lastb helyett a kiadási megjegyzések a sudo lslogins --failed parancsot ajánlják. A teszten a last a következő újraindítás után kezdett adatot mutatni, a korábbi bejelentkezések nem kerültek bele. Az AlmaLinux 9 és 10, valamint az Ubuntu 24.04 rendszeren a last, a lastb és a lastlog alapból megvolt.
A bejelentkezések részletesebb naplója az /var/log/secure (AlmaLinux) vagy az /var/log/auth.log (Ubuntu, Debian) fájlban és a journalctl -u sshd (Ubuntun és Debianon -u ssh) kimenetében található, lásd: Naplófájlok olvasása Linuxon.
A csoportok listázása
A csoportok az /etc/group fájlban vannak:
fejlesztok:x:1000:janos,anna
A mezők: a csoport neve, a jelszó helye (gyakorlatilag nem használják), a csoportazonosító (GID), végül a tagok vesszővel elválasztva.
# Az összes csoport
getent group
# Egy csoport adatai és tagjai
getent group fejlesztok
# Egy felhasználó csoportjai
groups janos
id janos
# A saját csoportjaid
id
Az id a legpontosabb: kiírja a felhasználó UID-ját, elsődleges csoportját (gid=) és az összes csoportját számokkal együtt, például uid=1001(janos) gid=1001(janos) groups=1001(janos),1000(fejlesztok). Csak a csoportnevekhez használd az id -nG janos parancsot.
Buktató: az elsődleges csoport tagjai nem látszanak
Minden felhasználónak van egy elsődleges csoportja (az /etc/passwd negyedik mezője), ez általában egy vele azonos nevű csoport. Az elsődleges csoport tagjait az /etc/group nem sorolja fel, ezért a getent group sem mutatja őket. A teszten az admin felhasználó elsődleges csoportja a users volt, a getent group users kimenete mégis üres taglistát mutatott:
users:x:100:
Ha egy csoport összes tagjára kíváncsi vagy, az elsődleges csoportként hozzárendelt felhasználókat is gyűjtsd ki:
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
Felhasználó hozzáadása csoporthoz
usermod -aG
sudo usermod -aG fejlesztok janos
# Több csoport egyszerre, vesszővel elválasztva
sudo usermod -aG fejlesztok,docker janos
Az -a kapcsoló kötelező. Az -a (append) nélkül a usermod -G nem hozzáad, hanem lecseréli a felhasználó összes kiegészítő csoportját a megadottra. A teszten a janos felhasználó a fejlesztok csoport tagja volt; egy usermod -G adm janos után már csak az adm csoportban maradt:
Ez a hiba sudo jogot is elvehet: ha egy rendszergazda felhasználót -a nélkül teszel be egy új csoportba, kikerül a wheel vagy a sudo csoportból. Ezért a módosítás közben mindig hagyj nyitva egy root vagy sudo jogú kapcsolatot. Javítani a hiányzó csoportok újbóli hozzáadásával lehet (usermod -aG).
gpasswd: hozzáadás és eltávolítás
A gpasswd egyszerre csak egy csoportot módosít, így nem lehet vele véletlenül kiüríteni a csoportlistát. Csoportból eltávolítani is ezzel a legegyszerűbb:
# Hozzáadás
sudo gpasswd -a janos fejlesztok
# Eltávolítás
sudo gpasswd -d janos fejlesztok
Ubuntun és Debianon az adduser janos fejlesztok és a deluser janos fejlesztok ugyanezt csinálja. AlmaLinuxon az adduser csak a useradd másik neve, ott ezt a formát ne használd.
Mikor lép életbe?
A csoporttagság a bejelentkezéskor töltődik be. A már futó munkamenetben az új csoport nem látszik: az id janos már mutatja, de a felhasználó saját shelljében kiadott id még nem, és a csoport jogosultságai sem érvényesek. A felhasználónak ki kell lépnie és újra be kell jelentkeznie (SSH esetén egy új kapcsolatot nyitnia).
Ha nem szeretnél kilépni, a newgrp egy új shellt indít, amelyben az új csoport már érvényes:
newgrp fejlesztok
A newgrp shelljében a megadott csoport lesz az elsődleges, így az ott létrehozott fájlok is ezt a csoportot kapják; az exit visszavisz az eredeti shellbe. A szolgáltatásokra ugyanez vonatkozik: ha egy szolgáltatás felhasználóját tetted be egy új csoportba, indítsd újra a szolgáltatást.
A wheel és a sudo csoport
A sudo használatának joga disztribúciónként más csoporthoz kötődik:
| Rendszer | Csoport | Bejegyzés az /etc/sudoers fájlban |
|---|---|---|
| AlmaLinux, Rocky Linux, RHEL | wheel |
%wheel ALL=(ALL) ALL |
| Ubuntu, Debian | sudo |
%sudo ALL=(ALL:ALL) ALL |
Hogy kik kaphatnak rendszergazdai jogot, a getent group wheel vagy a getent group sudo mutatja. Hogy egy adott felhasználó pontosan mit futtathat, azt a sudo -l -U írja ki, a /etc/sudoers.d/ könyvtárban megadott egyedi szabályokkal együtt:
sudo -l -U janos
A teszten egy csoporttag nélküli felhasználónál ez User janos is not allowed to run sudo on ... volt, a sudo csoportba tétele után (ALL : ALL) ALL. A felhasználó létrehozását és a sudo jog megadását lépésről lépésre a Felhasználó létrehozása és sudo jogosultság adása Linuxon cikk mutatja be, a sudo használatát A sudo parancs használata példákkal.
Csoport létrehozása és törlése
# Új csoport (a GID-t a rendszer választja, 1000 felett)
sudo groupadd fejlesztok
# Megadott GID-del
sudo groupadd -g 2000 projekt
# Rendszercsoport egy szolgáltatásnak (GID 1000 alatt)
sudo groupadd -r myapp
# Csoport törlése
sudo groupdel projekt
Egy felhasználó elsődleges csoportját a usermod -g kapcsolóval (kis g) lehet módosítani; ezt ritkán kell. A teszten a usermod -g a felhasználó saját könyvtárában lévő fájlokat átírta az új csoportra, a könyvtáron kívüli fájljai (például a /tmp alatt) viszont a régi csoportnál maradtak. Egy csoport nem törölhető, amíg valakinek az elsődleges csoportja (groupdel: cannot remove the primary group of user 'janos'), előbb a felhasználót kell átállítani vagy törölni.
Közös könyvtárhoz, amelyet a csoport minden tagja írhat, a könyvtár csoportját és jogosultságait is be kell állítani (chgrp, chmod 2775); ennek részleteit a Fájljogosultságok (chmod, chown) Linuxon cikk írja le.
Összefoglaló
| Feladat | Parancs |
|---|---|
| Összes felhasználó | getent passwd |
| Normál felhasználók | awk -F: '$3 >= 1000 && $3 < 60000 {print $1}' /etc/passwd |
| Bejelentkezett felhasználók | who, w |
| Korábbi bejelentkezések | last, lastlog (Debian 13: lastlog2) |
| Összes csoport | getent group |
| Egy csoport tagjai | getent group fejlesztok (az elsődleges csoport tagjai nélkül) |
| Egy felhasználó csoportjai | id janos, groups janos |
| Hozzáadás csoporthoz | sudo usermod -aG fejlesztok janos vagy sudo gpasswd -a janos fejlesztok |
| Eltávolítás csoportból | sudo gpasswd -d janos fejlesztok |
| Sudo jogok | sudo -l -U janos |


