chmod

A Wikipédiából, a szabad enciklopédiából

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 | forrásszöveg szerkesztése]

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 | forrásszöveg szerkesztése]

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 | forrásszöveg szerkesztése]

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 | forrásszöveg szerkesztése]

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 | forrásszöveg szerkesztése]

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 olvasható 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).