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
i-node felépítés
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 (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ó
Többiek
Tulajdonos csoport
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ó
b blokkos készülékmeghajtó
rwx r-tulajdonos csoport jogosultsága w r x
rwtöbbiek
tiltás write (írhat) read (olvashat) execute (elindítható) 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
Hozzáférési jogok módosítása II. Másik megadási mód: 'u' (user : tulajdonos)
'+' : megfelelő jog engedélyezése
'g' (group : csoport)
'-' : 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 azposerne.valeria@nik.bmf.hu egyéb felhasználók számára (a többi jog nem módosul).
18
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