EXPLAINED: How to use "chmod" command [COMPLETE GUIDE]
Tartalomjegyzék:
- Linux fájljogosultságok
- A
chmod
használata - Szimbolikus (szöveges) módszer
- Numerikus módszer
- Referencia fájl használata
- Rekurzív módon változtassa meg a fájl engedélyét
- Működés a szimbolikus linkeken
- A fájljogosultságok megváltoztatása ömlesztve
- Következtetés
Linux alatt a fájlokhoz való hozzáférést a fájljogosultságokon, attribútumokon és tulajdonjogon keresztül kezelik. Ez biztosítja, hogy csak engedélyezett felhasználók és folyamatok férjenek hozzá fájlokhoz és könyvtárakhoz.
Ez az oktatóanyag ismerteti, hogyan lehet a
chmod
parancsot használni a fájlok és könyvtárak hozzáférési engedélyeinek megváltoztatásához.
Linux fájljogosultságok
Mielőtt továbbmennénk, magyarázza meg az alapvető Linux engedélyek modelljét.
Linuxban minden fájl társítva van egy tulajdonoshoz és egy csoporthoz, és engedély hozzáférési jogokkal rendelkezik három különböző felhasználói osztályra:
- A fájl tulajdonosa. A csoport tagjai.Mások (mindenki más).
A fájl tulajdonjoga megváltoztatható a
chown
és a
chgrp
parancsokkal.
Három fájljogosultságtípus vonatkozik minden osztályra:
- Az olvasási engedély.Az írás engedélye.A végrehajtási engedély.
Ez a koncepció lehetővé teszi annak meghatározását, hogy mely felhasználók használhatják a fájlt, olvassa el a fájlt vagy futtathatja azt.
A fájljogosultságok az
ls
paranccsal 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 a fájltípust mutatja. Ez lehet egy szokásos fájl (
-
), a (
d
) könyvtár, egy szimbolikus link (
l
), vagy bármilyen más típusú fájl.
A következő kilenc karakter a fájl engedélyét képviseli, három három karakterből áll, egyenként három karakterből áll. Az első hármas a tulajdonos engedélyét, a második a csoport engedélyét, az utolsó hármas pedig a többi jogosultságát mutatja. Az engedélyeknek a fájltípustól függően más jelentése lehet.
A fenti példában (
rw-r--r--
) azt jelenti, hogy a fájltulajdonos olvasási és írási engedélyeket (
rw-
), a csoport és mások csak olvasási engedélyeket (
r--
).
A három engedély hármasát felépíthetjük a következő karakterekből és eltérő effektusokkal rendelkeznek, attól függően, hogy fájlra vagy könyvtárra van-e állítva:
Az engedélyek hatása a fájlokra
Engedély | karakter | Jelentés a fájlban |
---|---|---|
Olvas |
-
|
A fájl nem olvasható. A fájl tartalma nem tekinthető meg. |
r
|
A fájl olvasható. | |
Ír |
-
|
A fájl nem módosítható. |
w
|
A fájl megváltoztatható vagy módosítható. | |
kivégez |
-
|
A fájl nem futtatható. |
x
|
A fájl végrehajtható. | |
s
|
Ha megtalálható a
user
hármasban, akkor beállítja a
setuid
bitet. Ha megtalálható a
group
hármasban, akkor beállítja a
setgid
bitjét. Ez azt is jelenti, hogy az
x
zászló be van állítva.
Ha a
|
|
S
|
Ugyanaz, mint az
s
de az
x
zászló nincs beállítva. Ezt a jelzőt ritkán használják a fájlokon. |
|
t
|
Ha megtalálják a
others
hármasban, akkor ez rögzíti a
sticky
darabot.
Ez azt is jelenti, hogy az
|
|
T
|
Ugyanaz, mint a
t
de az
x
jelző nincs beállítva. Ez a jelző haszontalan a fájlokon. |
Az engedélyek hatása a könyvtárakra (mappákra)
Linuxban a könyvtárak speciális fájltípusok, amelyek más fájlokat és könyvtárakat tartalmaznak.
Engedély | karakter | Jelentés a könyvtárban |
---|---|---|
Olvas |
-
|
A könyvtár tartalma nem jeleníthető meg. |
r
|
A könyvtár tartalma megjeleníthető.
(Például az
|
|
Ír |
-
|
A könyvtár tartalma nem módosítható. |
w
|
A könyvtár tartalma megváltoztatható.
(pl. nem hozhat létre új fájlokat, nem törölhet fájlokat.. stb.) |
|
kivégez |
-
|
A könyvtár nem változtatható meg. |
x
|
A könyvtár a
cd
segítségével navigálható. |
|
s
|
Ha megtalálható a
user
hármasban, akkor beállítja a
setuid
bitet. Ha megtalálható a
group
hármasban, akkor beállítja a
setgid
bitjét. Ez azt is jelenti, hogy az
x
zászló be van állítva. Ha a
setgid
jelzőt egy könyvtárra állítja, akkor a benne létrehozott új fájlok a könyvtárak csoportjának azonosítóját (GID) örökölnek, a fájlot létrehozó felhasználó elsődleges csoport azonosítója helyett.
|
|
S
|
Ugyanaz, mint az
s
de az
x
zászló nincs beállítva. Ez a zászló haszontalan a könyvtárakban. |
|
t
|
Ha megtalálják a
others
hármasban, akkor ez rögzíti a
sticky
darabot.
Ez azt is jelenti, hogy az
|
|
T
|
Ugyanaz, mint a
t
de az
x
jelző nincs beállítva. Ez a zászló haszontalan a könyvtárakban. |
A
chmod
használata
A
chmod
parancs a következő általános formában
chmod
:
chmod MODE FILE…
A
chmod
parancs lehetővé teszi a fájl engedélyének megváltoztatását szimbolikus vagy numerikus módban vagy referenciafájl segítségével. A módokat később részletesebben ismertetjük. A parancs argumentumokként elfogadhat egy vagy több fájlt és / vagy könyvtárat, amelyeket szóközzel elválasztanak.
Csak a root, a fájltulajdonos vagy a sudo jogosultságokkal rendelkező felhasználó változtathatja meg a fájl engedélyét. Különösen óvatosnak kell lennie a
chmod
használatakor, különösen, ha rekurzívan változtatja meg 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…
Az első zászlókészlet (
), a felhasználói zászlók, meghatározza, hogy a felhasználók melyik osztályba sorolják a fájl engedélyét.
-
u
- A fájl tulajdonosa.g
- A csoport tagjai.o
- Minden más felhasználó.a
- Minden felhasználó, azonos azugo
.
Ha a felhasználói jelző ki van hagyva, akkor az alapértelmezett
a
és az umask által beállított engedélyeket nem érinti.
A második zászlókészlet (
), a művelet jelzői, meghatározza, hogy az engedélyeket törölni, hozzáadni vagy beállítani:
-
-
Eltávolítja a megadott engedélyeket.+
Meghatározott engedélyeket ad hozzá.=
A jelenlegi engedélyeket a megadott engedélyekre változtatja. Ha a=
szimbólum után nem adunk meg engedélyeket, akkor a megadott felhasználói osztály minden engedélyét eltávolítják.
Az engedélyek (
perms…
) kifejezetten beállíthatók nulla vagy a következő betűk közül egyet vagy többet használva:
r
,
w
,
x
,
X
,
s
és
t
. Használjon egyetlen betűt az
u
,
g
és
o
készletből, ha az engedélyeket másolja az egyik felhasználói osztályba.
Ha egynél több felhasználói osztályhoz engedélyeket állít be (
), vesszővel (szóköz nélkül) válassza ki a szimbolikus módot.
Az alábbiakban bemutatunk néhány példát a
chmod
parancs szimbolikus módban történő használatáról:
-
Adjon engedélyt a csoport tagjai számára a fájl elolvasására, de ne írására és végrehajtására:
chmod g=r filename
Távolítsa el az összes felhasználó végrehajtási engedélyét:
chmod ax filename
Eltávolító módon távolítsa el a többi felhasználó számára az írási engedélyt:
chmod -R ow dirname
Távolítsa el az olvasási, írási és végrehajtási engedélyt minden felhasználó számára, kivéve a fájl tulajdonosát:
chmod og-rwx filename
Ugyanezt lehet elérni a következő forma használatával:
chmod og= filename
Adjon olvasási, írási és végrehajtási engedélyt a fájl tulajdonosának, olvasási engedélyeket adjon meg a fájlcsoportnak, és ne engedélyezze a többi felhasználót:
chmod u=rwx, g=r, o= filename
Adja hozzá a fájl tulajdonosának engedélyét a fájlcsoport tagjainak jogosultságaihoz:
chmod g+u filename
Adjon hozzá ragacsos darabot 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ályra (tulajdonos, csoport és minden más) engedélyt állíthat be egyszerre.
A
NUMBER
lehet 3 vagy 4 jegyű szám.
Három számjegyű szám használata esetén az első számjegy a fájl tulajdonosának engedélyét jelzi, a fájlcsoport második, az utolsó pedig a többi felhasználó engedélyeit.
Minden írási, olvasási és végrehajtási engedély a következő számértékkel rendelkezik:
-
r
(olvasás) = 4w
(írás) = 2x
(végrehajtás) = 1 nincs engedély = 0
Egy adott felhasználói osztály engedélyszámát az adott csoporthoz tartozó engedélyek értékének összege képviseli.
A fájl engedélyének numerikus módban történő megismeréséhez egyszerűen kiszámítja az összes felhasználói osztály összesített értékét. Például, ha olvasási, írási és végrehajtási engedélyt ad a fájl tulajdonosának, elolvassa és végrehajtja a fájlcsoport engedélyét, és csak az összes többi felhasználó számára engedélyezi az olvasást, akkor az alábbiak szerint járhat el:
- Tulajdonos: rwx = 4 + 2 + 1 = 7Grup: rx = 4 + 0 + 1 = 5Egyéb: rx = 4 + 0 + 0 = 4
A fenti módszer alkalmazásával eljutunk a
754
számhoz, amely a kívánt engedélyeket képviseli.
A
setuid
,
setgid
és
sticky bit
zászlók beállításához négy számjegyű számot kell használni.
A 4 számjegyből álló szám használatakor az első számjegy a következő jelentéssel bír:
- setuid = 4setgid = 2sticky = 1nem változás = 0
A következő három szám azonos jelentéssel bír, mint ha három számjegyből áll.
Ha az első szám 0, akkor kihagyható, és az üzemmód 3 számjeggyel ábrázolható. A
0755
numerikus mód ugyanaz, mint a
755
.
A numerikus mód kiszámításához használhat másik módszert is (bináris módszer), de ez egy kicsit bonyolultabb. A legtöbb felhasználó számára elegendő a 4, 2 és 1 numerikus mód számításának ismerete.
A
stat
engedélyével a numerikus jelöléssel ellenőrizheti a fájl engedélyeit:
stat -c "%a" filename
644
Néhány példa a
chmod
parancs numerikus módban történő használatára:
-
Adjon a fájl tulajdonosának olvasási és írási engedélyeket, és csak a csoporttagoknak és az összes többi felhasználónak az olvasási engedélyeket:
chmod 644 dirname
Adjon a fájl tulajdonosának olvasási, írási és végrehajtási engedélyeket, olvasási és végrehajtási engedélyeket a csoporttagok számára, és ne engedélyezze a többi felhasználót:
chmod 750 dirname
Adjon olvasási, írási és végrehajtási engedélyeket, valamint ragadós bitet egy adott könyvtárhoz:
chmod 1777 dirname
Rekurzív módon állítsa be az olvasási, írási és végrehajtási engedélyeket a fájltulajdonosnak, és ne engedélyezze az adott könyvtár összes többi felhasználóját:
chmod -R 700 dirname
Referencia fájl használata
A
--reference=ref_file
opció lehetővé teszi, hogy a fájl engedélyei megegyezjenek a megadott referenciafájl engedélyével (
ref_file
).
chmod --reference=REF_FILE FILE
Például a következő parancs hozzárendeli a
file1
engedélyét a
file2
file1
Rekurzív módon változtassa meg a fájl engedélyét
Az adott könyvtárban található összes fájl és könyvtár rekurzív működéséhez használja az
-R
(
--recursive
) opciót:
chmod -R MODE DIRECTORY
Például, ha a
/var/www
könyvtárban lévő összes fájl és alkönyvtár engedélyét
755
szeretné változtatni, akkor az a következő:
Működés a szimbolikus linkeken
A szimbolikus hivatkozásoknak mindig
777
engedélyük van.
Alapértelmezés szerint, amikor megváltoztatja a szinklin engedélyeit, a
chmod
megváltoztatja a linkre mutató fájl engedélyét.
chmod 755 symlink
Valószínű, hogy a céltulajdonos megváltoztatása helyett a „nem tud hozzáférni a„ linkhez ”: Az engedély megtagadva” hibát kap.
A hiba azért merül fel, mert a legtöbb Linux disztribúció alapértelmezés szerint védve van a hivatkozásokról, és a célfájlokon nem működhet. Ezt a beállítást a
/proc/sys/fs/protected_symlinks
adjuk meg.
1
azt jelenti, hogy engedélyezve és
0
letiltva. Javasoljuk, hogy ne kapcsolja ki a szinkronvédelmet.
A fájljogosultságok megváltoztatása ömlesztve
Időnként vannak olyan helyzetek, amikor a fájlok és a könyvtárak engedélyei tömegesen változnak.
A leggyakoribb forgatókönyv az, hogy a webhelyfájl engedélyét rekurzív módon
644
, a könyvtári engedélyeket pedig
755
.
A numerikus módszer használata:
find /var/www/my_website -type d -exec chmod 755 {} ;
find /var/www/my_website -type f -exec chmod 644 {} ;
A szimbolikus módszer használata:
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
find
parancs megkeresi a fájlokat és könyvtárakat a
/var/www/my_website
és továbbítja az összes megtalált fájlt és könyvtárat a
chmod
parancshoz az engedélyek beállításához.
Következtetés
A
chmod
parancs megváltoztatja a fájl jogosultságait. Az engedélyek szimbolikus vagy numerikus módban állíthatók be.
Ha többet szeretne tudni a
chmod
látogasson el a chmod man oldalára.
Chgrp parancs a linuxban (csoport módosítása)
Linuxban minden fájl társítva van egy tulajdonoshoz és egy csoporthoz, és rendelkezik olyan engedélyekkel, amelyek meghatározzák, hogy mely felhasználók olvashatják, írhatják vagy végrehajthatják a fájlt. A chgrpc parancs megváltoztatja az adott fájlok csoporttulajdonát.
Cp parancs a linuxban (fájlok másolása)
A cp parancssori segédprogram a fájlok és könyvtárak másolására Unix és Linux rendszereken.
Diff parancs a linuxban
A diff egy parancssori segédprogram, amely lehetővé teszi két fájl soronkénti összehasonlítását. Össze tudja hasonlítani a könyvtárak tartalmát.