Tartalomjegyzék

< Linux

Linuxos jogok

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 Read r
írás Write w
végrehajtás eXecute x

A jogok háromféle felhasználónak adhatók:

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:

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:

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

A 644 kivonással jön létre:

666-022=644

A könyvtár jogainak számítása

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