chmod
A chmod
parancs (change mode rövidítésből jön) egy shell utasítás és rendszerhívás. Arra használjuk, hogy megadjuk, megváltoztassuk az állományok hozzáférési jogait, többféle módon, például karakteres kapcsolókkal (r, w stb.), vagy oktálisan (számjegyekkel).
Történet
[szerkesztés]A chmod parancs először az AT&T Unix első verziójában jelent meg, és azóta is használják.
Használata
[szerkesztés]A chmod specifikációja:
$ chmod [options] mode[,mode] file1 [file2 ...]
Ahhoz, hogy egy állománynak lássuk a jelenlegi hozzáférési jogait használjuk a következő parancsot:
$ ls -l file
Referencia | Osztály | Leírás |
---|---|---|
u | felhasználó - user | az állomány tulajdonosa |
g | csoport - group | azok a felhasználok kik részei a csoportnak |
o | más - other | azok a felhasználok kik nem tartoznak az előbbi kettő közé (beleértve a másodlagos csoportokat is) |
a | mindenki - all | az összes fenti három egyben, azaz ugo |
Ahhoz, hogy jogokat rendeljünk vagy vonjunk el a következő operátorokat használjuk:
Operátor | Leírás |
---|---|
+ | hozzáad egy jogot a megadott felhasználót, csoportot |
- | eltávolítja a jogot a megadott felhasználót, csoportot |
= | a megadott jogokkal felruházza az adott felhasználót, csoportot |
A jogok különböző betűkkel vannak jelölve:
Mód | Neve | Leírás |
---|---|---|
r | read | olvasási jog |
w | write | írási jog |
x | execute | végrehajtási jog |
X | special execute | végrehajtási jog |
s | setuid/gid | tulajdonos, vagy csoport váltási jog |
t | sticky | ragadós bit, a fájlok eltávolításának joga |
E három betű kombinációjaként adhatjuk meg a jogokat.
Példák
[szerkesztés]Például adjunk olvasás és írás jogot a felhasználónak és a csoportjának.
$ chmod ug+rw pelda $ ls -ld pelda drw-rw---- 2 unixguy usergroup 08 Jun 17 17:53 pelda
A következő példa eltávolítja mindenkitől az összes jogot (olvasás, írás, végrehajtás).
$ chmod a-rwx pelda $ ls -l pelda ---------- 2 unixguy usergroup 08 Jun 17 17:53 pelda
Az alábbi példában a pelda nevű állományra nem adunk csak végrehajtási jogot.
Lássuk milyen jogaink voltak:
$ ls -ld pelda drw-rw---- 2 unixguy usergroup 08 Jun 17 17:53 pelda $ chmod ug=rx pelda $ ls -ld pelda dr-xr-x--- 2 unixguy usergroup 08 Jun 17 17:53 pelda
Számok segítségével
[szerkesztés]A chmod parancs elfogadja a jogok megadását számokkal is, ez egy három vagy négyjegyű szám, melynek számjegyei nyolcas-számrendszerbeli számok (ennek jelölésére használjuk az első nulla számjegyet). Figyeljük meg az alábbi példákat:
$ chmod 0664 pelda
$ chmod 664 pelda
vagy
$ chmod +r,-x,ug+w pelda
Parancssor példák
[szerkesztés]Parancs | magyarázat |
---|---|
chmod a+r fajl | olvasás jog mindenkinek |
chmod a-x fajl | végrehajtási jog eltávolítva mindenkitől |
chmod u=rw,go= fajl | olvasás és írás jog a felhasználónak, a csoporttól és a többi felhasználótól eltiltva minden |
chmod +rw fajl | olvasás és írásjogot adtunk mindenkinek, érdemes azonban az a (all=mindenki) használata, mivel nem minden rendszer esetén működik enélkül (pl. chmod a+rw file). |
chmod -R u+w,go-w docs/ | megváltoztatja a docs könyvtár összes állományának a jogait, úgy, hogy ezek tartalma írható lesz a felhasználónak, a csoporttól pedig elveszi az írás jogot. |
chmod 0 file | eltávolítja az összes jogot mindenkitől |
chmod 664 file | olvasás és írás jogot ad a felhasználónak, és a csoportnak, a többinek pedig csak olvasás jogot. |
chmod 0755 file | ekvivalens a u=rwx (4+2+1),go=rx (4+1 & 4+1). A 0 nem ad jogokat. |
chmod 4755 file | A 4 speciális beállítás set user ID a többi pedig ekvivalens a u=rwx (4+2+1),go=rx (4+1 & 4+1). |
find path/ -type d -exec chmod a-x {} \; | eltávolítja a végrehajtásjogot az összes könyvtártól (ha '-type f'-et használunk akkor az állományokra vonatkozik). |