Felhasználói eszközök

Eszközök a webhelyen


oktatas:linux:jogok

< Linux

Linuxos jogok

  • Szerző: Sallai András
  • Copyright © Sallai András, 2011, 2015
  • Licenc: GNU Free Documentation License 1.3

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 Hozzáadhatsz, átnevezhetsz, mozgathatsz a könyvtárban
x Futtatás Megállapítható a könyvtár tartalma
(Pl.: Megadható a fájlok tulajdonosa és hossza a
könyvtárban). Futási jog szükséges könyvtárak
létrehozásához az adott könyvtárban, vagy fájlok
megnyitásához vagy az alkönyvtárakban

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

oktatas/linux/jogok.txt · Utolsó módosítás: 2019/08/16 20:04 szerkesztette: admin