FÁJLOK, KÖNYVTÁRAK, JOGOK, STB
Mi a fájl? A számítógépen lévő információ tárolási egysége a fájl (fájl).
Egy fájl tartalma a gép szempontjából vagy adat, vagy program. Hagyományos értelemben véve bináris vagy szöveges adatot tartalmazó állományok.
A bináris fájlok között találhatók a CPU által végrehajtható utasításokat tartalmazókat, amelyeket futtatható fájloknak is nevezhetünk.
A szöveges fájlok között (minden platformon) létezik végrehajtható, ezek a szkriptek. (Windows alatt ezek a .bat kiterjesztésűek, míg az .exe és a .com a bináris változatuk.)
A fájlban tárolt adat lehet szöveg, kép, hang stb. Az adatok formájára nézve nincs előírás, nagyon sokféle formátum létezik.
A fájlok alapvető jellemzői fájlnév: a név amin keresztül elérhetjük DOS esetén legalább 1, maximum 8 betű szóköz nélkül. Tartalmazhatja az angol ABC 26 betűjét, számjegyeket, kötőjelet és alulvonást. Windows 95... 10: legalább 1, max. 255 betű, szóköz, több pont és ékezet is megengedett. Linux: legalább 1, max. 255 betű, szóköz, több pont és ékezet is megengedett. kiterjesztés: nem kötelező (itt igazából nincs). Általában a fájl jellegére utal (ha van).
méret: a fájl mérete bájtokban. dátum: Általában három különbözőt is számon tartunk: a fájl létrehozásának, utolsó módosításának és utolsó hozzáférésnek dátuma. idő: a fájl létrehozásának és utolsó módosításának idejét tárolják. Egyebek: fájlrendszer függő, hogy még milyen adatokat tárol. Pl: attribútumok, jogosultságkezelés, tömörítés, titkosítás, esetleg többszintű indexelés.
Mi a könyvtár? Speciális fájlok, amikben a többi fájlra vonatkozó adminisztratív információk vannak. A UNIX egyforma mechanizmussal kezeli a közönséges adatfájlokat és a könyvtárakat.
A könyvtárak tartalmát a felhasználó nem tudja változtatni, azt a UNIX rendszer a fájlműveletekkel párhuzamosan úgy változtatja, hogy az minden pillanatban megfeleljen a fájlstruktúrának. A könyvtár tehát egy fájlrendszeren belüli speciális fájl, ami fájlok neveit és a fájlrendszertől függően a nevekhez tartozó további információkat tartalmaz.
Névadási konvenciók A fájlnevek karakterekből állnak, hosszuk rendszerenként változik, itt akár 255 karakter hosszúak is lehetnek.
Bármilyen karaktert tartalmazhatnak kivéve: / és \0 (sztring végi null) karaktereket DE: Nem ajánlott használni speciális karaktereket (zavarhatják a feldolgozást). Ilyenek pl: amelyeknek a shell számára speciális jelentésük van: *?%$!@ A szóközt tartalmazó fájlneveket a parancssorban idézőjelek közé tesszük. Ajánlott karakterek: a betűk, számok, _ A kis- és nagybetűk közti különbség számít.
Nincs kiterjesztés (a pont a fájlnév egyik karaktere). A ponttal kezdődő nevek „rejtett” állományokat jelölnek
Fájlrendszer fogalma A fájlrendszer szűkebb értelemben nem más, mint a fájlok tárolására és rendszerezésére kialakított struktúra egy háttértároló eszközön (pl. floppy lemezen vagy merevlemezen vagy CDROM-on, stb), vagy annak egy részén (pl.: merevlemez egy partícióján). A Unix fájlrendszere hierarchikus, fa szerű struktúra, amely alapvetően két szerkezetből, a könyvtárakból illetve fájlokból épül fel. A könyvtárszerkezet egy gyökérnek nevezett könyvtárral indul amelynek a neve egy karakter , a / (a per jel karakter = slash, a gyökérkönyvtár neve: root directory). Ez a legfelsőbb szintű mappa, ami fizikai adathordozó esetén formázáskor kerül kialakításra, és aminél feljebb nem léphetünk. A fájlrendszer tehát egyetlen gyökérkönyvtárral rendelkezik. (DOS és Windows estén nem, mert ott meghajtónként van egy-egy). (Könyvtár és katalógus néven is használják)
i-node (index node): Egy fájlrendszerben a fájlok azonosítására szolgáló adatszerkezet. Minden egyes fájl vagy könyvtár egy inode-hoz van hozzárendelve.
Az inode tartalmazza az adott fájlra vonatkozó összes fontos információt (az állomány méretét, típusát, tulajdonosát és csoportját, a hozzáférési jogokat, és az állományt alkotó lemezblokkok fizikai elhelyezkedését a lemezen). Az inode-ban NEM szerepel az állomány neve, ezt az információt a könyvtár(fájl) tartalmazza. A katalógusfájlban minden fájlhoz, ami az adott katalógusban szerepel, egy bejegyzés tartozik. Ez tartalmazza az állomány inode számát, és az állomány nevét. (lásd ls -ial / ) UNIX esetén további fájlrendszerek a meglévő struktúra tetszőleges könyvtárába csatolhatóak, ezt a folyamatot mountolásnak nevezzük. Általában a telepítés során, a merevlemez particionálásakor lehet kiválasztani, hogy az egyes partíciókra milyen fájlrendszer kerüljön. (a particionálásról kicsit később bővebben hallunk majd)
A gyökér alatt láthatjuk: fa-szerűen szervezett könyvtárak, illetve fájlok (ez a struktúra minden könyvtárnál ismételhető) minden könyvtárban található 2 speciális könyvtár, a . és a .. (az első önmagára, a második közvetlenül az aktuális feletti szintre mutató ún. szülőkönyvtár). A gyökérkönyvtár nem tartalmaz .. mutatót. (ha használjuk: a .. is a / -re mutat)
A Linux tree parancsa a fájlrendszert úgy listázza, hogy a hierarchia látható.
Speciális jelek a könyvtárrendszerben /
gyökér katalógus
.
aktuális könyvtár
..
szülőkönyvtár
~
a felhasználó saját (HOME) mappája (= bejelentkezési könyvtár)
Milyen fájlok léteznek? Az ls -l kimenete az első oszlopban a fájl típusát tartalmazza.
Az első oszlop első karaktere c
egy karakteres eszközt
-
hagyományos fájt
d
könyvtárat
l
(szimbolikus) linket
b
blokk eszközt
p
Elnevezett csővezetéket
s
Domain Socket-et jelöl.
Blokkeszköz Blokk-típusú speciális fájl, amely olyan eszközre mutat, ami blokkokban értelmezi az adatokat (pl: floppy, merevlemez, stb).
E speciális fájl segítségével egyszerű fájlkezelő programokkal is kezelni tudjuk ezeket a hardver eszközöket és a rajtuk tárolt adatokat.
Karaktereszköz Karakter-típusú speciális fájl, amely olyan eszközre mutat, ami karakteresen értelmezi az adatokat (például: nyomtató, modem, konzol stb.).
Socket Processzek (folyamatok, programok) egymás közötti kommunikációjára használják. Ha egy processz egy másik gép processzéhez szeretne kapcsolódni, akkor azt hálózati port(ok) használatával teheti meg. Ha ugyanazon a számítógépen futó programmal kommunikál, akkor ahhoz socket fájlt is használhat, amit csak a kapcsolódó processzek olvashatnak és esetleg írhatnak.
Elnevezett csővezeték (Named pipe) Olyan átmeneti tároló „fájl”, ami FIFO (First In First Out = először be először ki) elven működik. (Amelyik adat először megy be rajta, az is jön ki először a másik oldalán.)
Folyamatok közötti kommunikációra ad lehetőséget úgy, hogy az egyik alkalmazás kimenetét egy másik alkalmazás bemenetére köti. Segítségével az egyik program kimenetét átirányíthatjuk egy másik program bemenetére. A feladat végrehajtása így gyorsulhat, mert nem kell az előbbi program egész kimenetét megvárni, fájlba írni, majd a feladat befejeztével a másik programot elindítani a fájlba mentett adatokkal, hanem ahogy küldi az első program az adatokat a csővezetékbe, úgy dolgozza fel a másik oldalon a másik program az adatokat, így egyszerre futnak. A pipeokat egy p betű azonosítja.
Könyvtár A számítógépen elhelyezett adatok rendezett tárolása érdekében hozták létre. Tartalmazhatja az összes fájltípust.
Szabványos fájl Minden más fájl, ami nem tartozik a többi csoportba, az szabványos fájl, jele a „–”.
(Szimbolikus) Hivatkozás A link egy mutató (hivatkozás) egy valamilyen adathordozón található fájlhoz, amit az eredeti fájl vagy könyvtár helyett használhatunk.
Speciális fájlok Unix alatt 4 féle ismert:
1. link
l
2. nevesített csővezeték
p
3. socket
s
4. eszközfájlok: ezek a hardver elemeit reprezentálják a fájlrendszerben. Így hozzáférési jogokat adhatunk az egyes elemeknek, és utasításokban használhatjuk közvetlenül magát az eszközöket. (pl billentyűzet, terminál, merevlemez, memória stb.) Az eszközöket a c (karakteres elérésű) vagy a b (blokk elérésű eszköz) betű azonosítja listázáskor.
Elérési útvonal Az elérési utak két csoportba sorolhatóak: 1. abszolút elérési út: ez mindig / jellel kezdődik, és a gyökérkönyvtárból indulva minden mappát felsorolunk a célunkig, pl: /home/adatok/proba (Windows esetén ez az aktuális meghajtóra vonatkozik, amennyiben ettől eltérőre kívánunk hivatkozni, akkor az elérési út előtt meg kell adnunk a meghajtó nevét.) 2. relatív elérési út: már valamilyen mélységben vagyunk (lelépegettünk) a könyvtárrendszerben és kényelmesebb lenne ehhez viszonyítva hivatkozni, mint a gyökértől kezdve felsorolni újra. Ilyenkor az aktuális mappához viszonyítva adjuk meg a fájl helyét. Pl: a /home/adatok/ könyvtárban állunk és a proba -ra szeretnénk hivatkozni (relatívan): ./proba
Kitüntetett könyvtárak A UNIX, ill. Linux operációs rendszer könyvtárstruktúrája is olyan mint egy fa, ami fejjel lefelé terebélyesedik.
Számos könyvtárból áll. Ezeknek a tartalma egyes UNIX verziókban, ill. Linux disztribúciókban egymástól némiképp eltérhet. A felhasználó szempontjából kitüntetett könyvtárak: root directory - a gyökérkönyvtár home directory - a felhasználó saját, vagy home könyvtára, pl: /home/teszt current directory - az aktuális könyvtár working directory - a munkakönyvtár. Minden egyes futó folyamatnak van egy munkakönyvtára. Ebből olvas fájlokat, és ebbe ír. Ehhez a könyvtárhoz viszonyítjuk a relatív elérési utakat. Megváltoztatni a cd, lekérdezni a pwd paranccsal lehet.
A Linux alapvető könyvtárai a gyökérkönyvtárban (ABC sorrendben): /bin:
Futtatható programokat tartalmazó könyvtár. Itt tárolódnak a standard parancsok és segédprogramok. /boot: A rendszer bootolásakor használt fájlokat tartalmazó könyvtár. Itt található meg általában Linux kernelt tartalmazó állomány is. (Előfordul, hogy ezt a könyvtárat külön partíción helyezik el, hogy tartalma a lemez elejére kerüljön.) /dev: Itt találhatók a különböző hardvereszközök kezeléséhez szükséges fájlok. /etc: Rendszerkonfigurációs fájlokat tartalmaz (a rendszer és az egyes alkalmazások alapvető beállításaival kapcsolatos fájlokat) /home: A felhasználók saját, bejelentkező (login) könyvtárai vannak benne. (Ezeket a könyvtárakat csak a tulajdonosa olvashatja.) Egy felhasználó minden adata (munkája során használt fájlok, programok (felhasználóra vonatkozó) beállításait tartalmazó fájlok) ebben a könyvtárban (pl. /home/teszt) található. /lib: A különböző programok függvénykönyvtárait tartalmazó fájlok helye.
/mnt : A benne lévő könyvtárakat csatlakoztatási könyvtárnak használják (pl. /mnt/cdrom – a Cd-rom csatlakoztatására). Tehát az alkalmilag felcsatolt fájlrendszereket (Pl a cserélhető eszközök vagy más operációs rendszerek által is használt partíciók fájlrendszereit, vagy a hálózati fájlrendszereket szokás ide felcsatolni. ) /proc : Ezt a könyvtárat csak az operációs rendszer használhatja. A processzek fájlrendszereinek könyvtára. Itt találhatók a kernel és a futó programok egyes adatai is. /root :
A rendszergazda bejelentkezési könyvtára, amely más számára nem olvasható.
/sbin:
A rendszer indításához és karbantartásához használt rendszeradminisztrációs parancsokat tartalmazza.
/tmp:
Az ideiglenes fájlok könyvtára, amelyet a programok használhatnak, ha szükségük van ilyen fájlokra működésükhöz. Ennek a könyvtárnak a tartalmát a rendszer indításakor az operációs rendszer kitörli. Ideiglenes állományok a /tmp, a /var/tmp vagy a felhasználó könyvtárában lévő tmp könyvtárba kerülhetnek.
/usr:
A legtöbb program itt található. /usr/bin és /usr/sbin –ben a futtatható programok, az /usr/lib -ben a bináris programok függvénykönyvtárai, /usr/share -ben a programok platformfüggetlen állományai.
/usr/src
A programok forráskódjai (ha telepítve vannak).
/usr/doc
Dokumentációs fájlok
/usr/local/man
Kézikönyv oldalak
/var
Az állandóan változó fájlok könyvtára (pl. log fájlok), amelyek nem kötődnek szorosan a felhasználóhoz. Pl /var/log –ban: az egyes folyamatok naplóállományai vannak.
cd Könyvtárváltás (change directory) cd <útvonal> Az útvonal megadása lehet abszolút (a gyökérkönyvtártól írjuk le) és relatív (az aktuális könyvtártól írjuk le). Pl:
cd .. cd ../../tmp
mkdir Könyvtár létrehozása (make directory) mkdir <útvonal> Az útvonal végén az létrehozandó könyvtár neve áll. mkdir ../install/valami A parancs létrehozza az aktuális könyvtár szülőkönyvtárából nyíló install könyvtárban a valami nevű könyvtárat.
22
rmdir Könyvtár törlése (remove directory)
rmdir <útvonal> Az útvonal végén a törlendő könyvtár neve áll. Csak üres könyvtár törölhető így!
Ha nem akarunk a tartalom törlésével foglalkozni, a megoldás az rm –r parancs.
23
Példa a mkdir és a rmdir parancs használatára ls –l mkdir newdir ls –l
rmdir newdir ls –l
24
touch Fájl időbélyegének megváltoztatása. Létrehoz egy üres fájlt, vagy ha a fájl már létezik akkor pedig módosítja az utolsó hozzáférés és módosítás idejét egyidejűleg az aktuálisra. touch [-a | -m] [állománynév(ek)] -a: csak a hozzáférési idő módosítása -m: csak a módosítási idő módosítása -c: Nem hozza létre a fájlokat, ha nem léteznek.
25
alias, unalias Másodnév létrehozása és eltávolítása. A létező másodneveket kiírja, ha paraméter nélkül adjuk ki a parancsot. Ezeket a .bashrc fájlban is megtaláljuk (ezt ki is írathatjuk pl).
alias másodnév=´amit helyettesítsen´
Pl: alias lista=´ls -l´
unalias lista
Eszközök kezelése
Eszközök csatlakoztatása/leválasztása A különböző fizikai (vagy logikai) eszközök (pl. floppy, merevlemez partíciója, stb.) a könyvtárszerkezetből érhetők el a csatlakoztatási könyvtárukon (mount point) keresztül. Ezért automatikusan, vagy manuálisan csatlakoztatni kell a különböző eszközöket a könyvtárszerkezethez (mount parancs). Mivel itt nincsenek betűjelekkel megkülönböztetett meghajtók, egy fájl mindig ugyanott található meg. A különböző eszközökön különböző fájlrendszerek lehetnek. A különböző eszközöket eltávolítás előtt ill. az operációs rendszer leállítása előtt le kell választani a könyvtárszerkezetről (umount) (automatikusan vagy manuálisan) A /etc/fstab állományban megadható, hogy a gépen használható partíciók, lemezegységek csatolását milyen paraméterekkel kell elvégezni. Így ekkor elegendő a csatolási pontot megadni. Pl. mount /floppy (ha az fstab-ban előre rögzített csatolási pont a /floppy könyvtár)
/dev Itt az eszközfájlokat találjuk. Mindegyik eszközt a fájlrendszerben egy eszközfájl képviseli. Amikor egy eszközfájlba írunk akkor az adat a megfelelő eszközhöz megy illetve olvasáskor onnan jön. Tehát nem szükséges sem speciális program, sem programozási technika az eszközök elérésére.
Eszközfajták: Kétféle típusa van az eszközöknek és az eszközfájloknak : karakteres és blokk. Blokkok például az egyes merevlemezeket vagy azok partícióit leképező eszközfájlok. Ezek a leképezett eszköz méretével megegyező méretű állományok, melyek tartalmához bármilyen programmal hozzáférhet a megfelelő jogosultsággal rendelkező felhasználó. Véletlen elérésűek. A karakteres eszközök egy input vagy output adatfolyamot képeznek le, ilyen például a számítógép soros vagy párhuzamos portja.
A lemezegységek állományai a leggyakrabban előforduló IDE csatolók esetén: /dev/hda /dev/hdb /dev/hdc /dev/hdd A lemezegységen belül a partíciókat sorszámokkal jelölik. Pl. /dev/hda1 Általában minden lehetséges eszközfájl létezik, még akkor is, ha az eszköz fizikailag nincs is beszerelve. (Pl ha a rendszeren van egy /dev/sda fájl, az nem jelenti, hogy valóban van SCSI merevlemezünk. ) A partíciók kialakítására az egyes disztribúciók eltérő programokat javasolnak. Minden disztribúció esetén használható particionáló program pl az fdisk.
Pl: hardvereszközök, partíciók jelölése
Fontosak, de fizikailag nem léteznek Eszközök, amik fizikailag nem léteznek: /dev/null Elfogad és elnyel minden bejövő adatot, kimenetként nem produkál semmit. Egy parancs kimenetének eltüntetésekor használható.
/dev/random Változó hosszúságú, véletlenszerűen generált karaktersorozatokat állít elő.
/dev/zero Csupa 0 karakterekből álló karaktersorozatot állít elő.
Linkek A fájlrendszerben ún. linkeket is használhatunk. A link egy mutató (hivatkozás) egy valamilyen adathordozón található fájlhoz, amit az eredeti fájl vagy könyvtár helyett használhatunk. A link arra jó, hogy egy fájlnak több neve legyen, esetleg külön könyvtárban.
1. Szimbolikus link (puha, soft) link Speciális állományok, amelyek egy másik állomány elérési útvonalát tartalmazzák, tehát a mappabejegyzés teljesen független a hivatkozott fájltól.
Törlése nincs hatással az általa mutatott fájlra (szemben a hard link eltávolításával, amely törli a fájlt abban az esetben, ha nem mutat rá másik hard link). Soft linkkel lehet másik fájlrendszerben lévő objektumra is hivatkozni. Ha törlik vagy átnevezik vagy áthelyezik a célját, akkor a link törött lesz (broken link), mert egy már nem létező elemre fog mutatni. Ez a leggyakrabban használt linktípus.
2. Kemény (hard) link A legtöbb fájlrendszerben az elnevezett fájlok hard linkek. A fájl neve csak egy címke, amely az operációs rendszer számára egy adatra utal. Ennek megfelelően ugyanazt az adatot több néven is jelölhetjük.
Amikor létezik egy sima fájl, akkor is egy kemény kötés hivatkozik a háttértárolón elhelyezkedő adatra. Amikor egy újabb kemény kötést rendelünk hozzá, a fájlra vonatkozó kemény kötések száma eggyel megnövekszik. Ugyanarra a tárterületre több néven helyezünk el hivatkozást a fájlrendszerben ezért ezek a típusú linkek egymástól teljesen megkülönböztethetetlenek. (ha az egyiket átírom, a másik is változik) Egyik fontos tulajdonsága, hogy csak egy fájlrendszeren belül lehet használni: nem lehet egy fájlrendszerben egy másik fájlrendszerbe mutató hard linket létrehozni, tehát nem hivatkozhatnak az egyik partícióról a másikra, csak egy fájlrendszeren belül. Csak fájlokra mutathatnak (speciális fájlokra nem és könyvtárra sem). A lényege, hogy ugyanarra a tárterületre több néven helyezünk el hivatkozást a fájlrendszerben. A fájl ténylegesen akkor törlődik, ha a linkszámláló értéke a törlést követően 0-ra csökkenHa részletes listát kérünk, a linkszámláló (második oszlop) értéke fogja mutatni.
ln A linkek hozhatóak létre ezzel a paranccsal.
Alapesetben hard linket készít. Az -s opció használatakor soft linket hoz létre.
ln [opciók] célfájl [linknév]
Pl: Hard link: ln egy ketto
Soft link: ln -s egy ketto
A linkek törlése: a fájltörlés paranccsal (rm) történik.
Ha letörlünk egy fájlt, amelyre link kapcsolatok mutattak, akkor a hard linkkel létrehozott új fájl továbbra is megmarad, és tartalma megegyezik a letörölt fájléval. a soft linkkel létrehozott fájlnév megmarad, de ha olvasni próbálunk a fájlból, akkor hibaüzenetet kapunk.
Jogosultságok a fájlrendszerben
A fájlokhoz tartozó jogok az ls –l paranccsal láthatók. Minden sor egy objektum adatait tartalmazza. 1. Az első karakter mutatja meg, hogy milyen fájlról van szó. Pl: - közönséges fájl, d könyvtár, l szimbolikus link
2. A következő 9 karakter tartalmazza háromszor hármas bontásban az adott objektumhoz fűződő hozzáférési jogokat. (A létező jogot a betűje képviseli (rwx), míg a megvont jogot egy - karakter jelzi.) 3. a következő oszlopban a tulajdonosok, 4. a negyedik oszlopban a csoportok vannak megnevezve…. De lássuk a konkrét példát a következő dián!
ls -l drwxr-xr-x 2
tanulo users
4096 2015-03-17
15:09 Proba
d rwx rwx rwx 2
- directory / könyvtár Ha fájl akkor „– ” van d helyett. - read, write, execute User /Felhasználó - olvasaható, írható, végrehajtható Group /Csoport - olvasaható, írható, végrehajtható Others /Mások – később bővebben) - könyvtár esetén a gyermekeinek száma fájl esetén a linkek száma. Ha 1, akkor 1 link mutat a fájlra, tehát egyetlen fájlnévvel lehet rá hivatkozni. A linkek típusairól később bővebben. Itt csak annyit erről, hogy csak a hardlinkek számát mutatja) tanulo - tulajdonos neve users - csoport neve (felhasználó, rendszergazda) 4096 - méret byte-ban 2015-03-17 - az utolsó módosítás dátuma 15:09 - a módosítás ideje Proba - fájl vagy könyvtár neve Szimbolikus linkeknél a fájlnév után egy -> nyíl áll, ami után az áll, hogy melyik másik fájlra mutat a szimbolikus link. 40
u, g, o, r, w, x A Linux ◦ olvasási ◦ írási ◦ futtatási
(r ; a fájl vagy a könyvtár tartalmának olvasását jelenti), (w; ahhoz szükséges, hogy módosítani tudjuk a tartalmát vagy törölni tudjuk) (x; hogy egy végrehajtható kódot tartalmazó állományt a felhasználó el tudjon indítani, vagy egy könyvtárba beléphessen), és
jogokat ismer, amiket ◦ a fájl tulajdonosához (u; egy felhasználó), ◦ a fájl csoportjához (g; egy felhasználói csoport tagjai) és ◦ a többi felhasználóhoz rendelve (o) tudunk meghatározni. A jogosultságok és a jogosultak kombinációiból kilenc egymástól függetlenül beállítható jog keletkezik.
Oktálok A jogok nem csak szimbolikus jelekkel de számokkal is meghatározhatóak. Számokkal.: 4-read, 2-write, 1-executable jog, összeadva, külön U,G,O-nak
r w x 4 2 1 tulajdonos (u=user)
r 4
w x 2 1 csoport (g=group)
Pl 777 Tulajdonos
r w x | 4 2 1 [r=4; w=2; x=1 ; rwx=7 ... ]
Csoport
rwx|421
Többiek
rwx|421
r 4
w x 2 1 mások (o=other)
Jogok hatásai Fájlok esetén: Olvasási jog: Megnyithatjuk, olvashatjuk a fájlt Írási jog: Új fájlt hozhatunk létre, vagy egy meglévőt módosíthatunk Végrehajtási (futtatási) jog: csak a futtatható fájloknál van jelentőségük (pl scriptek). Ha egy fájlra csak x jogunk van, akkor csak futtatni fogjuk tudni azt a fájlt, olvasni nem – így nem fogjuk tudni lemásolni sem! Könyvtárak esetén: az olvasási jog azt jelenti, hogy elolvashatjuk (listázhatjuk) a fájlok neveit az adott könyvtárban,
az írási jog jelenti, hogy a könyvtárban állományt, könyvtárat hozhatunk létre, átnevezhetünk, mozgathatunk a könyvtárban a futtatási jog megengedi a belépést a könyvtárba (így a könyvtárban való keresés joga is) és azt, hogy az adott könyvtárban alkönyvtárakat hozzunk létre
PL: ls –l eredménye -rw-r--r-- 1 tanulo barbi 3184 dec 24 18.37 .bashrc
típus
tulajdonos jogai
csoport jogai
mindenki más jogai
-
rw-
r--
r--
Jogosultságok megváltoztatása Egy fájl tulajdonosi (hozzáférési) jogait csak a fájl tulajdonosa, vagy a rendszergazda tudja megváltoztatni.
chmod [options] mode[,mode] file1 [file2 ...]
A parancs használatakor meg kell határozni: Adunk vagy elveszünk jogot (+ : adunk, - : elveszünk) Kinek/kitől (saját, csoport, mások ) Milyen jogot adunk (r w x / 4 2 1 )
chmod A chmod paranccsal állíthatjuk a jogokat, ahol hivatkozunk a tulajdonosokra, csoportokra, illetve mindenki másra:
tulajdonos
User
u
csoport
Group
g
mások
Other
o
mindenki
All
a
Van egy plusz jelölési lehetőség, 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.
+
Hozzáad egy engedélyt.
–
Elvesz egy engedélyt.
=
Beállítja az engedélyt.
-R
A fájlok jogosultságait az alkönyvtárban is módosítja (rekurzív módon).
Pl Oktálokkal: chmod 777 fájl : UGO-nak egyaránt minden jog. (4+2+1 4+2+1 4+2+1) chmod 751 fájl : U-nak minden, G-nek írási és futtatási, O-nak futtatási jog. Betűkkel: (kinek/kitől + mit)
chmod u+rwx fájl
: Tulajdonosnak r,w,x jog adása az adott fájlra.
chmod g+rx fájl
: Csoport felhasználónak r,x jog beállítása.
chmod a-rwx
: Mindenkitől elveszünk minden jogot.
chmod go-rwx file1
: a tulajdonoson kívül senkinek semmi
chmod +r file1
: olvasási jog mindenki számár (alapértelmezés az „all”)
chmod u+x alma.txt
Futtatási jogosultságot ad a fájl tulajdonosának.
chmod go-rx alma.txt
Visszavonja az olvasási és futtatási jogosultságot a csoport tagjaitól és mindenki mástól.
chmod a=r alma.txt
A fájl jogosultságait csak olvashatóra állítja minden felhasználó számára.
chmod 444 alma.txt
A fájl jogosultságait csak olvashatóra állítja minden felhasználó számára.
chown Fájlok, könyvtárak tulajdonosának változtatása -R
Rekurzívan változtatja meg a tulajdonos(oka)t
-f
Nem küld vissza hibaüzenetet a rendszer, ha valami nem sikerült
--no-dereference
Szimbolikus linkeknél a link jogosultságainak beállítása
--dereference
Szimbolikus linkeknél a fájl (amire a link mutat) jogok változtathatóak meg.
-c
Azon állományok nevét jeleníti meg, melyeknek a tulajdonosa megváltozott.
-f
Tiltja a hibaüzenetek megjelenítését.
-R
A fájlok tulajdonosát az alkönyvtárakban is módosítja.
-v
A módosításokról részletes listát készít.
Pl chown tanulo alma.txt
A fájl “tanulo” tulajdonába kerül.
chgrp felhasznalo alma.txt
A fájl a “felhasznalo” csoportba kerül.
Együtt: chown tanulo:felhasznalo alma.txt
A fájl “tanulo” tulajdonába és a “felhasznalo” csoportba kerül.
chgrp Fájlok tulajdonosi csoportjának megváltoztatása
-R : Rekurzívan változtatja meg a csoportokat -f : Nem kapunk vissza hibaüzenetet, ha valami nem sikerült
-c : csak azokat a fájlokat írja ki, amelyeknek valóban megváltozott a csoportjuk
suid bit (Set User Identification) = s =2 A suid (Set User Identification) = a „felhasználói azonosító megváltoztatása”. (jele "s") Időnként szükség van arra, hogy egy egyszerű felhasználó egy privilegizált felhasználó jogaival rendelkezzen. A legegyszerűbb eset a jelszó megváltoztatása. Egy egyszerű felhasználó nem írhatja közvetlenül a rendszer jelszófájlját, de a saját jelszavát meg kell tudnia változtatni. Ehhez viszont írnia kell a jelszófájlba. Ezt az ellentmondást oldják fel úgy, hogy a programot ruházzák fel privilegizált jogokkal, a suid bit beállításával. A passwd parancs engedélyei a következők: -rwsr-xr-x
1
root
root
28896 Sep 7 13:40
/usr/bin/passwd
A suid bit be van kapcsolva, így futásának idejére az őt futtató felhasználó rendszergazdai jogkört kap, tehát a root jogosultságaival olvassa és írja a /etc/passwd fájlt, mivel a fájl a root tulajdonában van.
sgid bit (Set Group Identification) = 4 A sgid bit (Set Group Identification) a csoportazonosító megváltoztatása. Beállítása esetén a program annak a csoportnak a jogaival fog futni, akinek a fájl a birtokában van. A sgid bitet könyvtárak esetén is be lehet kapcsolni. Ha ekkor a könyvtárban bárki létrehoz egy fájlt (és a többi jog rendben van), akkor a fájl csoporttulajdonosa nem az a csoport lesz, amelyikbe a felhasználó tartozik, hanem az, akinek a könyvtár a birtokában van.
sticky bit = t =1 A sticky bit (ragadós bit) bekapcsolása fájlok esetén azt jelzi az operációs rendszernek, hogy a fájlt tartsa a memóriában a végrehajtás után is. (Ennek akkor van értelme, ha azt akarjuk, hogy egy program minél gyorsabban induljon el, és ne kelljen várni arra, hogy betöltődjön a memóriába.) Be lehet kapcsolni könyvtárak esetén is. Az ilyen bittel ellátott könyvtárban bárki írhat fájlokat (a többi jognak is rendben kell lennie), de mindenki csak a sajátját törölheti. Haszna: a mindenki által írható könyvtárakban (pl a /tmp) a felhasználók nem tudják a másik felhasználó által írt fájlokat módosítani, letörölni. Jele a „t”.
Alapértelmezett jogok Amikor egy fájlt létrehozunk, akkor az a jogosultságoknak egy alapértelmezett csoportjával fog rendelkezni.
Pl: Létrehozunk egy üres fájlt, és már annak is leszek jogai. touch valami
ls –l valami rw-r--r—
umask Meghatározza, hogy milyen jogosultságot kapjanak az újonnan létrehozott fájlok, mappák. Az újonnan létrehozott fájlok számára a héj kap a rendszertől egy beállítást, ami meghatározza milyen jogosultságokkal jön létre egy új fájl. A beállítást egy maszk tartalmazza (umask-nak nevezik) és azt tartalmazza, milyen jogosultságot ne állítson be a shell amikor létrehoz egy új fájlt. A maszk beállítása feltételezi, hogy a végrehajtási jogot amúgy sem kell beállítani, mert ezt mindig tudatosan állítja be egy program ha szükséges. A többi jogra egy oktál számokból álló maszkot ad meg. Ennek eredeti értéke 0002 vagy 0022 (a szám 4 jegyű, az rwx biteken kívül a kiegészítő biteket is tartalmazza). A 0002 jelentése a létrehozandó fájl ugo csoportjainak rwx bitjeire vonatkozik, és az egyetlen beállított bit azt jelenti, hogy egy újonnan létrehozott fájl nem lehet mások által írható (a 0022 esetében a csoport által sem).
pl umask 0002 touch alma.txt ls -l alma.txt -rw-rw-r-- 1
tanulo tanulo 0 Feb 5 15:28 alma.txt
umask 0022 touch teszt.txt ls -l teszt.txt -rw-r--r-- 1 tanulo tanulo 0 Feb 53 15:28 teszt.txt
Fájlok attribútumai A fájlok és könyvtárak számra különböző attribútumokat állíthatunk be. (ext fájlrendszer esetén): Kar.
Leírás
A
A fájl módosításakor az atime bejegyzés (utolsó hozzáférés ideje) nem változik.
a
A fájlhoz csak hozzáfűzni lehet.
c
A kernel automatikusan tömöríti a lemezen.
d
Nem lesz biztonsági mentésre kijelölve.
i
A fájl nem módosítható, nem törölhető, nem átnevezhető, nem lehet hozzáfűzni. Csak a root adhatja, vagy veheti el ezt az attribútumot.
s
Törléskor a blokkjai kinullázódnak a lemezen.
S
Módosításkor a változások szinkronban lesznek a lemezen lévő adattal.
u
A fájl törlésekor annak tartalma megőrződik. Ez lehetővé teszi, hogy később visszahozhassuk.
lsattr Fájlok, könyvtárak attribútumát mutatja meg -R : Rekurzívan mutatja meg az attribútumokat -a : minden fájlt kilistáz, beleértve a ponttal kezdődőeket is
chattr chattr +tulajdonság fájl Fájlok, könyvtárak attribútumát változtatja
A + jellel hozzáadunk, a – jellel elvesszük a jogot.
ACL (Access Control List) A SAMBA fájlmegosztásnál előtérbe kerül az a kérdés, hogy a Linux-jogosultság mellett, hogyan lehet ezeket a jogokat a Windowshoz hasonlóan több felhasználóra vagy csoportra kiterjeszteni. A Linux ezt az ACL csomaggal oldja meg, amit a POSIX szabványgyűjtemény ír le. Az ACL valósítja meg, hogy konkrét felhasználó vagy konkrét csoport is hozzá legyen rendelve fájlhoz, illetve könyvtárhoz.
Itt a hozzárendeléseket bejegyzéseknek nevezzük. Ha egy fájlon ACL bejegyzés létezik, akkor azt az ls –l listázásnál, a jogosultsági mezők végén, egy + jel jelzi.
bejegyzéstípusok Típus tulajdonos konkrét felhasználó tulajdonoscsoport konkrét csoport maszk többiek
Kód ACL_USER_OBJ ACL_USER ACL_GROUP_OBJ ACL_GROUP ACL_MASK ACL_OTHER
Formátum user::rwx user:név:rwx group::rwx group:csop_név:rwx mask::rwx other::rwx
A bejegyzések állítására a setfacl ,míg lekérdezésre a getfacl parancs szolgál.
Fontosabb parancsok
Általános fájlkezelő parancsok 67
cp Fájl másolása egy helyről egy másik helyre. cp [forrásfájl] [célfájl] Mappa másolásakor külön kell beállítani, hogy rekurzívan működjön. cp -r [i ] forrásmappa(k) célmappa(k)
-i -v -r -p -l -f
interaktívan fut (kérdez, ha felülírás esete áll fenn) verbose: kiírja amit végez rekurzívan másol egy könyvtárstruktúrát lefele a cél fájl felveszi a forrás jogait másolás helyett hivatkozást készít force: ha olyan fájlt talál, amire nem tud másolni, megpróbálja törölni és megismételni a műveletet 68
Pl fájlt fájlba:
cp 1.txt 2.txt
több állományt ugyanabba a könyvtárba: cp 1.txt 2.txt elso/ másolás jóváhagyással: cp -i 1.txt 2.txt
Könyvtárakat a -r kapcsolóval másolhatunk, így a forráskönyvtárat és annak teljes tartalmát átmásolja: cp -r elso harmadik
rm Töröl egy vagy több fájlt. Mindent töröl, nem kérdez rá, ezért minden esetben -i kapcsolóval használjuk, így rákérdez minden egyes elemre törlés előtt. rm [kapcsoló(k)] fájlnév Kapcsolók: -i kérdez minden törlés előtt -v kiírja amit végez -f force: akkor is elvégzi a törlést ha az állomány írásvédett (de a felhasználóé) -r rekurzívan töröl: ilyenkor könyvtárakat is töröl Pl: több fájl törlése: egy könyvtár törlése tartalommal együtt:
rm 1.txt 2.txt 3.txt rm -rf enmappam 70
mv Egy fájlt mozgat vagy egy fájlt átnevez.
mv [-i] [forrásfájl] [célfájl] Ha a második argumentum fájlnév, akkor átnevezés történik, ha mappanév, akkor pedig átmozgatás. A forrásfájl lehet fájl is, és mappa is, a hatása ugyanaz. -i -f -v
kérdez felülírás esetén nem jelzi, ha felülír egy állományt ami írásvédett verbose: kiírja amit végez
Pl: az 1.txt átnevezése 10.txt-vé: mv 1.txt 10.txt minden jpg típusú fájl mozgatása a kepek könyvtár alá:
$ mv *.jpg kepek/ 71
find Fájlokat keres egy könyvtárstruktúrában. A keresés nagyon erőforrás igényes és jelentősen leterheli a rendszert így mindig próbáljuk meg a keresési feltételeket leszűkíteni. find elérési_útvonal kifejezés [tevékenység] PL: find teszt -maxdepth 1 -type f
csak az igazi fájlokat keresi (opció: -type f ) és csak egy könyvtárnyi mélységben (opció: -maxdepth 1):
72
Szimpla keresés Ha keresem a fonok.c fájlt, amely az aktuális könyvtár valamelyik alkönyvtárban van:
find -name fonok.c Lehetséges eredmény: ./c/fonok.c Keresés helye: find /usr -name abook
73
Keresés időbélyeg alapján A Linux háromféle időbélyeget tárol egy fájlról.
◦ mtime ◦ atime ◦ ctime
– modify time – access time – change time
– A fájl módosítása – A fájl olvasása – Az inode módosítása
PL: Három napnál régebben olvasott fájlok: find . -atime +3
74
Kapcsolók Rengeteg kapcsolója van (bővebben a manual-ban) -name név: adott nevű fájlok keresése -type fájltípus : Adott fájltípusú fájlokat keres (pl: d - mappa) -mtime [+/-]szam : a legutolsó módosítás ideje napokban -atime [+/-]szam : a legutolsó hozzáférés ideje szintén napokban -user userid : melyik felhasználó tulajdonában van a fájl -group csoportid : melyik csoporté a fájl -perm jogosultság : hozzáférési jogosultság (3db oktális számjegy) -size [+/-]szam[c] : a megadott méretnél nagyobb vagy kisebb fájlok keresése (a méret blokkokban értendő, a c módosító esetén viszont bájtokban) -a : ÉS kapcsolat a keresési feltételek között -o : VAGY kapcsolat a keresési feltételek között 75
Pl find . -name test.c -print az aktuális könyvtártól lefelé megkeresi az összes test.c állományt, és a nevüket kiírja a képernyőre.
Ha nem tudjuk a teljes nevet, csak azt hogy c-re végződik, akkor a
find . -name '*c' -print parancsot használva a find az aktuális könyvtártól lefelé megkeresi az összes c végződésű állományt, és a nevüket kiírja a képernyőre.
76
További példák find . -type d
könyvtárak keresése az aktuális mappában
find . -mtime +90
amelyek nem lettek módosítva az elmúlt 90 napban
find ~ -perm 777 -a -size 400
a home mappán belüli 400 blokknál nagyobb és mindenki által módosítható fájlok keresése
77
Könyvtárkezelő parancsok 78
pwd Kiírja az aktuális könyvtár abszolút elérési útját.
79
ls Kiírja a megadott (alapesetben aktuális) könyvtár által tartalmazott fájlokat.
ls [kapcsolók] [fájlnév]
80
Használható kapcsolók pl -l -a -d -R
: minden információ megjelenítése : megjeleníti azon állományokat is melyek neve ponttal kezdődik (rejtett fájlok kiírása) : az adott mappa információnak megjelenítése a tartalma helyett (csak mappán van értelme) : rekurzív listázás az adott mappától kezdve
Továbbiak a gyakorlati feladatokban, ill. a man-ban. A kapcsolók kombinálhatók is.
81
Példa ls
ls –l ls –la
ls -l linkproba/ ls -lR linkproba/
82
Átirányítás és csővezeték
Csővezeték (piping) Parancsok egymás után fűzésének eszköze.
A pipe jele a | (alt+w) csőkarakter, ami az egyik parancs outputját, a másik parancs inputjával köti össze azaz a második program az első által produkált eredményt tekinti bemenetként. (Ezt az építőjátékokhoz hasonlóan tovább is folytathatjuk. )
Ennek során egy ún. névtelen csővezeték jön létre, ami a folyamatok közötti kommunikációt hivatott lekezelni.
Használata:
program1|program2|program3| …
84
Példák Pl 1: ls -l > tmp
Pl 3: who | wc –l Az éppen aktív felhasználók számát adja meg.
sort tmp Egymás után fűzve: ls -l | sort
[1. who: kiírja az aktuális felhasználókat (soronként egyet), 2. a wc -l parancs megszámolja a sorok számát]
Pl 2: cat szoveg.txt | more
85
Átirányítás Minden egyes elindított folyamat esetén három alapértelmezett eszköz kerül hozzárendelésre a folyamathoz.
stdin: a szabványos bemenet, ahonnan a program a futás során a beérkező adatokat olvassa, stdout: a szabványos kimenet, ahova a program ír és stderr: a szabványos hibakimenet, ahol a program a futás során fellépő hibákra adott hibaüzeneteit írja. Alapesetben a stdin a billentyűzet, az stdout és stderr pedig a képernyő. Mind a bemenet, mind pedig a kimenet átirányítható egy tetszőleges állományba.
< állomány
: stdin átirányítása (a megadott állományból olvas)
> állomány
: stdout átirányítása (a megadott fájlba ír, létező állomány estén annak tartalma törlődik és felülíródik)
>> állomány
: stdout átirányítása (a megadott fájlba ír, létező állomány esetén annak végéhez hozzáfűzi)
2> állomány
: stderr átirányítása (a megadott fájlba írja a hibaüzenetet)
&> állomány
: stdout és stderr átirányítása ugyanabba a fájlba
2>&1
: a stderr-t ugyanoda irányítja, ahova a stdout irányítva lett
1>&2
: a stdout-ot ugyanoda irányítja, ahova a stderr irányítva lett
Példák Az átirányítás jelöléseit a program utolsó paramétere után kell feltüntetni. ls –al > lista.txt
a ls –al átirányítása a lista.txt állományba - ha a fájl eddig nem létezett, létrehozza - ha létezett, felülírja
ls >> lista.txt
a ls átirányítása a lista.txt állományba - ha a fájl eddig nem létezett, létrehozza - ha létezett, a végéhez hozzáfűzi
Több átirányítás esetén azok végrehajtása balról jobbra történik: sort < nevek.txt > lista.txt
a nevek.txt rendezése a lista.txt állományba
2> állomány : a megadott fájlba írja a hibaüzenetet A „sajat” állomány tartalmának kiírása. Az esetlegesen megjelenő hibaüzeneteket (pl. ha „sajat” egy könyvtár lenne, vagy ha nem lenne rá olvasási jogunk) a „hiba” állományba irányítjuk. cat sajat 2> hiba
A „pelda” nevű alkönyvtár létrehozása úgy, hogy ha már létezett ilyen nevű könyvtár, akkor ne jelenjen meg hibaüzenet a képernyőn. (a /dev/null speciális állomány minden bele írt adatot elnyel.) mkdir pelda 2> /dev/null
A „kell” és „tanulnom” könyvtárak listájának eltárolása a „feladat” állományba. Az esetlegesen keletkező hibaüzeneteket a „hiba” állományba irányítjuk. (Semmilyen látható kimenetet nem produkálunk.) ls kell tanulnom 2> hiba > feladat
Ugyanaz mint az előbb (fent), de most a „feladat” állományba irányítjuk a hibaüzeneteket is. ls kell tanulnom &> feladat (&> állomány
: stdout és stderr átirányítása ugyanabba a fájlba)
Pl (cső és átirányítás együtt) Feladat: olyan fájlt kell létrehozni, amiben egy létező (másik) állománybeli tartalom (gyümölcsnevek) alapján megmondjuk, hogy hány gyümölcs (=sor) van.
Létrehozunk egy állományt, ami ismétlődéseket tartalmaz (vagy már létezik). Ezt az uniq paranccsal kezelni tudjuk, ám mivel az csak rendezett állománnyal képes dolgozni, így először rendeznünk kell a tartalmat. cat gyumolcsok.txt | sort | uniq
Ha szeretnénk megszámoltatni a sorok számát: cat gyumolcsok.txt | sort | uniq | wc -l Az eredményt fájlba irányíthatjuk: cat gyumolcsok.txt | sort | uniq | wc -l > gyumolcsokszama.txt
cat > gyumolcsok.txt körte szilva barack alma szilva
Feladat: A „mostmivanbenne” állományba írja bele az aktuális dátumot és időt, majd az aktuális könyvtár listáját is!
date > mostmivanbenne ; ls >> mostmivanbenne (egy sorban több parancs: köztük pontosvessző van)
Ugyanaz máshogyan (ha kihasználjuk, hogy csoportképzés után annak a kimenete is átirányítható) (date ; ls) > mostmivanbenne