Chmod

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 8. srpna 2021; ověření vyžaduje 1 úpravu .

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ý.

Formát čísla

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áv
biná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).

Populární významy

400 (-r--------) Vlastník má právo číst; nikdo jiný nemá právo nic dělat 440 (-r--r-----) Vlastník a skupina mají přístup pro čtení; nikdo jiný nemá právo nic dělat 644 (-rw-r--r--) Všichni uživatelé mají přístup pro čtení; vlastník může upravovat 660 (-rw-rw----) Vlastník a skupina mohou číst a upravovat; zbytek nesmí provádět žádnou akci 664 (-rw-rw-r--) Všichni uživatelé mají přístup pro čtení; vlastník a skupina mohou upravovat 666 (-rw-rw-rw-) Všichni uživatelé mohou číst a upravovat 700 (-rwx------) Vlastník může číst, zapisovat a spouštět; nikdo jiný nemá právo nic dělat 744 (-rwxr--r--) Každý uživatel může číst, vlastník má právo upravovat a spouštět 755 (-rwxr-xr-x) Každý uživatel má právo číst a spouštět; vlastník může upravovat 777 (-rwxrwxrwx) Každý uživatel může číst, upravovat a spouštět 2555 (-r-xr-sr-x) Každý uživatel má právo číst a spouštět s právy skupiny uživatelů vlastníka souboru 4555 (-r-sr-xr-x) Každý uživatel má právo číst a spouštět s právy vlastníka souboru

Formát znaků

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

Příklady

Nastavte oprávnění "rwxr-xr-x" (0755) pro soubor:

chmod u=rwx,g=rx,o=rx název souboru

Nastavte 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 souboru

Nastavte 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ář gs

Funkce

Vý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

Poznámky

  1. Scott Granneman „Linux Pocket Guide“, Williams Publishing House, 2007

Odkazy