Příkaz Linuxu ke změně oprávnění k souboru nebo adresáři je chmod, který rádi čteme jako režim změny souboru. chmod má dva provozní režimy:
- symbolický režim
- numerický/osmičkový režim
Chcete-li změnit oprávnění pomocí příkazu Linux chmod, musíme dodržovat určitou syntaxi a pravidla. Jak jsme diskutovali výše, můžeme změnit oprávnění pomocí numerického a abecedního způsobu, zde jsem vysvětlil oba způsoby se všemi triky.
Abecední způsob
Chcete-li použít tuto metodu, musíte si zapamatovat níže uvedená pravidla a abecedy pro správné použití. Chcete-li změnit oprávnění uživatele, musíte použít abecedu „u “. Podobně jako u skupiny „g “ a pro ostatní je to „o “.
Stejně jako Uživatel, Skupina a Ostatní si musíme pamatovat některé abecedy, abychom udělili oprávnění ke čtení, zápisu a spouštění Stejně jako u oprávnění ke čtení musíte použít abecedu „r “, pro Napište „w “ a pro Execute je to „x “.
Vzorec pro přidělování oprávnění pomocí příkazu chmod je tedy uveden níže:
- u – uživatel
- g – Skupina
- o – Ostatní
- r – Číst
- w – Napište
- x – Provést
Například, pokud chcete udělit oprávnění ke čtení a zápisu uživateli/vlastníkovi a oprávnění ke čtení skupině a ostatním pomocí abecedy, příkaz by byl:
# chmod u+rw,g+r,o+r file_name
Číselná cesta
Chcete-li použít tuto metodu, musíte si pamatovat níže uvedená Pravidla a čísla pro správné použití.
- 4 – Udělit oprávnění ke čtení
- 2 – Udělit oprávnění k zápisu
- 1 – Udělit oprávnění k provedení
Pokud například chcete udělit oprávnění ke čtení a zápisu uživateli/vlastníkovi a oprávnění ke čtení skupině a ostatním pomocí číselného způsobu, výpočet příkazu by byl:
4+2 =6 :Toto přidá oprávnění ke čtení a zápisu uživateli/vlastníkovi.
4 :přidá oprávnění číst skupině.
4 :přidá oprávnění číst k ostatním.
Příkaz by tedy vypadal takto:
# chmod 644 filename
Oprávnění libovolného souboru můžete zkontrolovat pomocí níže uvedeného příkazu:
# ls -l file.txt -rw-rw-r-- 1 geeklab geeklab 0 Feb 20 06:16 file.txt
A pomocí níže uvedeného příkazu zkontrolujte oprávnění adresáře:
# ls -ld data/ drwxrwxr-x 2 geeklab geeklab 4096 Feb 20 06:18 data/
Nyní je zde otázka – jak zjistit, jaká oprávnění byla přiřazena souboru nebo adresáři. je to docela jednoduché. Výše jsem uvedl dva příklady. Nyní pojďme identifikovat oprávnění souboru.txt. Pokud si všimnete, že vlastnosti souboru začínají „-rw-rw-r–“. Zde můžeme určit, jaké oprávnění je souboru.txt přiděleno.
Sekce oprávnění je rozdělena na 10 bitů, z nichž
„– ” :První bit je zodpovědný za identifikaci, zda se jedná o soubor, adresář nebo symbolický odkaz. Viz níže uvedené symboly:
Důležité symboly:
- – :Oprávnění přiřazené k souboru
- d :Oprávnění přidělené adresáři
- l :Oprávnění přidělené symbolickému odkazu
- 2., 3., 4. bit jsou pro povolení vlastníka.
- 5., 6., 7. bit jsou pro povolení skupiny.
- 8., 9., 10. bit jsou pro povolení ostatních.
Chcete-li udělit oprávnění k libovolnému souboru/adresáři, musíte použít „+ “Symbol. Chcete-li odebrat oprávnění z jakéhokoli souboru/adresáře, musíte použít „– “ Symbol.
Příklady použití příkazu chmod
Přiřadit oprávnění k souboru
Zde mám soubor s názvem soubor.txt. Udělme oprávnění ke čtení a zápisu uživateli/vlastníkovi pomocí příkazu chmod.
$ chmod u+rw file.txt
$ ls -l file.txt -rw------- 1 geeklab geeklab 0 Feb 20 06:16 file.txt
Numerickým způsobem použijte níže uvedený příkaz:
$ chmod 600 file.txt
Přiřadit oprávnění k adresáři
Níže uvedený příkaz lze použít k udělení oprávnění k adresáři. Zde mám adresář s názvem data. Dejme tedy úplné oprávnění (čtení, zápis, spouštění) uživateli/vlastníkovi. Viz příkaz níže.
$ chmod u+rwx data/
$ ls -ld data/ drwx------ 2 geeklab geeklab 4096 Feb 20 06:18 data/
Číselný způsob:
$ chmod 700 data/
Odebrat oprávnění ze souboru/adresáře
Odeberte oprávnění ze souboru/adresáře pomocí níže uvedeného příkazu Linux chmod. Zde odebírám oprávnění ke čtení a zápisu uživateli/vlastníkovi.
$ chmod u-rw file.txt
$ ls -l file.txt ----rw-r-- 1 geeklab geeklab 0 Feb 20 07:18 file.txt
Dejte oprávnění všem
Pomocí níže uvedeného příkazu můžete udělit oprávnění všem. Zde uděluji všem plné oprávnění k přístupu k souboru.txt. Existují dva způsoby, jak udělat totéž.
Metoda 1
$ chmod a+rwx file.txt
$ ls -l file.txt -rwxrwxrwx 1 geeklab geeklab 0 Feb 20 06:44 file.txt
Metoda 2
Můžete také použít níže uvedený příkaz chmod pro Linux.
$ chmod ugo+rwx file.txt
$ ls -l file.txt -rwxrwxrwx 1 geeklab geeklab 0 Feb 20 06:44 file.txt
Číselná cesta :
$ chmod 777 file.txt
Přidělte různá oprávnění uživatelům, skupinám a ostatním pomocí jediného příkazu Linux chmod
Zde odebírám oprávnění ke spouštění od uživatele/vlastníka a přidávám oprávnění ke spouštění skupině a ostatním pomocí jediného příkazu.
$ chmod u-x,g+x,o+x file.txt
$ ls -l file.txt -rw-rwxrwx 1 geeklab geeklab 0 Feb 20 09:40 file.txt
Přidělte oprávnění souboru odkazem na jakýkoli jiný soubor
Oprávnění můžete kopírovat z jednoho souboru do druhého. Zde mám soubor s názvem a1.txt, jehož oprávnění je něco jako „-rw-r–r– “.
$ ls -l a1.txt -rw-r--r-- 1 geeklab geeklab 0 Feb 20 07:21 a1.txt
Nyní chci přidělit stejné oprávnění mému jinému souboru s názvem a2.txt. Můžete tak učinit pomocí příkazu Linux chmod s argumentem –reference. Viz příkaz níže.
$ chmod --reference=a1.txt a2.txt
$ ls -l a2.txt -rw-r--r-- 1 geeklab geeklab 0 Feb 20 07:22 a2.txt
Přidělte oprávnění rekurzivně
Mám adresář s názvem data, ve kterém mám tolik souborů a chci jim udělit oprávnění všechny najednou místo ručně jeden po druhém. K tomu můžete použít linuxový příkaz chmod s argumentem -R. To vám pomůže udělit oprávnění rekurzivně.
$ chmod -R ugo+rwx data/
Číselná cesta :
$ chmod -R 777 data/
Přidělte oprávnění podrobnému výstupu
Výstup můžete získat po přiřazení oprávnění libovolným souborům/adresářům pomocí příkazu Linux chmod s argumentem -v. Viz příkaz níže.
$ chmod -v 777 file.txt mode of 'file.txt' changed from 0664 (rw-rw-r--) to 0777 (rwxrwxrwx)
Přiřadit oprávnění výstupu (Tento příkaz poskytne výstup pouze v případě, že dojde k nějakým změnám)
Příkaz chmod s argumentem -c také dělá to samé jako podrobný výstup (tj. -v). Ale zobrazí výstup pouze v případě, že dojde ke změnám v oprávnění. Pokud přidělujete stejné oprávnění, nezobrazí se žádný výstup.
$ chmod -c 755 file.txt mode of 'file.txt' changed from 0777 (rwxrwxrwx) to 0755 (rwxr-xr-x)
Přidělování oprávnění ignorováním/řešením chyb
Chcete-li se vyhnout chybám nebo opravit chyby při přidělování oprávnění, můžete použít příkaz Linux chmod s argumentem -f. Viz příkaz níže.
$ chmod -f 755 file.txt
Pro nápovědu příkazu chmod
Pro příkaz chmod více možností a argumentů můžete použít níže uvedený příkaz.
$ chmod --help Usage: chmod [OPTION]... MODE[,MODE]... FILE... or: chmod [OPTION]... OCTAL-MODE FILE... or: chmod [OPTION]... --reference=RFILE FILE... Change the mode of each FILE to MODE. With --reference, change the mode of each FILE to that of RFILE. -c, --changes like verbose but report only when a change is made -f, --silent, --quiet suppress most error messages -v, --verbose output a diagnostic for every file processed --no-preserve-root do not treat '/' specially (the default) --preserve-root fail to operate recursively on '/' --reference=RFILE use RFILE's mode instead of MODE values -R, --recursive change files and directories recursively --help display this help and exit --version output version information and exit Each MODE is of the form '[ugoa]*([-+=]([rwxXst]*|[ugo]))+|[-+=][0-7]+'. GNU coreutils online help: [http://www.gnu.org/software/coreutils/] Full documentation at: [http://www.gnu.org/software/coreutils/chmod] or available locally via: info '(coreutils) chmod invocation'
Zkontrolujte verzi příkazu chmod
Pro kontrolu verze nainstalovaného příkazu chmod můžete použít linuxový příkaz chmod s argumentem –version.
$ chmod --version chmod (GNU coreutils) 8.25 Copyright (C) 2016 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later [http://gnu.org/licenses/gpl.html]. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by David MacKenzie and Jim Meyering.