2017. január 23., hétfő

Hogyan működnek a Linuxos fájl jogosultságok

Ha Linuxot használsz már egy ideje (vagy akár OS X-et), valószínűleg már beleszaladtál egy "jogosultságok" hibába. De mik is pontosan ezek és miért szükségesek vagy hasznosak? Nézzük meg közelebbről.

Felhasználói jogosultságok

Akkoriban, amikor a számítógépek hatalmas gépek voltak, hihetetlen drágák voltak. Hogy a legtöbbet kihozzák belőlük, több számítógép terminál volt összekötve, ami lehetővé tette számos felhasználónak, hogy egyszerre intézzék dolgaikat. Az adatfeldolgozás és a tárolás a gépen zajlott, míg a terminálok egy kicsit többek voltak az adatmegtekintés és a bevitel eszközénél. Ha belegondolsz, ez nagyon is olyan, mint amikor mi hozzáférünk az adatokhoz a "felhőn"; Nézd meg az Amazon felhős MP3 rendszerét, a Gmail-t és a Dropbox-ot és észreveszed, hogy amíg változtatásokat lehet eszközölni helyileg, minden távoli helyen tárolt.


(Kép: Zenith Z-19 "buta" terminál; forrás: ajmexico)

Ahhoz, hogy ez működjön, az egyéni felhasználóknak fiókokra van szükségük. Kell nekik egy számukra kijelölt hely az adattárolón és szükségük van jogosultságra a parancsok és programok futtatásához. Mindenki egyéni "felhasználói jogosultságokat" kap, ami megmondja, hogy mit tehetnek meg és mit nem, hol van a rendszeren hozzáférésük és hol nincs és kinek a fájljait képesek vagy nem képesek módosítani. Minden felhasználó vegyes csoportokba kerül, ami lehetővé tesz vagy korlátoz további hozzáféréseket.

Fájl hozzáférés

Ebben a hóbortos többfelhasználós világban már eleve felállítottunk határokat arra, hogy a felhasználók mit tehetnek meg. De mi van azzal kapcsolatban, hogy mihez férhetnek hozzá? Nos, minden fájlnak vannak jogosultság beállításaik és egy tulajdonosuk. A fájl tulajdonosának meghatározása tipikusan akkor történik, amikor a fájl létrehozása, megadja, hogy melyik felhasználóhoz tartozik és csak az a felhasználó képes módosítani a hozzáférési beállításait.

A Linux világában az jogosultságok három kategóriába sorolhatóak: olvasás, írás és futtatás. Az "olvasás" jogosultság lehető teszi egy fájl tartalmának megtekintését, az "írás" jogosultság lehetővé teszi egy fájl tartalmának módosítását és a "futtatás" lehetővé teszi utasítások összességének futtatását, mint például egy script vagy program. Minden kategória ezek közül különböző osztályokra vonatkozik: felhasználó, csoport és világ. A "felhasználó" a tulajdonost jelenti, a "csoport" bármilyen felhasználót, aki ugyanabban a csoportban van, mint a tulajdonos és a "világ" bárki és mindenki.

    
Mappák ugyanúgy korlátozva lehetnek ezekkel a jogosultságokkal. Engedélyezheted például más más embereknek a csoportodban, hogy megnézzenek könyvtárakat és fájlokat a home mappádban, de senki másnak a csoportodon kívül.

Jogosultságok megváltoztatása Ubuntu alatt

Grafikusan

Hogy megváltoztasd egy saját tulajdonodban álló fájl jogosultságait, csak kattints rá jobb egérgombbal és menj a "Tulajdonságok"-hoz. 

Megváltoztathatod, hogy vajon a tulajdonos, csoport vagy mások tudják-e olvasni és írni, csak olvasni vagy semmit. Bejelölheted a fájl futtatásának engedélyezése jelölőnégyzetet is és ez megadja az engedélyt a tulajdonosnak, a csoportnak és másoknak is egyszerre.

Parancssor

Megteheted ezt parancssorban is. Menj egy könyvtárba, amiben vannak fájlok és írd be az alábbi parancsot, hogy megtekintsd a fájlokat egy listában:

ls -al


Minden fájlt és könyvtárat követően látsz egy speciális részleget, ami kijelöli a jogosultságokat, amikkel rendelkezik. Így néz ki:

-rwxrw-r–

Az "r" az "olvasás"-t jelenti, a "w" az "írás"-t és az "x" a "futtatás"-t. A könyvtárak "d"-vel kezdődnek "-" helyett. Észreveszed azt is, hogy 10 hely van, ami értéket tartalmaz. Az elsőt figyelmen kívül hagyhatod és akkor van egy 3 beállításból álló 3 rész. Az első rész a tulajdonosra vonatkozik, a második a csoportra és a harmadik a világra. 

Hogy megváltoztassuk egy fájl vagy könyvtár jogosultságait, nézzük meg a chmod parancs alapvető formáját.

chmod [osztály][műveleti jel][engedély] file 

chmod [ugoa][+ vagy –] [rwx] file

Ez elsőre komplikáltnak tűnhet, de bízz bennem, nagyon egyszerű. Először nézzük meg az osztályokat:
  • u: Ez a tulajdonos számára.
  • g: Ez a csoport számára.
  • o: Ez mindenki más számára.
  • a: Ez megváltoztatja az engedélyeket az összes fentebbi számára.
Következő, a műveleti jelek:
  • +: A plusz jel hozzáadja az utána következő jogosultságokat.
  • -: A mínusz jel eltávolítja az utána következő jogosultságokat.
Velem vagy még? Az utolsó része az ugyanaz, mint amikor megnéztük egy fájl jogosultságait:
  • r: Engedélyezi az olvasási hozzáférést.
  • w: Engedélyezi az írási hozzáférést.
  • x: Engedélyezi a futtatást.

Most rakjuk össze. Mondjuk, hogy van egy "todo.txt" nevű fájlunk, ami az alábbi jogokkal rendelkezik:

-rw-rw-r–

Ez az, hogy a tulajdonos és a csoport tudja olvasni és írni és a világ csak olvasni. Szeretnénk megváltoztatni a jogosultságokat erre:

-rwxr—–

Ez az, hogy a tulajdonos minden joggal rendelkezik és a csoport tudja olvasni. Ezt három lépésben tudjuk megtenni. Először hozzáadjuk a felhasználó számára a futtatási jogosultságot:

chmod u+x todo.txt

Aztán megvonjuk az írási jogosultságot a csoporttól:

chmod g-w todo.txt

Végül megvonjuk az olvasási jogosultságot minden más felhasználótól:

chmod o-r todo.txt

Mindezt egyesíteni is tudjuk egy parancsba:

chmod u+x,g-w,o-r todo.txt


Láthatod, hogy minden rész vesszővel van elválasztva és nincsenek szóközök. 

Íme néhány hasznos jogosultság:
  • -rwxr-xr-x: A tulajdonos minden jogosultsággal rendelkezik, a csoport és mások tudják olvasni a fájl tartalmát és futtatni.
  • -rwxr-r-: A tulajdonos minden jogosultsággal rendelkezik, a csoport és mások csak olvasni tudják a fájlt (hasznos, ha nem bánod, hogy mások megtekinthetik a fájljaidat).
  • -rwx——: A tulajdonos minden jogosultsággal rendelkezik, mindenki más semmivel (hasznos személyes scriptekhez).
  • -rw-rw—-: A tulajdonos és a csoport tudja olvasni és írni (hasznos egy csoport tagjaival való együttműködéshez.)
  • -rw-r-r: A tulajdonos képes olvasni és írni és más felhasználók csak olvasni tudják a fájlt (hasznos személyes fájlok tárolásához egy megosztott hálózaton).
  • -rw——-: A tulajdonos képes olvasni és írni, mindenki más semmit (hasznos személyes fájlok tárolásához).
Van még néhány egyéb dolog, amit megtehetsz a chmod-dal - például a setuid és setgid - de ezek egy kicsit mélyrehatóak és a felhasználók többségének egyébként sincs szükségük a használatára.

A root vagy szuper felhasználó és a rendszerfájlok


Napjainkban nem mindig futtatunk olyan rendszereket, amik több felhasználóval rendelkeznek. Miért kellene még mindig a jogosultságok miatt aggódnunk?

Nos, az Unix és származékaik - Linux, OS X, másokkal együtt - is különbséget tesznek a felhasználó által futtatott dolgok, az adminisztrátor által futtatott dolgok vagy az adminisztrátori jogokkal futtatott dolgok és a rendszer által futtatott dolgok között. Eképpen a rendszer szerves részét képező dolgok megváltoztatásához vagy módosításához adminisztrációs jogok szükségesek. Így nem rontasz el semmit véletlenül.

Ubuntu alatt a rendszerfájlok megváltoztatásához használd a "sudo" vagy "gksudo" parancsot az adminisztrátorival azonos jogok megszerzéséhez. Más disztribúciókban "root"-ra vagy "szuper felhasználó"-ra váltasz, ami gyakorlatilag ugyanazt a dolgot csinálja, amíg ki nem jelentkezel.

Legyél tudatában annak, hogy mindezen körülmények között a fájl jogosultságok megváltoztatása a programok működésképtelenségéhez vezethet, a fájl tulajdonjogának akaratlan megváltoztatására a root user-re (a tulajdonos helyett) és a rendszer kevésbé biztonságossá tételéhez (több jogosultság megadása által). Ezért ajánlott nem megváltoztatni a fájlokok jogosultságait - különösen a rendszerfájlokét - kivéve, ha szükséges vagy tudod, hogy mit csinálsz.

A fájl jogosultságok azért vannak, hogy egy alapvető biztonsági rendszert nyújtsanak a felhasználók között. Működésük ismerete segíthet beállítani egy alapvető megosztást egy több felhasználós környezetben, segíthet a "publikus" fájlok védelmében és ad egy utalást arra az esetre, amikor valami hiba csúszik a rendszer fájl tulajdonjogába.

Gondolod, hogy könnyeben el tudod magyarázni a dolgokat? Korrigálni szeretnél? Szeretnél visszaemlékezni a régi napokra? Tarts szünetet és írd le a gondolataidat a kommentekben.

Felhasznált forrás: How Do Linux File Permissions Work?

Nincsenek megjegyzések:

Megjegyzés küldése