Modul 3 · 3.1
Felhasználók, csoportok és fájljogosultságok
Modul 3: Felhasználók, jogosultságok és sudo · Olvasási idő: 12 perc
Tanulási cél: A lecke végére Ön képes lesz felhasználókat és csoportokat létrehozni és megtekinteni, egy fájl vagy mappa jogosultságait kiolvasni a ls -l kimenetéből, és azokat a chmod és a chown paranccsal helyesen beállítani anélkül, hogy mindent szélesre tárna.
Kulcsfogalmak: root (UID 0), hagyományos felhasználó, rendszerfelhasználó, /etc/passwd, /etc/shadow, csoport, adduser, id, rwx, tulajdonos, csoport, egyéb, oktális (644, 755, 600), chmod, chown, umask, setuid, 777
Mindenki egy szám
A Linuxot a kezdetektől úgy tervezték, hogy egy gépen több felhasználó dolgozhasson. Minden futó folyamat egy felhasználó nevében fut, és minden fájlnak van tulajdonosa. A rendszer számára a felhasználó elsősorban egy szám, az UID:
- A root UID-ja 0. A root mindent megtehet: bármely fájlt olvashat és módosíthat, bármely szolgáltatást leállíthat, bármely felhasználót létrehozhat. Nincs „Biztos benne?” kérdés.
- A hagyományos felhasználók, például
anna, Debianon és Ubuntun 1000-től kezdődő UID-t kapnak. A saját saját könyvtárukba írhatnak, ezen túl keveset tehetnek. - A rendszerfelhasználóknak alacsony a számuk, és általában nincs jelszavuk és shelljük. A szolgáltatások ilyen felhasználó alatt futnak: az nginx a
www-data, a PostgreSQL apostgresalatt. Ha egy ilyen szolgáltatást feltörnek, a behatoló csak ennek a felhasználónak a jogosultságait kapja meg, a rootét nem.
Hogy Ön kicsoda, azt a id paranccsal láthatja:
anna@web1:~$ id
uid=1000(anna) gid=1000(anna) groups=1000(anna),27(sudo),100(users)Anna UID-ja 1000, van saját anna csoportja, és a sudo és users csoportnak is tagja.
Hol találhatók a felhasználók
A felhasználók listája a /etc/passwd fájlban van, felhasználónként egy sorban:
anna@web1:~$ grep -E '^(root|www-data|anna):' /etc/passwd
root:x:0:0:root:/root:/bin/bash
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
anna:x:1000:1000:Anna,,,:/home/anna:/bin/bashA kettősponttal elválasztott mezők: név, x (a jelszó máshol található), UID, elsődleges csoport, leírás, saját könyvtár, shell. A www-data esetén shellként /usr/sbin/nologin szerepel: bejelentkezni nem lehet.
Maguk a jelszavak titkosítva (hash formájában) a /etc/shadow fájlban vannak. Ezt a fájlt csak a root olvashatja. Ha a jelszómező elején ! vagy * áll, az azt jelenti: jelszóval nem lehet bejelentkezni. Így van alapértelmezés szerint zárolva a root Ubuntun, és Debianon is, ha a telepítéskor nem adott meg root-jelszót.
Felhasználók és csoportok létrehozása
Debianon és Ubuntun a barátságos adduser parancsot használja:
root@web1:~# adduser anna
info: Adding user `anna' ...
info: Adding new group `anna' (1000) ...
info: Adding new user `anna' (1000) with group `anna (1000)' ...
info: Creating home directory `/home/anna' ...
info: Copying files from `/etc/skel' ...
New password:
Retype new password:
...Az adduser létrehozza a felhasználót, egy azonos nevű saját csoportot és egy saját könyvtárat, majd jelszót kér. Létezik az alacsonyabb szintű useradd is (AlmaLinuxon és Rocky Linuxon ez a szokásos parancs), de opciók nélkül kevesebbet végez: nem állít be jelszót, és egyes rendszereken saját könyvtárat sem hoz létre.
A csoport arra szolgál, hogy egyszerre több felhasználónak adjunk jogosultságokat. Felhasználó hozzáadása egy csoporthoz:
root@web1:~# adduser anna www-data
root@web1:~# usermod -aG www-data anna # ugyanez, mindenhol működikFigyeljen a -a kapcsolóra a usermod parancsnál: -a nélkül a felhasználó összes kiegészítő csoportját erre az egyre cseréli. Az új csoporttagság csak újbóli bejelentkezés után lép életbe.
Egy fiók letiltása törlés nélkül (például egy volt munkatársé):
root@web1:~# usermod -L -e 1 janA -L zárolja a jelszót, a -e 1 lejárttá teszi a fiókot. Figyelem: a zárolt jelszó nem mindig akadályozza meg az SSH-kulccsal való belépést. Ezért távolítsa el a kulcsokat is a /home/jan/.ssh/authorized_keys fájlból (2.3. lecke); a lejárt fiókot (-e 1) viszont az sshd elutasítja.
Jogosultságok olvasása
anna@web1:~$ ls -l /var/www/example.com
total 12
-rw-r--r-- 1 anna www-data 1520 Nov 9 10:12 index.html
-rw-r----- 1 anna www-data 412 Nov 9 10:14 config.php
drwxr-xr-x 2 anna www-data 4096 Nov 9 10:15 images
drwxrwxr-x 2 www-data www-data 4096 Nov 9 10:20 uploadsAz első, tíz karakterből álló blokk mindennek a kulcsa:
- 1. karakter: a típus. A
-hagyományos fájl, admappa (könyvtár), azlszimbolikus hivatkozás (symlink). - 2-4. karakter: mit tehet a tulajdonos.
- 5-7. karakter: mit tehet a csoport.
- 8-10. karakter: mit tehetnek az egyebek (mindenki más).
Ezután következik a hivatkozások száma, a tulajdonos, a csoport, a méret és a dátum.
A betűk jelentése egy fájl esetén:
| Betű | Jelentés fájl esetén |
|---|---|
r | olvasás |
w | módosítás |
x | futtatás programként vagy szkriptként |
Egy mappa esetén pedig kicsit mást jelentenek:
| Betű | Jelentés mappa esetén |
|---|---|
r | a mappában lévő fájlok nevének lekérdezése |
w | fájlok létrehozása, átnevezése és törlése a mappában |
x | belépés a mappába és a benne lévő fájlok megnyitása |
Az utóbbi sokakat meglep. Ha egy mappán nincs x, nem fér hozzá a benne lévő fájlokhoz, még akkor sem, ha azok maguk olvashatók. Akinek pedig w joga van egy mappán, az törölhet benne fájlokat, akkor is, ha azok másé.
A példában: a index.html fájlt mindenki olvashatja; a config.php fájlt (amely az adatbázis jelszavát tartalmazza) Anna olvashatja és módosíthatja, a www-data csoport (vagyis a webszerver) csak olvashatja, a többiek semmit sem tehetnek vele. A uploads mappába a webszerver írhat, mert oda kerülnek a látogatók feltöltései.
Jogosultságok számként
A jogosultságokat gyakran három számjeggyel írják le, ez az oktális szám. Minden betűnek van értéke: r = 4, w = 2, x = 1. Csoportonként adja össze őket:
| Jogosultságok | Szám | Használat |
|---|---|---|
rw-r--r-- | 644 | hagyományos fájl, amelyet mindenki olvashat |
rw-r----- | 640 | fájl a tulajdonos és a csoport számára, például jelszót tartalmazó konfiguráció |
rw------- | 600 | titkos fájl, például a authorized_keys vagy egy privát kulcs |
rwxr-xr-x | 755 | mappa vagy program, amelyet mindenki használhat |
rwx------ | 700 | privát mappa, például a ~/.ssh |
Jogosultságok módosítása: chmod és chown
anna@web1:~$ chmod 640 /var/www/example.com/config.php
anna@web1:~$ chmod g+w /var/www/example.com/uploads
root@web1:~# chown anna:www-data /var/www/example.com/config.phpA chmod a jogosultságokat módosítja, számmal vagy betűkkel (u, g, o a tulajdonos, a csoport és az egyebek számára; + vagy - és a betű). A chown eigenaar:groep a tulajdonost és a csoportot módosítja; ezt csak a root teheti meg. A -R kapcsolóval mindkettő egy teljes mappán dolgozik, és itt sokszor hiba csúszik be: a chmod -R 644 egy mappán az összes almappát használhatatlanná teszi, mert a mappáknak szükségük van az x jogra. Egy teljes könyvtárfához inkább a find parancsot használja:
root@web1:~# find /var/www/example.com -type d -exec chmod 755 {} +
root@web1:~# find /var/www/example.com -type f -exec chmod 644 {} +Soha ne 777
„Nem működött, ezért beállítottam rá a 777-et.” A 777 azt jelenti: a szerveren mindenki olvashatja, módosíthatja és futtathatja. Ha egyszer akár egyetlen szolgáltatás vagy webhely is kompromittálódik a szerveren, a behatoló mindenhová írhat, ahol 777 van beállítva, a PHP-fájlokat is beleértve. A valódi probléma szinte mindig a tulajdonos vagy a csoport: a csoporton keresztül adja meg a webszervernek pontosan azt a jogot, amelyre szüksége van, és csak azon a mappán, ahol szükséges.
Alapértelmezett jogosultságok és speciális bitek
Az új fájlok a jogosultságaikat az umask alapján kapják. A szokásos 022 umaskkal az új fájlok 644-es, az új mappák 755-ös jogosultságot kapnak. Az umaskot a umask paranccsal tekintheti meg.
Néha x helyett s látható, például a /usr/bin/passwd esetén (-rwsr-xr-x). Ez a setuid bit: a program a tulajdonos (root) jogosultságaival fut, akkor is, ha egy hagyományos felhasználó indítja. Néhány rendszerprogramhoz erre szükség van, de soha ne állítsa be saját maga egy szkriptre. Egy váratlan setuid-fájl a behatolás ismert jele; a find / -perm -4000 -type f 2>/dev/null paranccsal mindet megtekintheti.
AlmaLinuxon és Rocky Linuxon
Ott a adduser csak egy másik név a useradd parancsra; használja a useradd -m anna, majd a passwd anna parancsot. Csoportot a usermod -aG paranccsal adhat hozzá. A SELinux egy további réteget ad az ebben a leckében tárgyalt jogosultságok mellé: egy helyes jogosultságú fájlhoz is megtagadhatja a hozzáférést, ha rossz SELinux-címke van rajta (a ls -Z megmutatja).
Összefoglalás
- Minden felhasználónak van UID-ja; a root (0) mindent megtehet, a szolgáltatások saját, shell nélküli rendszerfelhasználók alatt futnak.
- A felhasználók a
/etc/passwd, a jelszóhashek a/etc/shadowfájlban vannak. Felhasználót aadduser, csoporttagságot ausermod -aGparanccsal hozhat létre. - A
ls -lmegmutatja a típust, a tulajdonos, a csoport és az egyebek jogosultságait, majd a tulajdonost és a csoportot. Mappa esetén azxbelépést, awfájlok létrehozását és törlését jelenti. - Szokásos számok: 644 és 755 a nyilvános, 640 a titkokat tartalmazó konfiguráció, 600 és 700 a privát elemek számára. Soha ne 777.
- Egy teljes könyvtárfa jogosultságainak beállításához használja a
findparancsot; figyeljen a setuid-fájlokra.
Kvíz
Feladat
Z3.1. feladat: Jogosultságok olvasása. Nyissa meg a rechten-1.txt példafájlt: ebben három felhasználó id kimenete és egy webmappa ls -l kimenete található. Kérdésenként válaszolja meg, ki mit tehet (például: „módosíthatja-e a webszerver a config.php fájlt?”, „melyik fájlnak túl tágak a jogosultságai?”, „melyik szám tartozik ehhez: .env?”). A program összeveti a válaszait a rögzített megoldókulccsal, és kérdésenként elmagyarázza, miért.
További olvasnivaló
Az ezekben a cikkekben leírt lépések a WebOké tárhelycsomagjaira és VPS-eire vonatkoznak; más szolgáltatóknál hasonlóan működik.
- Forbidden (403): Önnek nincs jogosultsága a / eléréséhez ezen a szerveren
- Bejelentkezés a VPS-re SSH-val (és SSH-kulcs létrehozása)
- A WordPress-tanfolyamban: 7.4. lecke „A webhely megerősítése: jogosultságok, fejlécek és biztonsági bővítmények”
- Az adduser Debian-kézikönyve: https://manpages.debian.org/trixie/adduser/adduser.8.en.html
- A chmod Debian-kézikönyve: https://manpages.debian.org/trixie/coreutils/chmod.1.en.html
