Jogosultságokról bővebben
Emlékeztető: rwxrwxrwx, r=4, w=2, x=1
chmod parancs
"Jelölések"
- u - user
- g - group
- o - other
- a - all
- + - jog hozzáadása
- - - jog elvétele
- = - direkt megadása a jogoknak
Lehetőségek
-
chmod u-w alma
chmod g+wx alma
chmod u+x,g-x alma
-
chmod g=rwx alma
chmod a=r alma
chmod u=rwx,g=rx alma
-
chmod 644 alma
chmod 523 alma
Rekurzív jogmódosítás: '-R' opció
Három további attribútum:
- sticky-bit
- jele: 't'
- Futattható file esetén, azt jelenti, hogy a program terminálása után a rendszer megpróbálja a programot a memóriában tartani. Régen volt jelentősége, ma már az op.rendszerek alapból végeznek optimalizálást (damand paging), illetve a fizikai memóra mérete is jóval nagyobb.
- Könyvtár esetén azt jelenti, hogy hiába van 'w' jogom az egész könyvtárra, csak a saját tulajdonomban lévő fileokat törölhetem/módosíthatom.
- set-UID, set-GID
- Csak futtatható program esetén van értelme haszálni, de scriptre nem lehet!
- A jelentésük az, hogy a futó program a file tulajdonos, illetve a csoport jogaival fog futni, függetlenül attól, hogy ki indította el. Fontos, hogy ez csak a program futásának idejére lépnek érvénybe ezek a "módosítások"
- Jó példa: passwd program (manapság már nem így oldják meg)
touch f1
chmod u=rwxs,g=rx,o= f1 # set-UID (figyeljük meg az "o= " formát)
chmod 4750 f1 # ugyanaz, mint a fenti
-rwsr-x--- 1 spala progterv 0 2006-02-10 18:53 f1
touch f2
chmod g=srwx f2 # set-GID
chmod 2xxx f2
-rw-rwsr-- 1 spala progterv 0 2006-02-10 18:58 f2
rm f1; touch f1
chmod 6750 alma -> set-UID és set-GID
-rwsr-s--- 1 spala progterv 0 2006-02-10 19:18 f1
umask
egy újonnan létrehozott filenak alapból milyen jogok legyenek beállítva
0022 : az első jegy a set-UID,set-GID, az utolsó 3 pedig a user/group/other jogok
Számolás: 777 - 022 = 755 ("Hivatalosan": igazi_mask = mask & 0777)
Az 'x' jog sosem kerül beállításra!
umask -S
Linkek
Link: Több névvel hivatkozunk ugyanarra
Softlink (szimbolikus link, symlink)
- egy kis file, ami úgy viselkedik mint egy mutató (hivatkozás)
- olyan, mint egy parancsikon
- bármit csinálunk vele, a kernel automatikusan az eredeti fileon hajtja végre, kivéve pl a törlést
- bármire létre lehet hozni
- két filerendszer között is
- directoryk között
- az eredeti file jogai számítanak
Hardlink
- az eredeti és a link megkülönböztethetetlen -> ugyanaz az inode-szám tartozik mindkettőhöz
- könyvtárra nem lehet
- filerendszerek között nem lehet
Illusztárció: Symlink és hardlink
ln parancs
ln [-s] letezo_file uj_file
I/O átirányítás
Néha szeretnénk azt megcsinálni, hogy egy program kimenetét egy file-ba vagy egy másik program bemenetére irányítsuk.
Bevezetés
cat ('-n' - minden sort számoz, '-b' - csak a nemüres sorokat)
more (csak lefele, '+num' - kezdő sor)
less (előre/hátra) parancsok
Standard file-leírók
- stdin (0)
- stdout (1)
- stderr (2)
- 3-tól 9-ig szabadon használhatók
Kimenet átirányítása
ls -l > lista
ls -l /etc >> lista
cat test1 test2 > test3
Vigyázzunk, a 'célállomány' tartalmát a shell törli még mielőtt végrehajtaná a parancsot!! pl. sort f1 > f1 NE!!!
A legtöbb shellben van védelmi mehanizmus, bash-ban: noclobber. A .bashrc állományba helyezzük el a következő sort: 'set -o noclobber'
Bemenet átirányítása
parancs < bemenet
mail spala@mail.inf.elte.hu < to_do.txt
Hibacsatorna átirányítása
parancs 2> error.log
rm -r d1 2> /dev/null
parancs <bemenet >>kimenet 2>hiba.log
Egyéb lehetőségek
ls >dirlist 2>&1
ls 2>&1 >dirlist
Fontos a sorrend!
Az első esetben először az stdout-ot állítja át a dirlist állományra, utána az stderr-t az stdout-ra, azaz a dirlist-re. A második esetben először átállítja az stderr-t a kimenetre (képernyő), aztán az stdout-ot átirányítja a dirlist állományra. Azaz a hibaüzenetek a képernyőn jelennek meg, a többi pedig a dirlist állományba kerül.
echo "Ez egy hibaüzenet!" 1>&2
echo "Ez egy hibaüzenet!" >&2
Ugyanaz a kettő!
Átvezetés
ls -l > tmpfile
more < tmpfile
[nézelődés]
rm tmpfile