Pokud používáte Linux jako svůj hlavní operační systém nebo spravujete linuxové servery, narazíte na situaci, kdy se pokusíte vytvořit nebo upravit soubor a zobrazí se chyba „Odepření oprávnění“. Chyby související s nedostatečnými oprávněními lze obvykle vyřešit nastavením správných oprávnění nebo vlastnictví souboru.
Linux je systém pro více uživatelů a přístup k souborům je řízen prostřednictvím oprávnění, atributů a vlastnictví souborů. To zajišťuje, že k souborům a adresářům mají přístup pouze oprávnění uživatelé a procesy.
Další informace o oprávněních k souborům naleznete v části „Příkaz Umask v Linuxu“.
V tomto článku vysvětlíme, jak rekurzivně změnit oprávnění souborů a adresářů.
Rekurzivní Chmod #
chmod
umožňuje změnit oprávnění souborů pomocí symbolického nebo číselného režimu.
Chcete-li rekurzivně pracovat se všemi soubory a adresáři v daném adresáři, použijte chmod
pomocí -R
, (--recursive
) možnost. Obecná syntaxe pro rekurzivní změnu oprávnění souboru je následující:
chmod -R MODE DIRECTORY
Chcete-li například změnit oprávnění všech souborů a podadresářů pod /var/www/html
adresář na 755
byste použili:
chmod -R 755 /var/www/html
Režim lze také určit pomocí symbolické metody:
chmod -R u=rwx,go=rx /var/www/html
Pouze root, vlastník souboru nebo uživatel s sudo
oprávnění mohou změnit oprávnění souboru. Při rekurzivní změně oprávnění souborů buďte zvlášť opatrní.
Pomocí find
Příkaz #
Obecně platí, že soubory a adresáře by neměly mít stejná oprávnění. Většina souborů nevyžaduje oprávnění ke spouštění, zatímco pro změnu na adresáře musíte oprávnění ke spouštění nastavit.
Nejběžnějším scénářem je rekurzivně změnit oprávnění souboru webu na 644
a oprávnění adresáře na 755
.
Pomocí numerické metody:
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;
Pomocí symbolické metody:
find /var/www/html -type d -exec chmod u=rwx,go=rx {} \;
find /var/www/html -type f -exec chmod u=rw,go=r {} \;
find
příkaz vyhledává soubory nebo adresáře pod /var/www/html
a předá každý nalezený soubor nebo adresář do chmod
příkaz pro nastavení oprávnění.
Při použití find
s -exec
, chmod
příkaz se spustí pro každý nalezený záznam. Použijte xargs
příkaz pro urychlení operace předáním více položek najednou:
find /var/www/html -type d -print0 | xargs -0 chmod 755
find /var/www/html -type f -print0 | xargs -0 chmod 644
Závěr č.
chmod
pomocí -R
možnosti umožňují rekurzivně měnit oprávnění souboru.
Chcete-li rekurzivně nastavit oprávnění souborů na základě jejich typu, použijte chmod
v kombinaci s find
příkaz.
Pokud máte nějaké dotazy nebo zpětnou vazbu, neváhejte zanechat komentář.