Ebben a leckében a következő parancsokról lesz szó: chmod, file, ln, du
A Unix lehetőséget biztosít arra is, hogy felhasználói csoportok tagjai fájlokat megosszanak egymás között, és a közös fájlok lehetnek a csoport (és nem egyetlen felhasználó) tulajdonában.
Három féle fájlelérési jog létezik: olvasási (read), írási (write) és futtatási (execute).
Ezeket a jogokat három osztályba osztva adhatjuk meg: magunkra (user, owner), a csoportunkra (group) és mindenki másra (world, others) nézve.
woland> ls -lg -rw-r--r-- 1 csaky student 6242 Aug 28 1992 applied.rtf woland>Megjegyzés: Egyes Unix változatoknál (System V alapúak) elegendő csak a -l kapcsoló használata.
A legelső mező mutatja a fájlelérési jogokat. (Mezőkön egymástól szóközökkel elválasztott karaktersorozatokat értünk.) A harmadik a fájl tulajdonosát, a negyedik pedig azt, hogy a felhasználó milyen csoportba tartozik. Az utolsó mező pedig a fájlnév.
Tehát a fájl tulajdonosa egy csaky nevű felhasználó, aki a student csoportba tartozik, a "-rw-r--r--" pedig a jogokat jelenti a tulajdonos, a csoport, végül pedig mindenki más számára.
Az első karakter (”"-”") a fájl típusát jelöli. A "-" azt jelenti, hogy ez egy "sima”" fájl (nem könyvtár, stb.). A következő három karakter ”"rw-”" jelentése, hogy a tulajdonos (jelen esetben csaky) olvashatja és írhatja a fájlt, de nem futtathatja. Ez így van jól, mivel ez a fájl nem program, így nincs is nagyon értelme futtatni.
A következő három karakter, "r--", a csoportra vonatkozó jogokat definiálja. E szerint a student csoportba tartozó felhasználók olvashatják a fájlt, amint ezt a kis ”"r”" betű mutatja.
Az utolsó három karakter ”"r--”" jelentése pedig az, hogy az előbbiekben felsoroltakon (owner, group) kívül esők is olvashatják a fájlt.
Fontos itt megjegyezni, hogy az egyes fájlelérési jogok függnek annak a könyvtárnak az elérési jogától is, amelyben megtalálhatóak. Például, még ha egy fájl elérési joga "-rwxrwxrwx" (tehát mindenki mindent csinálhat vele), mások nem férhetnek hozzá, ha a könyvtár amiben van, tiltja az olvasási és futtatási jogokat. Tehát a legegyszerűbb módja annak, hogy fájljainkat mások számára hozzáférhetetlenné tegyük az, hogy a munkakönyvtárunk hozzáférési jogait ”"-rwx------”"-ra állítjuk: így senkinek sem lesz hozzáférése se a munkakönyvtárunkhoz, se pedig ahhoz ami benne van.
chmod [augo][+-][rwx] fájlnév...Lássuk, hogyan kell értelmezni egy ilyen szintaxis leírást! Az első szó (chmod) nyilván a parancs neve. Utána következnek a kapcsolók (lásd: első lecke!). A szintaxisban egyszerre felsorolják az összes lehetséges kapcsolót; a zárójelben lévő kapcsolók közül meg lehet adni egyszerre egyet vagy többet is. A fájlnév utáni három pont azt jelenti, hogy egy sorban több fájlnevet is megadhatunk, ilyenkor a Unix mindegyik megadott fájlra végrehajtja a parancsot.
Az [augo] kapcsolókkal írjuk elő, hogy kinek adjuk a jogot. Adhatunk jogokat a tulajdonosnak (u - user), a csoportnak (g - group), másoknak (o - others) vagy pedig mindenkinek egyszerre (a - all). A [+-] azt jelenti, hogy adhatunk (+) vagy elvehetünk (-) jogokat. Végül pedig, hogy olvasási (r - Read), írási (w - Write) vagy futtatási (eXecute) jogot adunk. Néhány példa:
chmod a+r applied.rtf - olvasási jog mindenki számára chmod +r applied.rtf - ugyanaz, mivel az alapértelmezés az ”"all”" chmod go-rwx applied.rtf - a tulajdonoson kívül senkinek semmi
Természetesen az igazi Unix buherátorok nem így változtatják meg az elérése jogokat, hanem egy szám megadásával. Például:
chmod 644 applied.rtfEnnek a parancsnak a hatására az applied.rtf nevű fájl elérési joga ”"-rw-r--r--”"-ra változik.
Ez a megadási mód sem bonyolult: az olvasási jog száma 4, az írásé 2, a futtatásé pedig 1. Ha ezeket összeadjuk, akkor megkapjuk a számot, amit be kell írnunk. Természetesen ez csak egyetlen szám, a jogokat pedig a parancsnak ennek a változatában mind három osztály számára be kell állítanunk. Tehát ” "rw-”" a tulajdonosnak az 4+2 = 6, ”"r--”" a csoportnak az 4 és ” "r--”" mindenki másnak az 4; együtt 644.
Lássunk egy példát:
woland> file * d2u.c: c program text keybind.c: c program text life: Mach-O executable life.c: c program text life.dat: ascii text life1.dat: ascii text slice.c: c program text trans.c: c program text unarj: directory woland>Ezen a könyvtáron látható, hogy egy programozó fájljait rejti, aki C-ben végzi munkáit. A life program, ami a life.c c-program fordítása, adatait valószínűleg a life.dat és a life1.dat fájlokból veszi, mivel ezek sima szöveget tartalmaznak.
lrwxrwxrwx 1 root 18 Dec 14 02:27 LocalApps -> /HD/NextStuff/Apps/@Ez az eddig számunkra teljesen ismeretlen dolog a link. A link arra jó, hogy egy fájlnak több neve legyen, esetenként külön könyvtárban. A fenti példában azt, hogy a fájl (esetünkben könyvtár) link, onnan tudható, hogy a nevében egy kis nyíl van és utána a hely, ahol a valódi fájl található. Tehát a LocalApps a /HD/NextStuff/Apps alteregója. Ezt a fajta linket szimbolikus (symbolic vagy soft) linknek nevezzük. (Ha az ls paranccsal nem hosszú listát kérünk, akkor csak a LocalApps nevet fogjuk látni).
A link másik fajtája a hard link, aminek bár funkciója ugyanaz, az operációs rendszer másképp kezeli. Ennél a fajtájú linknél nem lehet kideríteni (illetve nagyon nehezen) azt, hogy melyik fájlra mutat, és az eredeti fájl tulajdonosa lesz az új fájl tulajdonosa is.
Linkeket az ln paranccsal hozhatunk létre (a forrás- és célnév természetesen könyvtár is lehet):
ln [ -s ] forrásnév célnévAz ln kapcsolók nélkül hard linket készít, ha pedig megadjuk az ”"-s”" kapcsolót, akkor szimbolikus linket.
Például:
Hard link készítése:
woland> ls -l egy -rw-r--r-- 1 csaky student 12 Aug 5 14:20 egy woland> ln egy ketto woland> ls -lg egy ketto -rw-r--r-- 2 csaky student 12 Aug 5 14:20 egy -rw-r--r-- 2 csaky student 12 Aug 5 14:21 ketto
(Most már ezt is eláruljuk: a második mező jelenti a fájlra mutató linkek számát.)
Most az egy és a ketto ugyanaz a fájl - tehát, ha az egyiket módosítjuk a másik is módosul, mivel csak a név más, a fájl ugyanaz. Úgy is felfoghatjuk, hogy egy fájlnak egyszerre két neve is van.
Soft, avagy szimbolikus link készítése:
woland> ln -s egy ketto woland> ls -lg ketto lrwxrwxrwx 1 csaky student 12 Aug 5 14:25 ketto -> egy@Vegyük észre, hogy a fájlelérési jogok kezdő "-" jele most l betűre változott. Innen (is) látszik, hogy szimbolikus linkről van szó.
A linkek törlése természetesen a szokásos fájltörlés paranccsal (rm) végezhető. Törlés szempontjából döntő különbség van a hard linkek és a soft linkek között. 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 ugyan megmarad, de ha olvasni próbálunk a fájlból, akkor hibaüzenetet kapunk.
Mire jók a linkek? Például szeretnénk, hogy ugyanaz a fájl egyszerre több helyen is látható legyen, de mégse kelljen belőle annyi darab másolatot készíteni, ahány helyen szükség van rá. Egy egészen egyszerű alkalmazás: e tanfolyam szervezése során a jelentkezők e-mail címeit egy .addressbook nevű fájlban tartjuk. Ez a név (egy Unix buherátor számára) meglehetősen hosszú, de nem változtathatjuk meg, mert akkor nem találná meg a levelezőprogram. Mivel elég gyakran kell nézelődnünk ebben a fájlban, egy szimbolikus link segítségével létrehoztunk egy cim nevű linket; ezután valamennyi parancsban a cim nevet is használhatjuk a .addressbook helyett.
Szintaxisa:
du [ -a ] [ -s ] könyvtárnévPélda:
woland> du $HOME 10 /Users/student/csaky/.NeXT/services 2 /Users/student/csaky/.NeXT/Colors 1 /Users/student/csaky/.NeXT/.NextTrash .. .. .. 2 /Users/student/csaky/mail 6003 /Users/student/csaky/pin-ups 6798 /Users/student/csaky woland>
Az eredmény szerint csaky felhasználó elég sok helyet foglal: 6798 kilobájtot (a du kilobájtban adja az eredményt) azaz majdnem 7 megabájtot. Ennek nagyrészét azonban a pin-up alkönyvtárban található ízléses aktfotók teszik ki (ami nem feltétlenül része programozói munkájának).
Az ”"a”" kapcsolóval azt lehet beállítani, hogy a du minden fájlunkról adjon információt, ne csak a könyvtárakról. Az ”"s”" kapcsoló pedig arra való, hogy du csak egyetlen számot írjon ki, a teljes helyfoglalást.
woland> du -s $HOME 6798 woland>
************************************************************************* *= =* *= SZERZOI JOGOK =* *= =* *= Ez a dokumentum a Unix operacios rendszer es a szamitogepes =* *= halozatok elterjedeset kivanja elosegiteni, ezert dijmentesen =* *= terjesztheto. Nem szabad azonban a terjesztes soran a szoveget =* *= megvaltoztatni, barmilyen modon megcsonkitani es a szerzoi =* *= jogokra vonatkozo megjegyzest eltavolitani! Sem a dokumentum, =* *= sem annak barmely resze nem hasznalhato fel segedanyagkent vagy =* *= tankonyvkent profitorientalt intezmenyekben vagy tanfolyamokon, =* *= a szerzok elozetes irasbeli engedelye nelkul! =* *= =* *= (C) Csaky Istvan es Mork Peter Miskolc, 1994. januar 19 =* *= =* *************************************************************************