Képzeld el, hogy a Linux rendszered egy nyüzsgő város. Minden felhasználó egy lakó, aki saját házzal, kulcsokkal és feladatokkal rendelkezik. De vajon tudod-e, hány lakó él ebben a városban? Kik ők pontosan, és mivel foglalkoznak? A Linux felhasználók az operációs rendszerünk egyik alappillérét képezik, és a róluk szóló információk elengedhetetlenek a biztonságos, stabil és hatékony rendszerüzemeltetéshez. Akár egy otthoni szervert futtatsz, akár egy vállalatnál dolgozol rendszeradminisztrátorként, az, hogy „ki kicsoda” a rendszeredben, alapvető fontosságú.
Talán azt gondolnád, létezik egyetlen, univerzális „user list” parancs Linux alatt, ami egy gombnyomásra eléd tárja az összes információt. Bár nincs pontosan ilyen nevű, egyedi parancs, a Linux rendszergazdák és haladó felhasználók számos eszközzel és módszerrel rendelkeznek, hogy pontosan ezt tegyék: listázzák, azonosítsák és megértsék a rendszeren lévő felhasználókat. Ebben az átfogó cikkben mélyrehatóan bemutatjuk, hogyan derítheted fel rendszered felhasználóit, milyen információkhoz juthatsz, és miért olyan kritikus ez a tudás a mindennapi működéshez és a biztonsághoz.
Miért fontos tudni, ki kicsoda a rendszeredben?
A felhasználók listázásának képessége messze túlmutat a puszta kíváncsiságon. Számos gyakorlati oka van, amiért ez a tudás létfontosságú:
- Biztonság: Azonosíthatod a nem kívánt, inaktív vagy potenciálisan kompromittált fiókokat. A tudtunkon kívül létrehozott felhasználók komoly biztonsági kockázatot jelentenek.
- Erőforrás-kezelés: Megtudhatod, mely felhasználók foglalnak le jelentős rendszererőforrásokat (CPU, memória, lemezterület).
- Hibaelhárítás: Probléma esetén gyorsan azonosíthatod az érintett felhasználót vagy csoportot, és elemezheted a tevékenységüket.
- Auditálás és megfelelés: Sok szabályozás előírja a felhasználói hozzáférések rendszeres felülvizsgálatát és dokumentálását.
- Rendszertervezés: Új szolgáltatások bevezetésekor vagy jogosultságok módosításakor elengedhetetlen a meglévő felhasználói struktúra ismerete.
A Linux felhasználói struktúra alapjai
Mielőtt belevágnánk a parancsokba, értsük meg röviden, hogyan épül fel egy felhasználó Linux alatt:
- Felhasználónév (Username): Az egyedi azonosító, amellyel bejelentkezünk.
- Felhasználói azonosító (UID – User ID): Minden felhasználóhoz tartozik egy egyedi numerikus azonosító. A rendszer belsőleg ezt használja a felhasználók azonosítására. A 0-ás UID a root felhasználóé, az 1-999 (distribúciótól függően) általában rendszerszolgáltatásokhoz használt felhasználókat jelöl, az 1000-es és a feletti UID-k pedig jellemzően az emberi felhasználóké.
- Csoport azonosító (GID – Group ID): Minden felhasználó legalább egy elsődleges csoporthoz tartozik. A GID ennek a csoportnak az azonosítója.
- Másodlagos csoportok (Supplementary Groups): Egy felhasználó több másodlagos csoporthoz is tartozhat, ami további jogosultságokat biztosít.
- Bejelentkezési Shell: Az a program, amely elindul a felhasználó bejelentkezésekor (pl. Bash, Zsh).
- Home Könyvtár: A felhasználó személyes könyvtára, ahol a fájljait tárolja.
Az Alap – A /etc/passwd fájl
A Linux felhasználók listázásának legősibb és legfundamentálisabb módja a /etc/passwd
fájl megtekintése. Ez a szöveges fájl tartalmazza a rendszer összes felhasználójának alapvető adatait, kivéve a jelszavakat (azok a /etc/shadow
fájlban vannak, biztonsági okokból). Minden sor egy felhasználót reprezentál, hét mezővel, amelyeket kettőspont (:
) választ el:
cat /etc/passwd
Ennek a parancsnak a kimenete valami ilyesmi lehet:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
...
felhasznalo:x:1000:1000:Felhasznalo Nev,,,:/home/felhasznalo:/bin/bash
Vizsgáljuk meg a mezőket egy példán keresztül: felhasznalo:x:1000:1000:Felhasznalo Nev,,,:/home/felhasznalo:/bin/bash
- felhasznalo: A felhasználónév. Ez az, amit beírunk a bejelentkezéskor.
- x: Régebben itt volt a jelszó kódolt formában, de ma már az
x
jelzi, hogy a jelszó az/etc/shadow
fájlban található. Ez egy fontos biztonsági lépés volt. - 1000: A felhasználó UID-je (User ID). Ez a felhasználó egyedi azonosító száma a rendszer számára.
- 1000: A felhasználó elsődleges csoportjának GID-je (Group ID). Ez a szám megegyezik a
/etc/group
fájlban található csoport azonosítójával. - Felhasznalo Nev,,,: A GECOS mező. Itt tárolhatók további információk, mint például a felhasználó teljes neve, irodahelyisége, telefonszáma stb. A vesszőkkel elválasztott részek általában a következőket jelentik: teljes név, szoba szám, munkahelyi telefonszám, otthoni telefonszám, egyéb.
- /home/felhasznalo: A felhasználó otthoni könyvtára (home directory). Ez az a könyvtár, ahová a felhasználó bejelentkezés után kerül.
- /bin/bash: A felhasználó alapértelmezett shellje. Ez az a parancsértelmező, ami elindul, amikor a felhasználó bejelentkezik.
Bár a cat /etc/passwd
egyszerű és közvetlen, fontos megjegyezni, hogy csak a lokálisan definiált felhasználókat mutatja. Ha a rendszered LDAP, Kerberos vagy más központi hitelesítési szolgáltatást használ, akkor ez a parancs nem fogja megjeleníteni az összes felhasználót.
Fejlettebb parancsok a felhasználók listázására
A /etc/passwd
fájl közvetlen olvasása csak a jéghegy csúcsa. Számos parancs létezik, amelyek a Name Service Switch (NSS) mechanizmuson keresztül dolgoznak, ami lehetővé teszi, hogy a rendszer ne csak a helyi fájlokból, hanem más forrásokból is lekérdezze a felhasználói információkat.
1. getent passwd
– A modern megközelítés
A getent
parancs a NSS adatbázisokat kérdezi le, és ezáltal képes megjeleníteni a lokális és a külső forrásból származó felhasználókat is. Ezért általában a getent passwd
a preferált módja a felhasználók listázásának:
getent passwd
A kimenet formátuma megegyezik az /etc/passwd
-vel, de tartalmazhatja a hálózati felhasználókat is, ha a rendszer úgy van konfigurálva.
2. compgen -u
– Csak a felhasználónevek
Ha csak a felhasználónevekre van szükséged, a compgen -u
parancs egy gyors és elegáns megoldás. Ez a parancs a Bash shell beépített funkciója, és alapértelmezetten a rendszeren lévő összes felhasználó nevét listázza, soronként egyet:
compgen -u
Ez különösen hasznos szkriptekben, ahol csak a felhasználónévre van szükség további feldolgozáshoz.
3. lslogins
– Részletes bejelentkezési adatok
Az lslogins
parancs (gyakran a util-linux
csomag része) egy modern és rendkívül hasznos eszköz a felhasználók és bejelentkezési információik áttekintésére. Sokkal több részletet ad, mint a puszta felhasználónév vagy UID:
lslogins
A kimenet oszlopai magukért beszélnek:
- USER: Felhasználónév.
- UID: Felhasználói azonosító.
- FIRST_LOGIN: Az első rögzített bejelentkezés ideje.
- LAST_LOGIN: Az utolsó rögzített bejelentkezés ideje.
- LAST_HOST: Az utolsó bejelentkezéshez használt IP-cím vagy állomásnév.
- LAST_TTY: Az utolsó bejelentkezéshez használt terminál (tty).
- LOGINS: Bejelentkezések száma (amennyiben rögzítve van).
- … és még sok más: A parancs számos opcióval bővíthető a megjelenített információk testreszabásához (pl.
lslogins -u felhasznalo
egy adott felhasználóról).
Az lslogins
különösen hasznos az inaktív fiókok azonosítására vagy a rendszervédelem szempontjából gyanús bejelentkezési minták felderítésére.
Ki van bejelentkezve most? Aktív felhasználók listázása
Nem mindig az összes felhasználóra vagy azok metaadataira vagyunk kíváncsiak, hanem arra, hogy éppen kik vannak bejelentkezve, és mit csinálnak.
1. who
– Ki van itt?
A who
parancs a legegyszerűbb módja az aktuálisan bejelentkezett felhasználók listázására. Megmutatja a felhasználónevet, a terminált (tty), a bejelentkezés idejét és a forrás IP-címet (ha távoli bejelentkezésről van szó):
who
Példa kimenet:
felhasznalo tty1 2023-10-27 10:30 (console)
admin pts/0 2023-10-27 10:45 (192.168.1.100)
2. w
– Ki van itt és mit csinál?
A w
parancs a who
parancs kiterjesztett változata. Nemcsak a bejelentkezett felhasználókat mutatja, hanem azt is, hogy mit csinálnak éppen, mennyi ideje tétlenek, és mennyi CPU időt használnak fel a folyamataik:
w
Kimenet példa:
10:50:01 up 1:20, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
felhasznalo tty1 :0 10:30 1:20m 0.03s 0.02s gnome-session
admin pts/0 192.168.1.100 10:45 0.00s 0.05s 0.02s bash
Ez a parancs rendkívül hasznos a rendszer terhelésének gyors felmérésére és a gyanús tevékenységek azonosítására.
3. users
– Egyszerű felhasználónév lista
Ha csak egy egyszerű listára van szükséged az aktuálisan bejelentkezett felhasználók neveiről (akár többször is, ha valaki többször is bejelentkezett), a users
parancs a leggyorsabb:
users
Példa kimenet: felhasznalo admin felhasznalo
Felhasználói információk lekérése az id
paranccsal
Ha egy specifikus felhasználóról szeretnél részletesebb információt kapni, az id
parancs a te barátod. Megjeleníti a felhasználó UID-jét, elsődleges GID-jét és az összes másodlagos csoportját, amihez tartozik:
id felhasznalo
Kimenet példa:
uid=1000(felhasznalo) gid=1000(felhasznalo) groups=1000(felhasznalo),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),120(lpadmin),131(sambashare)
Ez a kimenet azonnal megmutatja, milyen jogosultságokkal rendelkezik a felhasználó a csoporttagságai révén, ami kulcsfontosságú a fájlhozzáférés és a rendszeradminisztrációs jogok ellenőrzésénél.
Felhasználói folyamatok azonosítása
Bár nem közvetlenül felhasználólistázó parancs, a ps aux
és a top
eszközök segítenek abban, hogy lásd, mely felhasználók milyen folyamatokat futtatnak a rendszeren. Ez elengedhetetlen a rendszer stabilitásának és biztonságának megőrzéséhez.
ps aux | less
A kimenet első oszlopa (USER
) mutatja, melyik felhasználó indította az adott folyamatot. A top
parancs interaktív felületén szintén láthatod a felhasználóneveket a folyamatok mellett.
Fejlett szűrés és kezelés
A fent bemutatott parancsok kombinálhatók más Linux eszközökkel, mint például a grep
, awk
, cut
, sort
és uniq
, hogy pontosan a kívánt információt kapjuk meg.
Csak az emberi felhasználók listázása
A rendszer felhasználói (pl. daemon
, www-data
) általában alacsony UID-vel rendelkeznek (jellemzően 0-999). Az emberi felhasználók UID-jei általában 1000-től kezdődnek (bár ez konfigurálható). Szűrhetjük a felhasználókat UID alapján:
getent passwd | awk -F: '$3 >= 1000 {print $1}'
Ez a parancs az awk
segítségével feldolgozza a getent passwd
kimenetét, kettősponttal (:
) tagolja a sorokat, és csak azokat a sorokat jeleníti meg, ahol a harmadik mező (UID) nagyobb vagy egyenlő, mint 1000, majd kiírja az első mezőt (felhasználónév).
Inaktív felhasználók keresése
Az lslogins
már említett, de kombinálva más eszközökkel még hatékonyabb:
lslogins --json | jq '.[] | select(.LAST_LOGIN | length == 0) | .USER'
Ez a bonyolultabb parancs feltételezi a jq
JSON-feldolgozó eszköz meglétét. Az lslogins --json
JSON formátumban adja vissza az adatokat, amit a jq
feldolgoz, és kiválasztja azokat a felhasználókat, akiknek nincs rögzített utolsó bejelentkezésük (azaz valószínűleg soha nem jelentkeztek be, vagy nagyon régóta nem).
Felhasználói csoportok listázása
Bár ez nem felhasználólista, a felhasználók kezeléséhez elengedhetetlen a csoportok ismerete. Az /etc/group
fájl hasonlóan működik, mint az /etc/passwd
, de a csoportokat és azok tagjait listázza:
cat /etc/group
Vagy a NSS támogatással:
getent group
Biztonsági megfontolások és legjobb gyakorlatok
A Linux felhasználók kezelése alapvető része a rendszerbiztonságnak. Íme néhány legjobb gyakorlat:
- Rendszeres auditálás: Rendszeresen vizsgáld át a felhasználói fiókokat. Azonosíts és tiltsd le azokat, amelyek már nincsenek használatban, vagy amelyek jogosultságai túl magasak.
- Erős jelszavak és kétfaktoros hitelesítés: Győződj meg róla, hogy minden emberi felhasználó erős jelszavakat használ, és ahol lehetséges, vezess be kétfaktoros hitelesítést (2FA).
- A rendszerszolgáltatások felhasználóinak megértése: Ne ijedj meg a sok alacsony UID-jű felhasználótól. Ezeket jellemzően a rendszerszolgáltatások (pl. webkiszolgáló, adatbázis) használják a minimális jogosultság elve alapján, hogy korlátozzák a lehetséges károkat egy támadás esetén. Ne töröld őket!
- A
root
felhasználó használatának minimalizálása: Aroot
a rendszer teljes ura. A mindennapi adminisztrációhoz használd asudo
parancsot a saját felhasználói fiókodból, és csak akkor lépj be rootként, ha feltétlenül szükséges. - Jogosultságok elvének alkalmazása: Adj a felhasználóknak és szolgáltatásoknak pontosan annyi jogosultságot, amennyire szükségük van a feladatuk elvégzéséhez, és ne többet.
Összefoglalás
Bár nincs egyetlen, dedikált „user list” parancs Linux alatt, a rendszergazdák és felhasználók széles skáláját használhatják a felhasználók listázására, azonosítására és kezelésére. A /etc/passwd
fájltól kezdve, a getent passwd
, who
, w
, lslogins
és id
parancsokon át, egészen a fejlett szűrési technikákig, számos eszköz áll rendelkezésünkre, hogy teljes képet kapjunk a rendszert használókról.
A Linux felhasználók alapos ismerete és a róluk szóló információk hatékony kezelése nem csupán a hatékony rendszeradminisztráció alapja, hanem a rendszerbiztonság egyik legfontosabb pillére is. A rendszeres felülvizsgálat és a legjobb gyakorlatok betartása hozzájárul egy stabilabb, biztonságosabb és könnyebben menedzselhető Linux környezet kialakításához. Ne feledd: egy jól ismert és megfelelően kezelt felhasználói bázis a sikeres Linux üzemeltetés kulcsa!