Felhasználó hozzáadása és eltávolítása karakteres szövegszerkesztő felhasználásával is megoldható, de léteznek rá programok, amelyek használata kényelmesebbé teszik e műveletet, mivel egyszerre több fájlt is módosítani kell.
Felhasználó hozzáadása és módosítása – useradd, usermod
A két program szinte megegyezik a megadható paramétereiben (a különbséget jelölöm), ezért is szerepelnek egy cím alatt, csak annyiban térnek el egymástól, hogy a felparaméterezett useradd program hozzáadja a felhasználót a rendszerhez, ugyanekkor a usermod a már meglévő felhasználó hozzáférését módosítja a megadott tulajdonságúra. Egy táblázatban összefoglalom a lehetséges paramétereket, amelyekkel befolyásolható a létrehozási folyamat. A usermod parancs esetén a létrehozási és beállítási funkciók megváltoztatási műveletként értendők:
–c MEGJEGYZÉS | információk megadása a felhasználóról (lásd: /etc/passwd) | |
–d HOMEKÖNVTÁR | az alap /home/<felhasználónév> könyvtárat változtathatjuk meg (ettől még a home könyvtár nem jön létre) | |
–e LEJÁRAT | felhasználói hozzáférés lejárása ÉÉÉÉ-HH-NN formátumban | |
–g CSOPORT | felhasználó alap csoportja, aminek léteznie kell, ha nem adjuk meg, a felhasználó csoportja a users (100) lesz | |
–G CSOPORT[,…] | megadható, hogy a felhasználó saját csoportján kívül, melyik másik csoportba tartozzon még (vesszővel elválasztva többet is megadhatunk) | |
–p JELSZÓ | felhasználó jelszavának megadása kódolt formában | |
–s SHELL | felhasználóhoz rendelt alapértemezett shell megváltoztatása | |
–u UID | a /etc/login.defs fájlban meghatározott intervallum (UID_MIN=1000, UID_MAX=60000) között az első szabad UID értékelt kapja a felhasználó, amit e paraméterrel bírálhatunk felül |
Az alábbi kettő kapcsoló csak a useradd programnál használható:
–m | felhasználó a home könyvtárának létrehozása, /etc/skel könyvtár tartalmának bemásolása | |
–k SKEL KÖNYVTÁR |
a skel könyvtár alapértelmezett útvonalának (/etc/skel) felülbírálása (csak az “-m” kapcsolóval használható) |
Az alábbi három kapcsoló csak a usermod programnál használható:
–l ÚJNÉV |
felhasználói név, de ez nem változtatja meg a home könyvtárat | |
–L | használatával letiltható a felhasználó belépése: egy “!” (felkiáltójel) kerül a /etc/shadow fájlban a jelszava elé (nem használható együtt a “-p” és a “-U” paraméterekkel) | |
–U | használatával engedélyezhető a “-L” paraméterrel letiltott felhasználó újbóli belépése a rendszerbe (nem használható együtt a “-p” és a “-L” paraméterekkel) |
Lássunk példákat az elmélet után:
A jonci felhasználó hozzáadása a rendszerhez úgy, hogy közben megváltoztatjuk az alap home könyvtárának az elérési útvonalát, amit létre is hozatunk, és belemásoltatjuk az alap fájlokat, valamint kitöltjük a felhasználói információkat:
root@bash# useradd -c "Jónás Zsolt,VIP" -d /home/vip/jonci -m jonci root@bash#
A jonci felhasználó hozzáadása a rendszerhez úgy, hogy adjuk meg az alap csoportját, adjuk hozzá az audio és a cdrom csoporthoz, valamint az alap fájlokat ne a /etc/skel könyvtárból másolja a rendszer, hanem a /etc/alapfajlok könyvtárból. (Természetesen az /etc/alapfajlok könyvtárnak léteznie kell és benne a kívánt fájlokkal különben nincs értelme):
root@bash# useradd -g staff -G audio,cdrom -m -k /etc/alapfajlok jonci root@bash#
Változtassuk meg a jonci felhasználó által használt shell programot:
root@bash# usermod -s /bin/csh jonci root@bash#
Tiltsuk ki a jonci felhasználót a rendszerből (a már belépett kapcsolatait nem szünteti meg):
root@bash# usermod -L jonci root@bash#
Végül engedjük vissza a rendszerbe:
root@bash# usermod -U jonci root@bash#
Felhasználó létrehozása egy másik programmal – adduser
Segítségével egyszerűen vehetünk fel új felhasználót a rendszerbe. A felhasználó hozzáadásával egyidejűleg egy vele azonos nevű csoport is létrejön.
Felhasználó hozzáadásának menete:
root@bash# adduser jonci Adding user `jonci'... Adding new group `jonci' (1000). Adding new user `jonci' (1000) with group `jonci'. Creating home directory `/home/jonci'. Copying files from `/etc/skel' Enter new UNIX password: <jelszó megadása> Retype new UNIX password: <jelszó megadása> passwd: password updated successfully Changing the user information for jonci Enter the new value, or press ENTER for the default Full Name []: Jónás Zsolt A felhasználóhoz tartozó egyéb Room Number []: információk, megadásuk nem kötelező. Work Phone []: Céges környezetben lehetnek hasznosak, Home Phone []: de sokfelhasználós rendszereknél már Other []: központosított felhasználókezelés van. Is the information correct? [y/N] y root@bash#
Különböző paraméterekkel befolyásolhatjuk a program működését. A “–system” paraméterrel csak a felhasználó jön létre a home könyvtárával együtt és a nogroup csoportba kerül. Ha megadjuk a “–group” paramétert, akkor a felhasználónévvel megegyező csoport is létrejön és annak a tagja lesz. Továbbá a hozzáférése le lesz tiltva és a shell értéke is a /bin/false lesz.
További paraméterek:
––home KÖNVTÁR |
felhasználó home könyvtárának a helye | |
––shell SHELL |
felhasználóhoz rendel alapértelmezett shell | |
––gecos ADATOK | home könyvtár létrehozásának tiltása | |
––uid UID | felhasználó azonosító száma | |
––gid GID |
felhasználó csoportazonosítója | |
––ingroup CSOPORT |
a felhasználó az alábbi csoport tagja is legyen | |
––no-create-home |
felhasználó home könyvtárának létrehozásának tiltása | |
––disabled-password | felhasználó jelszavának letiltása | |
––disabled-login | felhasználó letiltása | |
––force-badname |
ha a /etc/adduser.conf fájlban definiált NAME_REGEX szűrési feltétel (“^[a-z][-a-z0-9]*$” – azaz angol abc valamelyik kisbetűjével kezdődik és a továbbiakban kisbetűt vagy számot tartalmaz) nem illeszkedik a felhasználói névre, akkor nem jön létre a felhasználó |
Felhasználó hozzáadása egy létező csoporthoz – adduser
Ehhez a művelethez is használhatjuk az adduser programot, amelynek menete a következő:
adduser <létező felhasználó> <létező csoport>
Létező jonci felhasználó hozzáadása a létező audio csoporthoz:
root@bash# adduser jonci audio Adding user `jonci' to group `audio'... Done. root@bash#
A hangkártyát csak az audio csoport tagjai (és a root) használhatják, így érdemes hozzáadnunk a saját felhasználónkat az audio csoporthoz, ha zenét szeretnénk hallgatni.
Felhasználói jelszó megváltoztatása – passwd
A passwd program használható a jelszavak megváltoztatására. A felhasználók csak a saját jelszavukat változtathatják meg, a rendszergazda bárkiét. A passwd ezen kívül használható a felhasználói adatok, mint például az teljes név, a login shell, vagy a jelszavak használhatósági idejének megváltoztatására is.
A jelszavak csak az ABC kis betűiből, nagy betűiből, számokból és írásjelekből állhatnak.
Az aktuális felhasználó jelszavának megváltoztatásához a passwd parancsot paraméter nélkül kell meghívni. A rendszergazda megadhatja paraméterben a kívánt felhasználót:
root@bash# passwd Changing password for jonci (current) UNIX password: <régi jelszó megadása> Enter new UNIX password: <új jelszó megadása> Retype new UNIX password: <új jelszó megadása újra> root@bash# root@bash# passwd jonci Enter new UNIX password: <új jelszó megadása> Retype new UNIX password: <új jelszó megadása> root@bash#
A program előbb bekéri az aktuális jelszót (kivéve, ha a rendszergazda indítja el) a biztonság kedvéért, majd az új jelszót kétszer az elírás kiszűrésére. Természetesen nem jeleníti meg a begépelt betűket, és csillaggal sem helyettesíti azokat. Felhasználói szinten nem tudunk egyszerű logikával előállítható jelszót elfogadtatni, amire az alábbi üzenettel hívja fel a figyelmünket:
Bad: new password is too simple
Ha az új jelszó nagyon hasonlít az előző jelszavunkra, akkor szintén elutasítást kapunk:
Bad: new and old password are too similar
Sikeres jelszóváltoztatás az alábbi üzenettel nyugtázza:
passwd: password updated successfully
Ezután már csak az új jelszót fogadja el a rendszer, az esetleges jelszó változtatási megkötések (min, max idő a két jelszócsere között) újra kezdődnek.
Azonosító információk megváltoztatása – chfn
A chfn segítségével változtatható meg a felhasználó teljes neve és az egyéb információi (/etc/passwd), amelyeket elsősorban a finger és a hozzá hasonló programok használnak fel. A linuxos finger négy adatot ír ki: teljes nevet, munkahelyi szoba- és telefonszámot, valamint az otthoni telefonszámot.
Az alábbi paraméterek használhatóak:
–f teljes név | felhasználó teljes neve | |
–r szobaszám |
felhasználó munkahelyi szobaszáma | |
–w telefonszám |
felhasználó munkahelyi telefonszáma | |
–h telefonszám |
felhasználó otthoni telefonszáma |
Paraméter megadása nélkül mindegyik információt újra bekéri. Csak ENTER bevitele esetén a már letárolt információ ([ ] jelek között láthatók) változatlanul megmarad. A kívánt eltárolt információ kitörlése a “semmi” paramétert kell átadni, azaz a szobaszám törlése : “-r ”” (-r paraméter után két darab egyszeres aposztróf egymás után)
A /etc/login.defs fájl segítségével szabályozhatjuk a program működését, többek között itt van beállítva a jelszókérés (CHFN_AUTH yes) és a teljes név megváltoztatásának tiltása (CHFN_RESTRICT rwh) normál felhasználó számára.
bash$ chfn Password: Changing the user information for jonci Enter the new value, or press ENTER for the default Full Name: Jónás Zsolt Room Number []: 101 Work Phone []: 123-4567 Home Phone []: 765-4321 bash$ bash$ chfn Password: Changing the user information for jonci Enter the new value, or press ENTER for the default Full Name: Room Number [101]: <ENTER> Work Phone [123-4567]: <ENTER> Home Phone [765-4321]: <ENTER> bash$ bash$ chfn -h '' Password: <jelszó megadása> bash$ bash$ chfn Password: Changing the user information for jonci Enter the new value, or press ENTER for the default Full Name: Room Number [101]: <ENTER> Work Phone [123-4567]: <ENTER> Home Phone []: <ENTER> bash$
Felhasználó alap héj programjának megváltoztatása – chsh
A chsh használatával változtathatjuk meg egy adott felhasználó alap héj programját. A program elindítása után az azonosítás sikeres megtörténte után bekéri az új héj programot az elérési útvonalával együtt. Ez utóbbi megadhatjuk közvetlenül a “-s shell” paraméterrel. A rendszergazdának joga van bármelyik felhasználó alap héj programját megváltoztatni, bármire a felhasználók viszont csak a /etc/shells fájlban felsoroltak közül választhatnak:
bash$ chsh Password: <jelszó megadása> Changing the login shell for jonci Enter the new value, or press ENTER for the default Login Shell [/bin/bash]: /bin/akarmi /bin/akarmi is an invalid shell. bash$ bash$ chsh -s /bin/sh Password: <jelszó megadása> bash$
Felhasználó eltávolítása más programmal – userdel
Az eltávolítás során a felhasználó törölve az összes csoportjából és a csoportazonosítója is megszüntetésre kerül, ha az nem rendszercsoport. Az “-r” kapcsoló megadásával kérhetjük a felhasználó home könyvtárának és levelesládájának eltávolítását, az “-f” kapcsoló használatával még akkor is, ha az nem a felhasználóé.
root@bash# userdel -rf jonci root@bash#
Felhasználó törlése egy másik programmal – deluser
A deluser programmal is törölhetjük a felhasználót. Az alábbi kapcsolókat használhatjuk:
––remove-home | felhasználó home könyvtárának és mailbox fájljának eltávolítása | |
––remove-all-files |
a felhasználó által birtokolt összes fájl törlése | |
––backup |
mentés készítése | |
––backup-to KÖNYVTÁR |
mentés könyvtárának megadása (alapesetben a jelenlegi könyvtár) | |
––system |
csak akkor törlődik a felhasználó ha system-user |
root@bash# deluser --remove-home jonci Looking for files to backup/remove... Removing files... Removing user `jonci'... done. root@bash#
Felhasználó törlése egy csoportból – deluser
Ehhez a művelethez is használhatjuk a deluser programot, amelynek menete a következő:
deluser <felhasználó> <csoport>
A jonci felhasználó eltávolítása az audio csoportból:
root@bash# deluser jonci audio Removing user jonci from group audio... done. root@bash#
Felhasználók szinkronizálása – pwconv, pwunconv
Abban az esetben, ha nem használjuk a már megismert felhasználókat kezelő programokat, hanem saját kezűleg akarjuk szerkeszteni a /etc/passwd és a /etc/shadow fájlokat, akkor sincs gond, mert ez az út sem annyira rögös 🙂 Ugyanis elég csak a passwd fájlt szerkeszteni, majd szinkronizáltatni a shadow fájllal.
A pwconv program feladata a shadow fájl (újra)készítése a passwd és a – valószínűleg – létező shadow fájl felhasználásával. A konvertálás során a shadow fájl azon sorai törlésre kerülnek, amelyek csak a shadow fájlban szerepelnek és a passwd fájlban nem. Amely sorok csak a passwd fájlban szerepelnek, hozzáadódnak a shadow fájlhoz. Azon soroknál, amelyek szerepelnek mindkét fájlban, azonban valamiért a jelszó továbbra is a passwd fájlban tárolódik, frissítésre kerülnek, azaz a jelszó átkerül a passwd fájlból a shadow fájlban, valamint a passwd fájlban a jelszó helyére egy “x” betű kerül, jelezvén, hogy a jelszót a továbbiakban a shadow fájl tartalmazza.
A pwunconv program feladata a jelszavak áthelyezése a shadow fájlból a passwd fájlba. Amelyik felhasználóhoz tartozik bejegyzés, jelszó a shadow fájlban, frissítésre kerül. A passwd fájlban a jelszó mező helyén levő “x” helyére kerül a shadow fájlban tárolt jelszó. A szinkronizálás után a shadow fájl törlődik.
Jelszófájlok ellenőrzése – pwck
Leellenőriztethetjük vele a /etc/passwd és a /etc/shadow fájl éppségét. A program ellenőrzni, hogy megfelelő számú mező van-e a sorokban, minden felhasználó egyedi azonosítószámmal rendelkezik-e, léteznek-e a home könyvtárak, valamint érvényes shell program van-e megadva minden felhasználónak.
Példaként lássunk egy esetet, létezik egy proba felhasználó, azonban nem hoztuk létre a home könyvtárát:
root@bash# pwck user proba: directory /home/proba does not exist pwck: no changes root@bash#
A program magától nem hozza létre a home könyvtárat csak figyelmeztet, hogy nem létezik. Azonban, ha a /etc/passwd és a /etc/shadow fájl között eltérés van, akkor futás közben rákérdez, hogy korrigálja-e az eltérést. Példaként a proba felhasználó bejegyzés törlésre került a passwd fájlból, csak a shadow fájlban maradt meg:
root@bash# pwck delete line `proba:x:12374:0:99999:7:::'? y pwck: the files have been updated root@bash#
A “-r” kapcsoló megadásával bekapcsolható a “csak-olvas” üzemmód, azaz bármilyen eltérést is talál a két fájl között, nem tesz lépéseket a kijavítására