Chmod parancs Linuxban (Fájljogosultságok)

author
13 minutes, 6 seconds Read

A Linuxban a fájlokhoz való hozzáférést a fájljogosultságok, attribútumok és a tulajdonjogok segítségével kezeljük. Ez biztosítja, hogy csak az engedélyezett felhasználók és folyamatok férhessenek hozzá a fájlokhoz és könyvtárakhoz.

Ez az útmutató azt mutatja be, hogyan használhatjuk a chmod parancsot a fájlok és könyvtárak hozzáférési jogosultságainak módosítására.

Linux File Permissions #

Mielőtt továbbmennénk, ismertessük a Linux alapvető jogosultsági modelljét.

A Linuxban minden fájlhoz tulajdonost és csoportot rendelünk, és három különböző felhasználói osztály számára rendelünk hozzá hozzáférési jogosultságokat:

  • A fájl tulajdonosa.
  • A csoport tagjai.
  • Mások (mindenki más).

A fájl tulajdonjogát a chownés chgrpparanccsal lehet megváltoztatni.

Az egyes osztályokhoz háromféle fájljogosultság tartozik:

  • Az olvasási jog.
  • Az írási jog.
  • A végrehajtási engedély.

Ez a fogalom lehetővé teszi annak meghatározását, hogy mely felhasználók számára engedélyezett a fájl olvasása, a fájlba való írás vagy a fájl végrehajtása.

A fájlengedélyek a lsparanccsal tekinthetők meg:

ls -l filename.txt
-rw-r--r-- 12 linuxize users 12.0K Apr 8 20:51 filename.txt|- | | | | | | || | | | | | +-----------> 7. Group| | | | | +-------------------> 6. Owner| | | | +--------------------------> 5. Alternate Access Method| | | +----------------------------> 4. Others Permissions| | +-------------------------------> 3. Group Permissions| +----------------------------------> 2. Owner Permissions+------------------------------------> 1. File Type

Az első karakter mutatja a fájltípust. Ez lehet hagyományos fájl (-), könyvtár (d), szimbolikus hivatkozás(l) vagy bármilyen más speciális fájltípus.

A következő kilenc karakter a fájljogosultságokat mutatja, három, egyenként három karakterből álló hármas. Az első triplett a tulajdonosi jogosultságokat, a második a csoportos jogosultságokat, az utolsó triplett pedig a mindenki más jogosultságokat mutatja. Az engedélyek a fájl típusától függően eltérő jelentéssel bírhatnak.

A fenti példában (rw-r--r--) azt jelenti, hogy a fájl tulajdonosának olvasási és írási engedélyei vannak (rw-), a csoportnak és a többieknek csak olvasási engedélyei (r--).

A három jogosultsági triplett mindegyike az alábbi karakterekből építhető fel, és különböző hatást vált ki, attól függően, hogy egy fájlra vagy egy könyvtárra van-e beállítva:

Az engedélyek hatása a fájlokra

Az engedély Karakter A fájlra vonatkozó jelentés
Elolvasás - A fájl nem olvasható. Nem tudja megtekinteni a fájl tartalmát.
r A fájl olvasható.
Write - A fájl nem módosítható vagy módosítható.
w A fájl módosítható vagy módosítható.
Végrehajtás - A fájl nem hajtható végre.
x A fájl végrehajtható.
s Ha a user triplában található, akkor a setuid bitet beállítja. Ha a group triplettben található, akkor a setgid bitet állítja be. Ez azt is jelenti, hogy a x jelző be van állítva.
Ha a setuid vagy a setgid jelző be van állítva egy futtatható fájlban, a fájl a fájl tulajdonosának és/vagy csoportjának jogosultságaival kerül végrehajtásra.
S Az s jelzővel megegyező, de a x jelző nincs beállítva. Ezt a jelzőt ritkán használják a fájlokban.
t Ha a others triplában található, akkor a sticky bitet állítja.
Ez azt is jelenti, hogy a x jelző be van állítva. Ez a flag haszontalan a fájlokon.
T Az, mint a t, de a x flag nincs beállítva. Ez a flag haszontalan a fájlokon.

A jogosultságok hatása a könyvtárakra (mappákra)

A Linuxban a könyvtárak olyan speciális fájltípusok, amelyek más fájlokat és könyvtárakat tartalmaznak.

Jogosultság Karakter Megjelenítés a könyvtárakon
Read - A könyvtár tartalma nem jeleníthető meg.
r A könyvtár tartalma megjeleníthető.
(pl. A könyvtáron belüli fájlok listázása a ls segítségével lehetséges.)
Write - A könyvtár tartalma nem módosítható.
w A könyvtár tartalma módosítható.
(pl. létrehozhat új fájlokat, törölhet fájlokat ..stb.)
Futtatás - A könyvtár nem módosítható.
x A könyvtárban a cd segítségével lehet navigálni.
s Ha a user triplában található, akkor a setuid bitet állítja be. Ha a group triplettben található, akkor a setgid bitet állítja be. Ez azt is jelenti, hogy a x jelző be van állítva. Ha a setgid flag be van állítva egy könyvtáron, a benne létrehozott új fájlok a könyvtár csoport azonosítóját (GID) öröklik a fájlt létrehozó felhasználó elsődleges csoport azonosítója helyett.
setuid nincs hatással a könyvtárakra.
S Az s-hez hasonló, de a x flag nincs beállítva. Ez a flag használhatatlan a könyvtárakon.
t Ha a others triplában található, akkor a sticky bitet állítja.
Ez azt is jelenti, hogy a x flag be van állítva. Ha a sticky bit be van állítva egy könyvtárban, akkor csak a fájl tulajdonosa, a könyvtár tulajdonosa vagy a rendszergazdai felhasználó törölheti vagy nevezheti át a könyvtárban lévő fájlokat.
T Az t-hoz hasonló, de a x flag nincs beállítva. Ez a jelző könyvtárak esetén használhatatlan.

A chmod #

használataA chmod parancs általános formája a következő:

chmod MODE FILE...

A chmod parancs lehetővé teszi egy fájl engedélyeinek módosítását szimbolikus vagy numerikus módban, illetve egy referenciafájl segítségével. A módokat a cikk későbbi részében részletesebben ismertetjük. A parancs egy vagy több, szóközzel elválasztott fájlt és/vagy könyvtárat fogadhat el argumentumként.

A fájl engedélyeit csak a root, a fájl tulajdonosa vagy a sudo jogosultságokkal rendelkező felhasználó módosíthatja. Legyen különösen óvatos a chmod használatakor, különösen, ha rekurzív módon módosítja az engedélyeket.

Szimbolikus (szöveges) módszer #

A chmod parancs szintaxisa a szimbolikus mód használatakor a következő formátumú:

chmod perms… FILE...

A zászlók első csoportja (), a users flags, meghatározza, hogy mely felhasználói osztályok engedélyei módosulnak a fájlhoz.

  • u – A fájl tulajdonosa.
  • g – A csoporthoz tartozó felhasználók.
  • o – Minden más felhasználó.
  • a – Minden felhasználó, megegyezik a ugo-vel.

Ha a users jelzőt elhagyjuk, az alapértelmezett a lesz, és az umask által beállított jogosultságokat nem érinti.

A zászlók második csoportja (), a műveleti zászlók határozzák meg, hogy a jogosultságokat el kell-e távolítani, hozzáadni vagy beállítani:

  • - A megadott jogosultságokat eltávolítja.
  • + A megadott jogosultságokat hozzáadja.
  • = A jelenlegi jogosultságokat a megadott jogosultságokra módosítja. Ha a = szimbólum után nem ad meg engedélyeket, akkor a megadott felhasználói osztály összes engedélyét eltávolítja.

A jogosultságok (perms...) explicit módon is beállíthatók a nulla vagy a következő betűk közül egy vagy több használatával: r, w, x, X, s és t. Használjon egyetlen betűt a u, g és o halmazból, amikor az egyik felhasználói osztályból egy másik felhasználói osztályba másolja a jogosultságokat.

Az egynél több felhasználói osztály () jogosultságainak beállításakor vesszővel (szóköz nélkül) válassza el a szimbolikus módokat.

Az alábbiakban néhány példa a chmod parancs szimbolikus módban történő használatára:

  • A csoport tagjainak engedélyt ad a fájl olvasására, de írásra és futtatásra nem:

    chmod g=r filename
  • Vonja meg a végrehajtási engedélyt minden felhasználó számára:

    chmod a-x filename
  • A többi felhasználó írási engedélyének visszavonása:

    chmod -R o-w dirname
  • A fájl tulajdonosának kivételével minden felhasználó olvasási, írási és végrehajtási engedélyének visszavonása:

    chmod og-rwx filename

    Ez a következő formában is megvalósítható:

    chmod og= filename
  • A fájl tulajdonosának olvasási, írási és végrehajtási engedélyt, a fájl csoportjának olvasási engedélyt, az összes többi felhasználónak pedig semmilyen engedélyt nem adhat:

    chmod u=rwx,g=r,o= filename
  • Adja hozzá a fájl tulajdonosának jogosultságait azokhoz a jogosultságokhoz, amelyekkel a fájl csoportjának tagjai rendelkeznek:

    chmod g+u filename
  • Adja hozzá a sticky bitet egy adott könyvtárhoz:

    chmod o+t dirname

Numerikus módszer #

A chmod parancs szintaxisa numerikus módszer használata esetén a következő formátumú:

chmod NUMBER FILE...

A numerikus mód használatakor mindhárom felhasználói osztály (tulajdonos, csoport és mindenki más) jogosultságait egyszerre állíthatja be.

A NUMBER lehet három- vagy négyjegyű szám.

Háromjegyű szám használata esetén az első számjegy a fájl tulajdonosának, a második a fájl csoportjának, az utolsó pedig az összes többi felhasználónak az engedélyeit jelöli.

Az egyes írási, olvasási és végrehajtási engedélyek a következő számértékkel rendelkeznek:

  • r (olvasás) = 4
  • w (írás) = 2
  • x (végrehajtás) = 1
  • nincs engedély = 0

Egy adott felhasználói osztály engedélyeinek számát az adott csoport engedélyeinek értékeinek összege jelenti.

A fájl jogosultságainak számszerű megállapításához egyszerűen számítsa ki az összes felhasználói osztályra vonatkozó összegeket. Ha például a fájl tulajdonosának olvasási, írási és végrehajtási engedélyt, a fájl csoportjának olvasási és végrehajtási engedélyt, az összes többi felhasználónak pedig csak olvasási engedélyt szeretne adni, akkor a következőket kell tennie:

  • Tulajdonos: rwx=4+2+1=7
  • Csoport: r-x=4+0+1=5
  • Mások: r-x=4+0+0+0=4

A fenti módszerrel a 754 számhoz jutunk, ami a kívánt jogosultságokat jelenti.

A setuid, setgid és sticky bit zászlók beállításához négyjegyű számot használunk.

A négyjegyű szám használatakor az első számjegy a következő jelentéssel bír:

  • setuid=4
  • setgid=2
  • sticky=1
  • no changes = 0

A következő három számjegy jelentése ugyanaz, mint a háromjegyű szám használatakor.

Ha az első számjegy 0, akkor elhagyható, és az üzemmód 3 számjeggyel ábrázolható. A numerikus mód 0755 ugyanaz, mint a 755.

A numerikus mód kiszámításához egy másik módszert is használhatunk (bináris módszer), de ez egy kicsit bonyolultabb. A legtöbb felhasználó számára elegendő, ha tudja, hogyan kell kiszámítani a numerikus módot a 4, 2 és 1 használatával.

A fájl jogosultságait numerikus jelölésben a statparanccsal ellenőrizheti:

stat -c "%a" filename
644

Itt van néhány példa arra, hogyan használhatja a chmod parancsot numerikus módban:

  • A fájl tulajdonosának olvasási és írási, a csoporttagoknak és az összes többi felhasználónak csak olvasási engedélyt ad:

    chmod 644 dirname
  • A fájl tulajdonosának olvasási, írási és végrehajtási, a csoporttagoknak olvasási és végrehajtási, az összes többi felhasználónak pedig semmilyen engedélyt:

    chmod 750 dirname
  • Egy adott könyvtárnak olvasási, írási és végrehajtási engedélyeket, valamint egy sticky bitet ad:

    chmod 1777 dirname
  • A fájl tulajdonosának olvasási, írási és végrehajtási engedélyeket ad, az összes többi felhasználónak pedig nem ad engedélyeket egy adott könyvtárhoz:

    chmod -R 700 dirname

Hivatkozási fájl használata #

A --reference=ref_file opció lehetővé teszi, hogy a fájl jogosultságai megegyezzenek a megadott hivatkozási fájl (ref_file) jogosultságaival.

chmod --reference=REF_FILE FILE

A következő parancs például a file1 engedélyeit a file2

chmod --reference=file1 file2

A fájl engedélyeinek rekurzív módosítása #

Az adott könyvtár alatti összes fájlra és könyvtárra történő rekurzív működéshez használja a -R (--recursive) opciót:

chmod -R MODE DIRECTORY

Például a /var/www könyvtár alatti összes fájl és alkönyvtár engedélyeinek 755-re történő módosításához a következőt kell használni:

chmod -R 755 /var/www

Szimbolikus hivatkozásokon való működés #

A szimbolikus hivatkozások mindig 777 engedélyekkel rendelkeznek.

Az alapértelmezés szerint a szimlinkek jogosultságainak megváltoztatásakor a chmod megváltoztatja a link által mutatott fájl jogosultságait.

chmod 755 symlink

Valószínűleg a cél tulajdonjogának megváltoztatása helyett egy “nem férhet hozzá a ‘szimlinkhez’: Permission denied” hiba.

A hiba azért fordul elő, mert a legtöbb Linux disztribúciónál a symlinkek alapértelmezés szerint védettek, és a célfájlokon nem lehet operálni. Ez az opció a /proc/sys/fs/protected_symlinks pontban van megadva. A 1 azt jelenti, hogy engedélyezve, a 0 pedig letiltva. Javasoljuk, hogy ne kapcsolja ki a symlinkek védelmét.

Fájljogosultságok tömeges módosítása #

Néha előfordulnak olyan helyzetek, amikor tömegesen kell megváltoztatni a fájlok és könyvtárak jogosultságait.

A leggyakoribb forgatókönyv az, hogy rekurzívan megváltoztatja a weboldal fájljának jogosultságait 644-re és a könyvtár jogosultságait 755-re.

A numerikus módszerrel:

find /var/www/my_website -type d -exec chmod 755 {} \;find /var/www/my_website -type f -exec chmod 644 {} \;

A szimbolikus módszerrel:

find /var/www/my_website -type d -exec chmod u=rwx,go=rx {} \;find /var/www/my_website -type f -exec chmod u=rw,go=r {} \;

A findparancs megkeresi a /var/www/my_website alatti fájlokat és könyvtárakat, és minden egyes talált fájlt és könyvtárat átad a chmod parancsnak az engedélyek beállításához.

Következtetés #

A chmod parancs megváltoztatja a fájl engedélyeit. Az engedélyek szimbolikus vagy numerikus módban is beállíthatók.

Az chmod parancsról bővebben a chmod manpage oldalon olvashat.

Similar Posts

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.