Tartalomjegyzék

< Linux

Felhasználókezelés

Bevezetés

Ebben a részben felhasználókezeléssel foglalkozunk. Lesz néhány parancs, amely csak a Debian GNU/Linux rendszerben létezik, vagy mást csinál, mint a nem Debian alapú Linuxok. Ilyen az adduser vagy addgroup parancs.

Az adduser például, Debian GNU/Linuxon interaktív, ami bekéri a felhasználó jelszavát és más adatait, majd egy alapértelmezett könyvtárnévvel és parancsértelmezővel létrehozza a felhasználót.

Előfordulhatnak azonban olyan helyzetek, ahol az alapértelmezések helyett valami más szeretnénk beállítani, ilyenkor a minden Linuxon megtalálható useradd parancsot használjuk.

A felhasználók adatai

A felhasználók és csoportok adatai három helyen tárolódnak:

A passwd fájlban kerül tárolásra a felhasználó neve, könyvtára, a belépés után induló programja; itt találhatók még a GECOS vagy finger adatok.

A GECOS mezőben a következő tulajdonságokat tárolhatjuk:

A GECOS adatokat vesszővel szeparálva adjuk meg. A felhasználók ha engedélyezve számukra, a chfn paranccsal változtathatják meg ezeket az információkat.

A Bell laboratóriumban, a korai Unix rendszerek közül néhány GECOS gépeket használt a nyomtatáshoz és más szolgáltatásokhoz; így ezt az információt is hozzáadták a felhasználói információkhoz.

A GECOS lehet General Comprehensive Operating System (GCOS, [ˈdʒiːkoʊs], vagy eredetileg: GECOS, General Electric Comprehensive Operating Supervisor. Egy operációs rendszer család, amely 36-bit GE/Honeywell nagygépeken volt használatos. Az eredeti változatát a General Electric készítette 1962-ben. Ma is használják, GCOS 7 és GCOS 8 verziók az aktuálisak.

A finger adatokat régebben finger kiszolgáló programokkal közzé tették az Interneten. Ma is léteznek ilyen kiszolgáló programok: cfingerd, efingerd, fingerd. A kiszolgáló programokat ma már nem, de a kliens programot szoktuk még használni, ami egy gépen megmutatja a finger adatokat. Utóbbihoz a finger csomag telepítése szükséges, miután kapunk egy finger parancsot.

A GECOS, finger és „comment” előfordulása:

man adduser
man chfn
man useradd

A felhasználók kezelése

Felhasználót két paranccsal vehetünk fel:

A useradd egy natív ELF bináris, minden linuxos rendszeren jelen van. Az adduser egy Perl script, ami használja a useradd parancsot.

A useradd egy alacsony szintű eszköz a felhasználók felvételéhez, szemben az adduser script, amely egy magasabb szintű, interaktív felhasználókezelést tesz lehetővé.

Az adduser a useradd program mellett használja a chfn és passwd parancsokat is, a jelszó és GECOS adatok bekérésére.

Mivel az adduser így többféle információit is interaktívan kér be, ezért nem alkalmas parancsállományokban való használatra. Parancs állományokban való használatra a useradd parancs alkalmas.

Az adduser parancs működése Linux terjesztésenként változik. Debian és Debian alapú rendszereken bekéri a felhasználó jelszavát, és a gecos információkat.

adduser

Az adduser csak Debian alapú rendszereken létezik (az rpm alapú rendszereknél a useradd aliasa szokott lenni). Egy felhasználót interaktívan vehetünk fel vele. A következő példában egy kati nevű felhasználót veszünk fel:

adduser kati
Adding user `kati' ...
Adding new group `kati' (1002) ...
Adding new user `kati' (1002) with group `kati' ...
Creating home directory `/home/kati' ...
Copying files from `/etc/skel' ...
Adja meg az új UNIX jelszót: 
Írja be újra a UNIX jelszót: 
passwd: a jelszó sikeresen frissült
kati felhasználói információinak cseréje
Add meg az új értéket vagy üss ENTER-t az alapértelmezetthez
	TELJES Név []: Teszt Katalin
	Szobaszám []: 
	Munkahelyi telefon []: 
	Otthoni telefon []: 
	Egyéb []: 
Is the information correct? [Y/n] y

A program elsőként megáll a jelszóbekérésnél, majd az egyéb adatok bekérésénél, a végén rákérdez, hogy az adatok rendben vannak-e. Az y vagy egy Enter lenyomása után a felhasználó létrejön könyvtárával együtt. Sőt a /etc/skel könyvtár tartalmát is megkapta.

Így is használhatjuk:

adduser --home /home/kati --shell /bin/bash --gecos "Teszt Katalin" -m kati

Részletek adduser(8) kézikönyvben.

Az adduser beállításai:

/etc/adduser.conf

Egy felhasználó betehető az adduser paranccsal egy csoportba:

adduser kati info

A kati felhasználót az info csoportba tesszük; a felhasználónak már léteznie kell.

getent

Információt szolgáltat egy adatbázisból. Olyan adatbázisból mint passwd, group

getent passwd joska
joska:x:1001:1001:Nagy József,,,:/home/joska:/bin/bash

A informatika csoportról szeretnénk informálódni:

getent group informatika

useradd

A useradd parancs minden linuxos rendszer része. Ezzel is felhasználókat tudunk felvenni, de mindent kapcsolókkal kell megadnunk.

useradd -c "Teszt Katalin" -d /home/kati -g users -G info,human,rgazda -k /etc/skel -m -s /bin/bash kati
A useradd kapcsolói
-c megjegyzés
-d home könyvtár
-g elsődleges csoport
-G másodlagos csoport vagy csoportok
-m hozzuk létre a home könyvtárát
-s milyen shellt kapjon
-u UID mi legyen a uid-je
-k honnan másoljuk alapértelmezett fájlokat

chage

A chage parancs segítségével lekérdezhetjük, szabályozhatjuk egy-egy felhasználónak mikor jár le a jelszava.

A joska felhasználónak mikor jár le a jelszava?

chage -l joska
chage -l joska
Utolsó jelszóváltás				: dec 13, 2011
Jelszó lejár					: soha
Jelszó inaktív					: soha
Hozzáférés lejár				: soha
A jelszómódosítások közti legkevesebb na	: 0
A jelszómódosítások közti legtöbb nap		: 99999
A jelszó lejárata előtt figyelmeztetés napok száma	: 7

99999 nap körülbelül: ~273 év

A joska felhasználó jelszava járjon le 10 nap múlva

chage -M 10 joska

Mikor járjon le a hozzáférése?

chage -E "2009-05-31" joska

Inaktív napok után lezárás

Jóskának 10 inaktív nap után lezárjuk a jelszavát.

chage -I 10 joska
chage --inactive 10 joska

Alapértelmezés visszaállítása

Az alábbi kapcsolókat használjuk:

-m 0 A napok minimális száma amíg lejár a jelszó.
-M 99999 A jelszó maximum 99999 nap múlva jár le.
-I -1 (minusz egy) A jelszó sosem lesz inaktív. 
-E -1 (minusz egy) A fiók sosem jár le.
chage -m 0 -M 99999 -I -1 -E -1 joska

Figyelmeztetés

Figyelmeztetés mielőtt a jelszó lejár

chage -W 7 joska

Jelszó változtatás

A jelszavát nem változtathatja meg:

chage -m 10000 mari

Valójában 10 ezer napig nem változtathatja meg. De azért az elég messze van.

Ugyanezt a passwd paranccsal is beállíthatjuk.

Belépés után kötelező megváltoztatni:

chage -d 0 janos

addgroup

Az addgroup valójában egy link az adduser parancsra. Kézikönyve is megegyezik vele.

Csoport felvétele:

addgroup info

groupadd

Csoport felvétele

Ha egy felhasználót felvettünk egy csoportba, a csoport tagsága csak az újbóli belépés után lesz érvényes.

A groupadd parancs minden linuxos rendszerben megtalálható.

Van egy másik csoportok felvételére kitalált parancs, ez az addgroup. A groupadd parancstól csak annyiban különbözik, hogy tájékoztatást ír a képernyőre két sorban a felvétel sikeréről.

Például a „human” nevű csoport felvétele:

groupadd human

vagy:

addgroup human
Adding group `human' (GID 1003) ...
Kész.

gpasswd

A gpasswd parancs a /etc/group állomány adminisztrálására lett megalkotva.

A „kati” nevű felhasználó felvétele a „human” csoportba:

gpasswd -a kati human

A „kati” nevű felhasználó törlése a „human” csoportból:

gpasswd -d kati human

usermod

Teljesnév beállítása:

usermod -c "Nagy János" janos

A mari felhasználó felvétele a human csoportba:

usermod -a -G human mari

A -a hatására hozzáfűzés történik, vagyis a többi csoport megmarad. Ha elhagyjuk a -a kapcsolót, akkor a többi csoport törlődik.

usermod -G human,gazdasag,rgazda mari

A joska felhasználó kitiltása:

usermod --lock --expiredate 1970-01-01 joska
usermod -L -e 1970-01-01 joska

Az expiredate értéke bármi lehet ami régebbi mint az aktuális dátum.

A --lock a jelszó használatot tiltja. Azonban nem tiltja a kulcs alapú azonosítást. Ezért vettük vissza lejárati dátumot.

Magunk is letilthatjuk a felhasználó jelszavas bejelentkezését ha egy „!” („felkiáltó jelet”) teszek a jelszó elé:

joska:!$1$R8Z4PoEr$OSi234nDisere2ERda83dD82DSIK8ls:15407:0:99999:7:::  

A felhasználó számára új bejelentkezési könyvtárat állítunk be:

usermod -d /home/info/joska joska
usermod --home /home/info/joska joska
usermod --home /home/tanulok/15z/janos janos

Alap csoport beállítása:

usermod -g info mari

Shell beállítása:

usermod -s /bin/ksh mari
usermod --shell /bin/ksh kati

Felhasználó kitiltása:

usermod -L mari
usermod --lock mari

Felhasználó engedése:

usermod -U mari
usermod --unlock mari

Felhasználó kitiltása a másként:

usermod -s /usr/sbin/nologin mari
usermod -s /bin/false mari

id

Ha egy felhasználó belépett saját csoporttagságairól az id parancs segítségével tájékozódhat.

A parancs önmagában kiadva is hatásos:

id

De lássuk paraméterezve.

Az aktuális felhasználó milyen csoportokban van benne:

id -nG

Lehetséges kimenet:

$ id -nG
mari tanulok 15z

Az adott felhasználó milyen csoportokban van benne:

id -nG mari

Lehetséges kimenet:

$ id -nG mari
mari tanulok 15z

groups

Az aktuális felhasználó, milyen csoportokban van benne:

groups

Megadott felhasználó milyen csoportokban van benne:

groups mari

members

apt install members

Adott csoportban, milyen felhasználók vannak:

members informatika

Lehetséges kimenet:

mari bela dani lali

vipw

A passwd, illetve a shadow fájl szerkesztése. Tulajdonképpen a vi szövegszerkesztőben nyitja meg a /etc/passwd fájl tartalmát.

Az EDITOR környezeti változóval más szerkesztő is megadható. Például az mcedit használata:

export EDITOR=mcedit; vipw

vigr

A csoportfájl szerkesztése.

Mint a vipw, csak a csoportfájlt szerkesztjük.

A shadow fájl

A régi unixos rendszerekben a jelszavak a passwd fájlban voltak. Ebben a fájlban vannak tárolva a felhasználók egyéb adatai, mint teljes név, szoba, stb. Ezek nyilvános adatok, így mindenki számára olvashatók. A Linuxokon felmerült az igény a jelszavak külön fájlban való elhelyezésére. Így került az /etc/shadow állományba. Az átlagos felhasználó ezeket nem tudja olvasni.

A /etc/shadow fájl tartalmazza a kódolt jelszót. Például

joska:$6$wR8ZPo/p$.XKKmA9YCSrK5UuA0BV03mUrVyqT7OSl24n4DX5dYDNolZDhD.YfE0Fn.PVzaDDGrxMwK6x4jZVTz9/0R8jQs1:15407:0:99999:7:::

  1. Felhasználónév
  2. Jelszó
  3. Utolsó jelszómódosítás és 1970 január 01-óta eltelt napok száma
  4. minimum ennyi napnak kell eltelni az újabb jelszómódosításig
  5. maximum ennyi ideig érvényes a jelszó
  6. Figyelmeztetés ennyi nappal a jelszó lejárat előtt
  7. Ha lejár a jelszó, ennyi nap múlva nem léphet be
  8. 1970 január 01 után ennyi nap letelte után lejár a jelszó

Jelszó generálás

Néha szükségünk lehet arra, hogy új rendszerünkbe a felhasználóknak jelszót generáljunk.

Egyik erre alkalmas program a makepasswd. Használatához telepíteni kell a makepasswd csomagot:

apt-get install makepasswd

A makepasswd alapértelmezetten 8 és 10 karakter közötti jelszót generál. Kapcsolóval szabályozhatjuk hány karakteres legyen. Például nyolc karakteres:

makepasswd --chars 8

Ha több jelszót szeretnénk generálni, a count kapcsolóval megtehetjük.

makepasswd --chars 18 --count 10

A jelszó kódolt formájának generálása az Apró debianos tippek oldalon található.

Másik jelszó generáló program:

apt-get install passwdqc

Jelszó generálása:

pwqgen

Újabb:

apt install whois
/usr/bin/mkpasswd

Titkosított jelszó generálás

Bekérjük a jelszót:

mkpasswd --method=SHA-512

Elérhető metódusok:

mkpasswd -m help
mkpasswd --hethod=help

Csővezetéken keresztül, md5 algoritmussal:

echo titok | mkpasswd --method=md5 --stdin
$1$nA/Ib1YG$m3pY9ykzz7wkMKM4DcIh5.

Megadhatjuk a sót is:

echo titok | mkpasswd --salt sosososo --method=md5 --stdin
$1$sosososo$KfdFXbUsLvw5V32hcacOq0

A parancs bekéri a jelszót, majd kiírja a titkosított jelszót.

Felhasználó felvétele:

useradd -m -s /bin/bash -p $(mkpasswd --method=SHA-512 --stdin) mari
useradd -m \
   -s /bin/bash \
   -p $(echo titok | mkpasswd --method=SHA-512 --stdin) \
   mari

Lehet az openssl paranccsal is:

openssl passwd -1

SHA-512:

openssl passwd -6
echo titok | openssl passwd -6 -stdin

Só megadása:

echo titok | openssl passwd -6 -stdin -salt so

Felhasználó törlése

userdel

Töröljük a felhasználót:

userdel joska

Töröljük a felhasználót és a könyvtára tartalmát:

userdel -r joska

deluser

deluser --remove-home
deluser --remove-all-files
deluser --backup
deluser --backup-to

Az /etc/deluser.conf segítségével érdemes szabályozni. Részletekért nézzük meg a deluser.conf(5) kézikönyvet.

--backup

Minden állomány backupja, ami a home és a mailspool könyvtárban van. Az eredmény:

/$user.tar.bz2 vagy /$user.tar.gz.
--backup-to

A backup fájl helyét is megadhatjuk

--remove-home

A felhasznál mailspool és home könyvtárának törlése. Ha a --backup meg van adva, akkor backup után a fájlok törlésre kerülnek.

--remove-all-files

Minden fájl törlése a rendszerben, amelynek a felhasználó a birtokosa. Ha a --backup meg van adva, a törlés a backup után történik.

chfn

A finger információ (teljes név, iroda, telefon, stb) módosítása.

# chfn -f János janos
# chfn --full-name "Nagy János" janos
$ getent passwd janos

Kapcsolók:

A gecos információk bekérhetők interaktív módon a következő paranccsal:

chfn janos
root@iskolazo:~# chfn janos
janos felhasználói információinak cseréje
Add meg az új értéket vagy üss ENTER-t az alapértelmezetthez
	TELJES Név [Nagy János]: Peres János
	Szobaszám []: 304
	Munkahelyi telefon []: 1154
	Otthoni telefon []: 
	Egyéb []: 
chfn: name with non-ASCII characters: 'Peres János'

A felhasználó saját maga is megváltoztathatja az engedélyezett értékeket.

Hogy a felhasználó mit változtathat meg a chfn paranccsal a /etc/login.defs fájlban szabályozhatjuk.

CHFN_RESTRICT      frwh

Ha nincs definiálva semmit nem változtathatunk meg. A yes = „rwh”, a no = „frwh”.

Ha nem adunk meg paramétert, akkor interaktív módban indul a chfn, és bekéri az engedélyezett értékeket.

chfn

finger

apt install finger
finger joska

passwd

Használat például:

passwd  \
    -x <MAX_D> \
    -w <WARN_D> \
    -i <INACTIVE_D>
   felhasználó

A passwd parancs a jelszó beállítására használható.

# passwd

A rendszergazda mások jelszavát is beállíthatja:

# passwd janos

A felhasználó kizárása:

# passwd -l janos

A felhasználó újból engedése:

# passwd -u janos

Jelszó lejárat előtt hány nappal kapjon a felhasználó figyelmeztetést:

# passwd -w 7 janos

A felhasználó jelszavának lejárata előtt figyelmeztetés 7 nappal.

A felhasználó 7 napig nem változtathatja meg a jelszót:

# passwd -n 7

Jelszóbeállítások lekérdezése:

# passwd -S
# passwd -S janos

A felhasználó jelszavának azonnali „lejáratása”:

# passwd -e janos

Adott felhasználó jelszavának törlése:

# passwd -d janos

További kapcsolók:

# passwd -h

A jelszót nem lehet lecserélni adott ideig, szintaktika:

Példa:

# passwd -n 10000 janos

login beállítások

Az /etc/login.defs könyvtárban a felhasználók számára beállítható néhány adottság. Ilyen a felhasználók levelei hol tárolódjanak.

MAIL_DIR /var/mail

A sikertelen bejelentkezések naplózása a /var/log/faillog fájlba.

FAILLOG_ENAB yes

Az ismeretlen felhasználónevek naplózása sikertelen bejelentkezés esetén.

LOG_UNKFAIL_ENAB no

A sikeres bejelentkezések naplózása:

LOG_OK_LOGINS no

A su tevékenységek naplózása a syslog naplóba:

SYSLOG_SU_ENAB yes
SYSLOG_SG_ENAB yes

A su aktívitás külön naplózása:

SULOG_FILE /var/log/sulog

Alapértelmezett útvonal a rendszergazda számára:

ENV_SUPATH

Alapértelmezett útvonal a felhasználók számára:

ENV_PATH

Jelszavak kontrollálása. Alapértelmezésként, mikor jár le, mikor változtathatja meg, mikor legyen figyelmeztetés.

PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_WARN_AGE 7

Felhasználók minimális azonosítója useradd esetén:

UID_MIN 1000
UID_MAX 60000

Minimális csoportazonosítók:

GID_MIN 1000
GID_MAX 60000

A bejelentkezés visszautasítása ennyi sikertelen próbálkozás után:

LOGIN_RETRIES 5

A maximális sikertelen bejelentkezések után ennyi ideig tiltva:

LOGIN_TIMEOUT 60

További lehetőségek a /etc/login.defs állományban is találhatók, vagy nézzük meg az idevonatkozó kézikönyvet:

man login.defs

A felhasználók a chfn paranccsal milyen értékeket cserélhetnek:

CHFN_RESTRICT rwh

Ha a felhasználó nem tud belépni a könyvtárába, akkor legyen egy alapértelmezett könyvtár:

DEFAULT_HOME yes

A felhasználó törlésekor a következő parancs fusson le:

USERDEL_CMD /usr/local/bin/sajtScript.sh

Felhasználónévvel azonos csoport létrehozása useradd, törlése userdel esetén:

USERGROUPS_ENAB yes

Az aktuális shell előtt milyen parancs fusson le:

FAKE_SHELL /bin/fakeshell

Azonosítás algoritmusa:

ENCRYPT_METHOD SHA512

Felhasználócsere

A felhasználót a su paranccsal cserélhetünk. Például mari felhasználóvá válhatunk:

su mari

Ha kötőjelet is használok, akkor a mari felhasználó teljes környezetét kapom:

su - mari

Ehhez a művelethez persze tudni kell a mari felhasználó jelszavát, vagy rendszergazdaként kell végrehajtani.

Egy csoportot is felvehetünk a sg paranccsal. Például az info csoport felvétele:

sg info

A skel könyvtár

Az új felhasználók számára létrejövő állományok és könyvtárak a /etc/skel könyvtárban vannak:

/etc/skel

Hozzuk létre a skel könyvtárban, azokat a fájlokat és könyvtárakat, amelyeket szeretnénk látni minden új felhasználó könyvtárába.

A skel könyvtárba ehhez hasonló könyvtárakat jöhetnek jól:

/
`-etc/
  `-skel/
     |-ceges/
     |-magan/
     `-szabalyok.txt

Ezek után a felhasználóktól megköveteljük, hogy minden céges állományt és könyvtárat a ceges könyvtárban hozzanak létre. A magán jellegű fájlokat pedig a magan könyvtáron belül tároljanak. A szabalyok.txt állománybán leírjuk a szabályokat.

Belépések figyelése

Egy felhasználó mikor volt utoljára belépve:

last janos

Mikor lépett be utoljára és egyéb információk:

finger janos

Függelék

Parancsok gyűjteménye

Felhasználó felvétele

useradd -m mari
passwd mari
chfn mari

Felhasználó felvétele jelszó megadással:

useradd -d /home/mernokok/gaz/mari -s /bin/bash -G mernokok,gaz -m pali \
--password=$(perl -e 'print crypt("titok","so")')

A sóból csak 2 karakter lesz figyelembe véve.

perl -e 'print crypt("titok","so")'
soGxgYrIU3kw6
useradd -d /home/mernokok/gaz/mari -s /bin/bash -G mernokok,gaz -m pali \
--password=soGxgYrIU3kw6

A jelszó legyártáshoz ez is megfelelő:

openssl passwd -1 titok

SHA512-s:

openssl passwd -6 titok

Csoport tagjainak törlése

#!/bin/bash

# Függőség: 
# apt install members

tomb=($(members csoport1))
for i in ${tomb[*]}
do
        echo $i
done

Csoport felvétele

Beállítottunk egy új csoportot, de nem szeretnénk kilépni, az érvényesítéshez.

Vegyük fel janos felhasználóként az új csoportot:

exec su -l $USER

Ez nem lép ki a terminálból.

Másik két lehetőség, de itt új shell jön létre.

newgrp docker

Vagy:

su - $USER

Forrás