A GNU/Linux rendszerek lehetővé teszik, hogy több felhasználó is használhassa a rendszer, akár egyidejűleg is. Szükséges, hogy a felhasználói információkat (felhasználói név, jelszó, stb.) a rendszer tárolja “valahol“. Most ezt a “valahol“-t nézzük át, merre és hogyan tárolódnak az információk.
Felhasználók, csoportok és jelszavak tárolása
A rendszer által ismert felhasználók listáját a /etc/passwd, a csoportokét a /etc/group fájl tárolja. Kezdetben más egyéb információk mellett még a jelszavakat is e fájl tartalmazta, amit a rendszer minden felhasználója olvasni tudott, ezért a jelszavak tárolására nem volt a legbiztonságosabb. A jelszavak egyirányú kódolással tárolódnak, azaz jelenleg nincs olyan közismert matematikai algoritmus, amivel vissza lehetne fejteni, de brutalforce módszerrel (nyers erő = végigpróbálgatni a jelszavakat) neki lehet esni, amivel csak idő kérdése a siker. A jelszavak megvédésére létrehozták a /etc/shadow fájlt, amit csak a root felhasználó és a shadow csoport tagjai olvashatnak, és ebbe helyezték át a kódolt jelszavakat.
Minden felhasználóhoz (UID) és csoporthoz (GID) egy pozitív egész szám tartozik. A rendszer csak szám alapján képes kezelni őket és csak a kijelzésnél “konvertálódnak” át névvé a /etc/passwd és a /etc/group fájlban tárolt információk alapján. A rendszergazda száma a 0 (nulla), a többi felhasználó száma Debian rendszerekben 999 feletti. Amikor egy felhasználót hozzáadunk a rendszerhez, kap egy azonosító számot, valamint létrejön a felhasználói nevével azonos csoport is, amelyhez ugyanaz az azonosító szám tartozik. Ha foglalt már ez a szám, akkor növekvő irányban az első szabad GID számot kapja. Felhasználó eltávolítása esetén az azonosító szám felszabadul és újra felhasználhatóvá válik.
A jonci felhasználó a /etc/passwd fájlban a következőképpen néz ki:
jonci:x:1000:1000:Jónás Zsolt,,,:/home/jonci:/bin/bash
A sorban eltárolt információkat a “:” (kettőspont) jel tagolja területekre. Legelöl szerepel a felhasználói név. A következő részben helyezkedne el a jelszó, ami biztonsági szempontból már nem itt tárolódik. Az “x” karakter jelzi, hogy a /etc/shadow fájlban kell keresni. Ha az “x” helyett “!” (felkiáltójel) van, akkor az adott felhasználó belépése tiltva van, de ajánlott inkább a shadow fájlban tiltani a belépést. A következő oszlopban szerepel a felhasználó-azonosító szám (UID), utána a csoportazonosító szám (GID). Majd egy nagyobb rész következik, ami a felhasználóról tárol információkat, ha ki lett töltve (teljes név, szobaszám, telefonszám, stb.). Az utolsó előtti rész tárolja a felhasználó saját (home) könyvtárát. Legvégül pedig a login-shell programot kell megadni elérési útvonallal együtt, ez a program fogja fogadni a felhasználót sikeres bejelentkezés esetén. Ha egy felhasználót nem akarunk kitiltani a rendszerből, csak a login lehetőséget szeretnénk megvonni tőle, akkor login-shell-nek adjuk meg a /bin/false programot.
A rendszerben létező csoportok tárolása a /etc/group fájlban történik. Nézzünk meg ebből is egy sort, hogyan is épül fel:
audio:x:1000:jonci,pedro
A különböző területeket itt is a “:” (kettőspont) jel választja el. Minden sor a csoportnévvel kezdődik, ezután következik a kódolt jelszó, de a /etc/gshadow fájl használata esetén csak egy “x” látható. A harmadik oszlopban helyezkedik el a csoportazonosító. Legvégül pedig a csoportba tartozó felhasználók azonosítója, vesszővel elválasztva.
Most pedig nézzünk egy példát a /etc/shadow fájlra:
jonci:$1$jukMheGi$XxA6d1eneUhYBxT/8saI40:14360:0:99999:7:::
A már megszokott “:” (kettőspont) jel szolgál itt is a mezők szeparálására. A felhasználói névvel kezdődik a sor, majd jön a kódolt jelszó. Ezután a jelszóra és az azonosítóra vonatkozó adatok:
- 1970 január 1-je óta eltelt napok száma az utolsó jelszóváltoztatásig
- Két jelszóváltoztatás közötti maximális idő napokban
- Két jelszóváltoztatás közötti minimális idő napokban
- A jelszó lejárása előtt hány nappal kell a felhasználót figyelmeztetni
- A jelszó lejárása után mennyi nap múlva váljon a hozzáférés letiltottá
- 1970 január 1-je óra eltelt napok száma addig, amikor le lett tiltva a hozzáférés
- ez a mező fenntartva
Csoportok számára is létrehoztak egy shadow fájlt gshadow néven, ami szintén a /etc könyvtárban található meg. Ebben a fájlban is a “:” (kettőspont) jel szolgál a mezők elválasztárása. A /etc/gshadow fájl szintaktikája a következő:
csoportnév:jelszó:csoportadmin,csoportadmin,...:tag,tag,...