Tartalomjegyzék
Linuxos jogok
- Szerző: Sallai András
- Copyright © 2011, Sallai András
- Szerkesztve: 2011, 2015
- Licenc: CC BY-SA 4.0
- Web: https://szit.hu
Bevezetés
A DAC szó a Discretionary Access Control szavakból alkotott betűszó, jelentése röviden „Kizárólagos hozzáférés-vezérlés”. Ez megengedi az azonosított felhasználóknak az objektumokhoz való hozzáférést azok tulajdonságai alapján. A hozzáférés csak a tulajdonosra, illetve csak a csoportra állítható be.
Ismert még a MAC vagy Mandatory Access Control, vagy Rendelkező hozzáférés-vezérlés. Az objektumok számára hozzáférési szabályokat hozunk létre, amely minden felhasználóra (még a rootra is) érvényesek.
A harmadik a Role-based Accesss Control vagy RBAC. Szerep alapú hozzáférés-vezérlés. A rendszergazda különböző szerepeket hoz létre. Az egyes objektumokhoz az adott szerepben lehet hozzáférni, az adott jogokkal.
Mi most a DAC alapú jogosultságrendszert tanulmányozzuk. Ezeket a unixos alapjogoknak is szokás nevezni.
A linuxos jogokról
Alapvetően háromféle jogot különböztetünk meg:
- olvasás
- írás
- végrehajtás
| olvasás | Read | r |
| írás | Write | w |
| végrehajtás | eXecute | x |
A jogok háromféle felhasználónak adhatók:
- tulajdonos
- csoportba tartozó felhasználó
- mindenki más (aki az előző kettőben nincs benne)
A chmod paranccsal állítgatjuk a jogokat, ahol néha hivatkozunk a tulajdonosokra, csoportokra, illetve mindenki másra, az alábbi táblázat alapján:
| tulajdonos | User | u |
| csoport | Group | g |
| mások | Other | o |
| mindenki | All | a |
Van egy negyedik hivatkozás, amely „mindenki” nevet viseli. Ez tartalmazza mind az előző hármat együtt.
A mindenki mind a három fajta felhasználót jelenti, amelyet például a chmod paranccsal használhatunk.
Mind a háromfajta felhasználónak állítható a olvasási, írási és végrehajtási jog. A következő táblázat amely az „ls -l” kimenetéből származhat jól szemlélteti ezt:
Az ls -l kiemente:
-rw-r--r-- 1 joska joska 3184 dec 13 18.37 .bashrc
Táblázatban a jog rész:
| típus | tulajdonos jogai | csoport jogai | mindenki más jogai |
| - | rw- | r-- | r-- |
A típus a következő lehet:
| Tartalom | Jelentés |
|---|---|
| - | Szimpla fájl |
| d | Könyvtár |
| D | Solaris kapu (Folyamatok közötti kommunikáció) |
| c | Karakteres eszköz (tty vagy nyomtató) |
| b | Blokkeszköz (rendszerint lemez vagy CD-ROM) |
| l | Szimbolikus link (BSD vagy SVR4) |
| s | Socket (BSD vagy SVR4) |
| = vagy p | FIFO (System V, Linux) |
A Solaris kapu csak Sun Solaris rendszeren fordul elő.
chown
A parancsot egy állomány vagy egy könyvtár tulajdonos illetve csoport beállítása használhatjuk.
chown joska.joska fajlnev
chown joska:joska fajlnev
A csoport felhasználónevét nem kötelező megismételni:
chown joska: fajlnev
vagy:
chown joska. fajlnev
chmod
A chmod parancs a jogok beállítására használható.
Két módon adhatunk/vehetünk el jogokat. Az egyik számokkal, a másik betűkkel.
Betűkkel először megadjuk kinek adunk vagy kitől veszünk el. Ez után +/- attól függően, hogy adunk vagy elveszünk. Majd végül mit adunk vagy mit veszünk el. A felhasználófajta halmozható, vagyis egymás után írhato például: ug, vagy uo vagy ugo. Ez utóbbi persze egyenlő azzal ha csak „a”-t adok meg. A jogok szintén halmozhatók.
A jogokat az alábbi táblázat alapján rakhatjuk össze:
| Kinek/kitől | Művelet | Mit | ||
|---|---|---|---|---|
| u | Saját(user) | + | r | olvasás |
| g | csoport(group) | - | w | írás |
| o | más(other) | x | végrehajtás | |
| a | mindenki(all) | |||
Nézzünk néhány példát. Szeretnénk a felhasználónak írási jogot adni az erdo.txt fájlra.
chmod u+w erdo.txt
Most adjunk a csoportnak és a tulajdonosnak minden jogot:
chmod ug+rwx erdo.txt
Itt a példában halmoztuk a felhasználók fajtáját és a jogokat is.
A jogok megadása számokkal
A jogok kifejezhető egy oktális számmal is. A chmod parancs ezeket képes használni. A következő táblázat megmutatja az egyes számok jelentését.
| 0 | - | - | - | nincs jogosultság |
| 1 | - | - | x | végrehajtási jog |
| 2 | - | w | - | írási jog |
| 4 | r | - | - | olvasási jog |
A fenti táblázat alapján a jogok keverése mellett a következő jogok adhatók:
| 0 | - | - | - | nincs jogosultság |
| 1 | - | - | x | végrehajtási jog |
| 2 | - | w | - | írás jog |
| 3 | - | w | x | írás, végrehajtás jog |
| 4 | r | - | - | olvasási jog |
| 5 | r | - | x | olvasás, végrehajtás jog |
| 6 | r | x | - | olvasás, írás jog |
| 7 | r | w | x | minden jog |
Ha számokkal adjuk meg a jogokat, akkor tulajdonosnak, a csoportnak és mindenki másnak együtt kell megadni a jogokat. Megtehetjük, hogy csak egy számot adunk meg, ekkor a mindenki más jogait állítjuk be, és elvesszük a tulajdonostól, illetve a csoporttól a jogokat. Az alábbi példában mindenki másnak megadjuk az olvasási, írási és futtatási jogokat.
chmod 7 erdo.txt
Futtatás után az ls -l erdo.txt kimenete:
-------rwx 1 mari info 28 márc 8 21.05 erdo.txt
Ebben az esetben erdo.txt állományt a mari nevű felhasználó és az info csoport nem olvashatja, nem írhatja, nem futtathatja, mindenki más igen.
A következő példában a csoportnak olvasási és írási jogot adunk, mindenki másnak olvasási, írási és végrehajtási jogot.
chmod 67 erdo.txt
Az ls -l erdo.txt kimenete:
----rw-rwx 1 mari info 28 márc 8 21.05 a.txt
Adjunk mindenkinek olvasási és írási jogot:
chmod 666 erdo.txt
Most adjunk a csoportnak és a tulajdonosnak minden jogot, mindenki mástól vegyük el:
chmod 770 erdo.txt
Itt a példában halmoztuk a felhasználók fajtáját és a jogokat is.
A stat paranccsal lekérdezhetők a számok:
stat -c '%A %a %n' *
stat -c '%A %a %n' adat.txt
A fájlok és a könyvtárak jogai
Fájlok jogai
| Tartalom | Jog | Jelentés |
|---|---|---|
| r | Olvasás | Olvasási jog: Megnyithat egy fájlt az open() rendszerhívással a read()-al pedig olvashatja. |
| w | Írás | Írási jog: Új fájlt hozhatsz létre, vagy egy meglévőt módosíthatsz. Használhatod a write(), truncate( ) vagy ftruncate( ) rendszerhívást |
| x | Futtatás | Futtatási jog: Futtathatod a fájl útvonalának begépelésével, vagy az exec() rendszerhívással. Hogy hogyan fut a program az állomány első két byte függvénye. A #! például futtatható scriptre utal. |
Könyvtárak jogai
| Tartalom | Jog | Jelentés |
|---|---|---|
| r | Olvasás | Használhatod az opendir( ) és az readdir( ) függvényeket (vagy az ls parancs) megnézni milyen fájlok vannak a könyvtárban. |
| w | Írás | Létrehozás, átnevezés, mozgatás a könyvtárban |
| x | Futtatás | Fájl és alkönyvtár tartalma megtekinthető |
Az umask
Az umask határozza meg, hogy egy fájl vagy egy könyvtár milyen jogokkal jöjjön létre alapértelmezetten.
Az umask kétéfle módon határozható meg:
- szimbolikus értékekkel
- oktális értékekkel
Az alapértelmezett érték 022. Az érték központilag felülírható az /etc/profile állományban is. A felhasználók ezt az értéket felülírhatják saját .profile vagy .bashrc állományukban.
Ha az alapértelmezett beállítást szeretnénk megváltoztatni, írjuk a fenti állomány egyikének végére:
umask 002
A beállított érték az újabb bejelentkezés esetén lesz érvényes.
Minden fájlnak van egy alapértelmezett létrehozási joga, ugyanígy a könyvtáraknak is:
| fájlok | 666 |
| könyvtárak | 777 |
Az umask segítségével ebből az alapértelmezésből veszünk még el.
Néhány lehetőség röviden:
- 022 – Lehetővé teszi fájlok egyéni írását, amiket mások olvashatnak.
- 077 – Mindenki csak a saját állományait látja.
- 002 – Fájlokat azonos csoportban lévők írhatják.
- Csoporton kívül csak olvasási jog.
- 007 – aki nem csoport tag teljesen kizárva
Maszk számítás
A használható oktális értékeket a következő táblázat mutatja:
| oktális szám | amit jelent |
|---|---|
| 0 | olvasás, írás, futtatás |
| 1 | olvasás, írás |
| 2 | olvasás, futtatás |
| 3 | olvasás |
| 4 | írás, futtatás |
| 5 | írás |
| 6 | futtatás |
| 7 | nincs jog |
A fájl jogainak számítása
- fájl alapjogok: 666
- umask: 022
- számított jog: 644
A 644 kivonással jön létre:
666-022=644
A könyvtár jogainak számítása
- könyvtár alapjogok: 777
- umask: 022
- számított jog: 755
A 755 kivonással jön létre:
777-022=755
Példa
umask 077 mkdir dir1 touch file1 stat -c '%A %a %n' *
Lássuk a stat parancs kimenetét:
drwx------ 700 dir1 -rw------- 600 file1
Ugyanez az eredmény érhető el szimbolikus értékekkel:
umask u=rwx,g=,o=
Forrás
- man 2 chmod
- man 2 stat
- man 2 umask
