chmod | |
---|---|
Typ | program pro změnu oprávnění pro soubory a adresáře |
Vývojář | Projekt GNU |
Zapsáno v | C |
Operační systém | Unixové |
První vydání | 3. listopadu 1971 |
Nejnovější verze | 8.5 (23. dubna 2010) |
Licence | GPLv3+ |
webová stránka | gnu.org |
chmod (z angličtiny change mode ) je příkaz pro změnu oprávnění k souborům a adresářům používaný v operačních systémech podobných Unixu . Zahrnuto ve standardu POSIX v Coreutils .
Syntax:
chmod [možnosti] režim[,režim] soubor1 [soubor2 ...]Možnosti:
Příkaz nikdy nemění oprávnění pro symbolické odkazy ; pro každý symbolický odkaz zadaný na příkazovém řádku však změní oprávnění přidruženého souboru. Příkaz ignoruje symbolické odkazy, na které narazí během rekurzivního zpracování adresářů.
Argument oprávnění k příkazu chmod lze zapsat ve dvou formátech: číselný a znakový.
Práva jsou zapsána na jednom řádku pro tři typy uživatelů najednou:
V číselné podobě se nastavují absolutní práva pro soubor nebo adresář, v symbolické podobě lze nastavit jednotlivá práva pro různé typy uživatelů.
Příklad: číselně nastavte oprávnění na rwxr-xr-x:
chmod 755 název souboru
Příklad - hodnota vpravo "755"majitel | Skupina | odpočinek | |
---|---|---|---|
osmičková hodnota | 7 | 5 | 5 |
znakový zápis | rwx | rx | rx |
typové označení uživatele | u | G | Ó |
Práva "755" jsou tedy zapsána v symbolické podobě jako "rwxr-xr-x". Zároveň, abychom pochopili podstatu nastavování práv v unixových systémech, je užitečné znát reprezentaci čísel v binární číselné soustavě .
Tři možnosti zápisu uživatelských právbinární | osmičkový | symbolický | oprávnění k souboru | adresářová práva |
---|---|---|---|---|
000 | 0 | --- | Ne | Ne |
001 | jeden | --X | výkon | čtení vlastností souboru |
010 | 2 | -w- | vstup | Ne |
011 | 3 | -šx | záznam a provedení | všechno kromě získávání názvů souborů |
100 | čtyři | r-- | čtení | čtení názvů souborů |
101 | 5 | rx | čtení a provádění | přístup pro čtení k souborům/jejich vlastnostem |
110 | 6 | rw- | číst a psát | čtení názvů souborů |
111 | 7 | rwx | všechna práva | všechna práva |
Některá oprávnění dávají smysl pouze v kombinaci s jinými. Z prvních čtyř položek (neudělujících právo číst soubor) se pro soubory obvykle používá pouze „---“, tedy úplné odepření přístupu k souboru pro tento typ uživatele. Pro adresáře z celého seznamu se obvykle používají pouze 0, 5 a 7 – zakázat, číst a spouštět a plný přístup.
Sečtením těchto kódů pro tři typy uživatelů získáte číselný nebo symbolický záznam. Například chmod 444 {název_souboru} : 400+40+4=444 - každý má přístup pouze pro čtení (identický s "r--r--r--").
Kromě standardních oprávnění 'rwx' ovládá příkaz chmod také bity SGID, SUID a T. Pokud jsou nastaveny atributy SUID nebo SGID, lze soubor spustit s oprávněními vlastníka souboru nebo skupiny.
Pro SUID je váha 4000 a pro SGID je 2000. Tyto atributy mají smysl, když je nastaven odpovídající prováděcí bit, a jsou označeny písmenem „s“ v symbolickém zápisu: „rw s rwxrwx“ a „rwxrw s rwx “, resp.
Příklad: chmod 4555 {název souboru} - každý má právo číst a spouštět, ale soubor bude spuštěn ke spuštění s právy vlastníka.
Nastavení SGID pro adresář způsobí, že každý nově vytvořený soubor bude patřit do stejné skupiny jako samotný adresář, nikoli do primární skupiny vlastníka, jak je tomu ve výchozím nastavení. SUID pro adresář nemá smysl [1] .
sticky bit nebo příznak omezeného mazání (t-bit) se používá pouze s adresáři. Pokud není t-bit pro adresář nastaven, soubor v tomto adresáři může smazat (přejmenovat) kterýkoli uživatel s oprávněním pro zápis do tohoto adresáře. Nastavením t-bitu na adresář změníme toto pravidlo tak, že smazat (přejmenovat) soubor může pouze vlastník tohoto souboru. Po výše uvedeném kódování má t-bit váhu 1000.
Poznámka: Oprávnění k zápisu (w) dává uživateli možnost zapisovat nebo upravovat soubor, zatímco oprávnění k zápisu do adresáře dává možnost vytvářet nové soubory nebo mazat soubory z tohoto adresáře. Pokud je adresář zapisovatelný (w), pak soubor v tomto adresáři může být smazán, i když soubor nemá oprávnění k zápisu . (Podle konceptu souborového systému POSIX).
V symbolické podobě vám použití příkazu umožňuje flexibilněji přidávat, nastavovat nebo odebírat oprávnění k souborům nebo adresářům:
$ chmod [odkazy][operátor][režimy] soubor ...Reference definují uživatele, jejichž práva budou změněna. Odkazy jsou definovány jedním nebo více písmeny:
Odkaz | třída | Popis |
---|---|---|
u | uživatel | Vlastník souboru |
G | skupina | Uživatelé ve skupině vlastníků souboru |
Ó | ostatní | Ostatní uživatelé |
A | Všechno | Všichni uživatelé (nebo ugo) |
Operátor definuje operaci, kterou chmod provede:
operátor | Popis |
---|---|
+ | přidat určitá oprávnění |
- | odebrat určitá práva |
= | nastavit určitá oprávnění |
Režimy definují, která oprávnění budou nastavena, přidána nebo odebrána:
režimu | název | Popis |
---|---|---|
r | číst | čtení obsahu souboru nebo adresáře |
w | napsat | zápisu do souboru nebo adresáře |
X | vykonat | spuštění souboru nebo čtení obsahu adresáře |
X | speciální provedení | spustit, pokud je soubor adresář nebo již má oprávnění ke spuštění pro některého uživatele |
s | setuid/gid | nastavené atributy SUID nebo SGID umožňují spustit soubor ke spuštění s právy vlastníka souboru nebo skupiny, resp. |
t | lepkavý | nastavením t-bitu na adresář změníme toto pravidlo tak, že smazat soubor může pouze vlastník tohoto souboru |
Nastavte oprávnění "rwxr-xr-x" (0755) pro soubor:
chmod u=rwx,g=rx,o=rx název souboruNastavte oprávnění ke spouštění pro vlastníka souboru, odeberte oprávnění ke spouštění ze skupiny, odeberte oprávnění k zápisu a spouštění od ostatních uživatelů:
chmod u+x,gx,o-wx název souboruNastavte rekurzivně čtení oprávnění pro všechny uživatele:
chmod -R a+r adresářRekurzivně odstraňte atributy SUID a SGID:
chmod -R us, adresář gsVýchozí hodnoty jsou:
Hodnoty se liší pro soubory a adresáře, protože příznak „execute“ ovlivňuje soubory a adresáře odlišně. U spustitelných souborů „execute“ znamená jejich spouštění, u adresářů právo číst soubor (pokud je v něm právo čtení) a jeho atributy souborů se známým názvem (bez práva číst nemůžete názvy souborů v adresáři).
Následující příkaz rekurzivně aplikuje pravidla na všechny soubory v adresáři "/home/test" a také na všechny soubory ve všech podadresářích:
# find /home/test -type f -exec chmod 644 {} \;Následující příkaz rekurzivně aplikuje pravidla na všechny adresáře v adresáři "/home/test" a také na všechny adresáře ve všech podadresářích:
# find /home/test -type d -exec chmod 755 {} \;Stejného výsledku můžete dosáhnout i bez použití find (všimněte si velkého X):
# chmod -R go=rX,u=rwX /home/test