Unix/Linux alapok 2. Operációs rendszerek I. készítette: Kozlovszky Miklós, Bringye Zsolt Póserné Oláh Valéria, Windisch Gergely
linux (unix) fájlrendszerek http://www.csie.ntu.edu.tw/~pangfeng/system%20programming/lecture_note_2.htm Akik az Advanced Programming in the Unix Environment (Richard Stevens) könyvből vették
linux (unix) fájlrendszerek
i-node index node, az állomány tárolás alapja i-node azonosítja a fájlt magát (i-node táblában) hivatkozás a tényleges adatra hozzáférési idők jogosultság beállítások stb. A név nem része az i-node-nak a könyvtárakban van az összerendelés a nevekkel ls i: i-node azonosítók kiírása
i-node (2) Mire jó ez a gyakorlatban? Több néven hivatkozhatunk ugyanarra az állományra barátságos nevek Minden fájlnak egyedi i-node értéke van Egy fájlra hivatkozhatunk több néven Lehet két ugyanolyan nevű fájl
http://www.csie.ntu.edu.tw/~pangfeng/system%20programming/lecture_note_2.htm Akik az Operation System Concepts (Silberschatz,Galvin) könyvből vették i-node felépítés
i-node (2) - gyakorlat mkdir proba, cd proba touch alma, ls -i touch korte, ls -i a két fájl száma más látszik, hogy a fájlrendszerben egyre növekvőek az azonosító számok ls -ali : látszik a. és a.. is. az aktuális könyvtár: ugyanaz az index, mintha feljebb megyunk egy könyvtárat, és ott megnézzük a könyvtár indexei is egyesével növekednek, de más számok
Linkségek Hard link: egy igazi második fájl létrehozása (i-node ugyanaz) i-node táblában van tárolva ln célfájl új_link i-node táblában van eltárolva a fájl mérete, jogosultsága. Neve nem, az a könyvtárban található --> új nevekkel hivatkozunk ugyanazon i-node-ra. Ha letöröljük az egyiket, a többi ottmarad ls -l mutatja, hány link mutat az adatra
ls -l : a jogok utáni szám azt adja meg, hogy hány link mutat az adott fájlra cp: új i-node jön létre mv: marad a régi i-node, csak új névvel hivatkozunk rá - fájlrendszeren belül touch szamar ls -il cp szamar lo mv szamar horcsog
Symbolic link Más névvel is elérhetővé tehetjük könyvtárainkat és fájljainkat - pl: kompatibilitási okok, egyszerűbb elérés ln -s cel linkfajl A link csak rámutat a másik fájlra vagy könyvtárra Ha az eredeti fájlt letöröljük, a link sem fog működni
A LINUX védelmi rendszere Bejelentkezési védelem: bejelentkezés felhasználói névvel és jelszóval Fájlrendszer védelme: a fájlok és könyvtárak jogosultságokkal rendelkeznek Állományhozzáférési jogok: r olvasás, könyvtáraknál listázás w - írás x végrehajtás, könyvtáraknál belépés egy fájlhoz vagy könyvtárhoz külön-külön tárolja a rendszer a tulajdonos, a tulajdonos csoportjának és a többi felhasználónak a jogait poserne.valeria@nik.bmf.hu 11
Jogosultság (1) chmod Tulajdonos/Csoport/Mindenki más olvasás: 4 írás: 2 futtatás: 1 Könyvtárnál: listázás, új fájl létrehozás/törlés, belépés belépés tiltása szigorúbb, mint a listázásé
Jogosultság (2) Jogosultságok kezelése: chmod szám fájlnév Pl. a 754-es szám a következő jogosultságokat jelenti, ahol nulla van, az a jogosultság nem kerül beállításra Felhasználó Tulajdonos csoport Többiek r w x r w x r w x 4 2 1 4 0 1 4 0 0 7 5 4 poserne.valeria@nik.bmf.hu 13
Jogosultság (3) Fájl csoporttagságának megadása: chgrp csoport fájlnév pl. chgrp users level.txt Fájl tulajdonosának megadása: chown tulajdonos fájlnév poserne.valeria@nik.bmf.hu 14
Hozzáférési jogosultságok ls l - rw-rw-rw- 1 demo guest 23456 Aug 23 20:23 file1 d rwxrw-rwx 1 demo... l rwxrwxrwx... Jelentés: (első oszlop) - közönséges fájl d katalógus p speciális cső (pipe) l szimbólikus link c karakteres készülékmeghajtó rwx r-- rwtulajdonos csoport többiek jogosultsága - tiltás w write (írhat) r read (olvashat) x execute (elindítható) b blokkos készülékmeghajtó poserne.valeria@nik.bmf.hu 15
Hozzáférési jogok módosítása I. chmod [R] fájlok : oktálisan ( írás=2, olvasás=4, végrehajtás=1 ) pl. tulajdonos: olvasni, írni, végrehajtani tudja (4+2+1=7) csoporttagok: olvasni és végrehajtani (4+1=5) többiek csak: olvasni (4) a kód : 754 lesz. chmod 754 file1 ls -l file1 -rwxr-xr-- 1 demo guest 18 Aug 23 20:42 file1 poserne.valeria@nik.bmf.hu 16
Másik megadási mód: Hozzáférési jogok módosítása II. 'u' (user : tulajdonos) 'g' (group : csoport) '+' : megfelelő jog engedélyezése '-' : jog letiltása 'o' (others : egyéb) '= : jog abszolút értékre állítása 'a' (all : mindenki) chmod a+x file1 ( mindenkinek végrehajtható (a+x)) ls -l file1 -r-xr-xr-x 1 demo guest... (csak a végrehajtást változtatja meg) chmod u=rw file1 ls -l file1 -rw-r-xr-x 1 demo... (a tulajdonos olvasási és írási joga engedélyeződik, de a nem szabályozott végrehajtási jog letiltódik). poserne.valeria@nik.bmf.hu 17
A chmod parancs I. echo első példa >pelda chmod u+x pelda vagy chmod 744 pelda futtathatóvá tétel a tulajdonos számára. chmod go-rw pelda olvasási és írási jogainak tiltása az állomány csoportja és az egyéb felhasználók számára (a többi jog nem módosul). mkdir szovegek chmod -R a+x szovegek a szovegek könyvtár, az abban levő állományok és az alkt.-ak teljes tartalmának futtathatóvá tétele mindenki számára (a többi jog nem módosul). A futtatási jogot csak könyvtáraknak és az eleve futtatható állományoknak adjuk meg. chmod o= pelda az állomány összes jogának megvonása az egyéb felhasználók poserne.valeria@nik.bmf.hu 18 számára (a többi jog nem módosul).
A chmod parancs II. chmod a=r pelda vagy chmod 444 pelda a jogok numerikus alakjával Mindenki számára olvashatóvá tesszük, a többi jogot letiltjuk. chmod 750 pelda A tulajdonos olvasni, írni és futtatni is tudja, a csoport képes olvasni és futtatni, az egyéb felhasználóknak pedig semmilyen joguk sincs. chmod u=rwx pelda A szimbolikus jogok alkalmazásával chmod g=rx pelda chmod o= pelda poserne.valeria@nik.bmf.hu 19
Jogosultság Speciális flagek sticky bit: chmod +t nev Fájloknál már nem használt (memóriában tartás) Könyvtárra beállítva: a könyvárban levő fájlokat csak a tulajdonos törölheti (rendszerfüggő) példa erre a /tmp, közös ftp könyvtárak suid (set user id): chmod +s fnev Futtatható fájloknál a futtató felhasználó a fájl tulajdonosával lesz azonos (jogosultság szempontjából) pl: másolás root által írható helyre veszélyes! shell scriptnél különösen sgid: Mint a suid, csak csoporttal
SUID, SGID, Sticky a 4. szám chmod esetén Sticky: 1 sgid: 2 suid: 4 pl: chmod 4777 file 4: suid 777: sima jogosultság
Felhasználókezelés /etc/passwd : felhasználói információk (nyílt szöveg) /etc/shadow : jelszavak (kódolt) /etc/group : csoportok adatai groupadd : csoportot hozhatunk létre vele useradd: felhasználót adhatunk a rendszerhez /home/usernev -en belül lesznek a felhasználók alaphelyzetben nem jön létre /etc/default/useradd /etc/skel - ez a könyvtár lesz a home tartalma User létrehozása Unix alatt csak néhány konfigurációs állomány módosításából áll.
/etc/passwd /etc/passwd : felhasználói információk (nyílt szöveg) egyszerű szöveges fájl (mint majdnem minden hasonló konfig) minden sor 1 felhasználót jelent nem minden felhasználó valódi, vannak rendszernek fenntartott, szolgáltatásokhoz kötött, korlátozott userek is, amelyekkel belépni nem lehet. hallgato:x:1001:1002:hallgato Adam,,,:/home/hallgato:/bin/bash usernév (egyedinek kell lennie a rendszerben) x: régebben itt a jelszót tárolták, de ez elkerült innen. Az x a helytartó 1001: felhasználó azonosító (UID) nem rossz, ha egyedi, de nem kötelező (két azonos felhasználót hozhatunk létre azonos UIDvel) 1002: elsődleges csoport azonosító (GID) nem árt, ha létezik a csoport /home/hallgato felhasználó home könyvtára bizonyos rendszereken nem tud bejelentkezni a user, ha nem létezik /bin/bash felhasználó alapértelmezett shellje ez indul el a login után poserne.valeria@nik.bmf.hu 23
A UID normál esetben általában 1000-től indul, az 1000 alattiak pseudo felhasználók (egyes szolgáltatásokhoz tartozik például felhasználó, hogy ne rendszergazdaként fusson pl. a webszerver) root felhasználó UID-je: 1 (vagy 0) ha egy másik felhasználónak azt a UID-t adjuk, akkor neki is sok-sok joga lesz poserne.valeria@nik.bmf.hu 24
/etc/shadow Jelszavakat tartalmazó fájl Korábban a jelszavak az /etc/passwd fájlban voltak hallgato:x:$1df13ih3981zu398123 hallgato: usernév x: helyőrző $1ddsfsd...: a kódolt jelszó Az első néhány karakter azonosítja a kódolást poserne.valeria@nik.bmf.hu 25
/etc/group A csoportokat tartalmazó fájl users:x:1002:lajos,dome users: csoport neve x: helyőrző 1002: GID, csoport azonosító lajos,dome: további felhasználók, akik a csoportnak tagjai poserne.valeria@nik.bmf.hu 26
/etc/skel Ez a könyvtár szolgál az újonnan létrehozott userek mintájaként Ebbe pakolt dolgok meg fognak jelenni az új felhasználóknál (főleg szerverek esetén érdekes, ahol sok-sok felhasználó van) poserne.valeria@nik.bmf.hu 27
Felhasználók csoporthoz rendelése A felhasználókat az /etc/passwd fájl tartalmazza, és itt van tárolva, hogy melyik csoportba tartoznak A csoportokat az /etc/group A felhasználók tagjai lehetnek több csoportnak is a tagjai, viszont a passwd fájl ezt nem teszi lehetővé, ezért a group fájl negyedik oszlopába meg lehet adni további felhasználókat, akik tagjai lesznek az adott csoportnak. A passwd fájlban szereplő megadás a felhasználó elsődleges csoportja, a groupbeli megadás másodlagos csoportot jelent de ezek teljesen egyenértékűek a továbbiakban. Ha tudni szeretnénk, hogy egy felhasználó melyik csoportba tartozik, akkor ki kell keresnünk az azonosítót a passwd fájlból, valamint végig kell néznünk a group fájlt, hogy nincse megjelölve további csoportoknál. poserne.valeria@nik.bmf.hu 28
felhasználó hozzáadás kézzel Egyszerű szöveges fájlok Szerkesszük a fájlokat passwd group passwd parancs (adjunk neki jelszót) hozzuk létre a home könyvtárát lépjünk be, próbáljuk ki
Csoport létrehozása groupadd gname groupadd -g GID (group ID) megadása - 1000 fölött a tipikus
Felhasználó hozzáadás useradd user1 létrehoz egy felhasználót (beállítások nélkül) useradd -D : kiírja az alapértékeket useradd -g csoport1 user3 elsődleges csoport useradd -g csoport1 -G csop2,csop3,csop4 user4 másodlagos csoportok is useradd -m user5 home könyvtár automatikus létrehozása useradd -p kod user6 megadhatunk egy jelszót
Rendrakás passwd saját jelszavunk megváltoztatása passwd usernev másik felhasználó jelszavának megadása groupdel userdel