Jak mohu v adresáři webové aplikace změnit všechna oprávnění ke složce na rwxr-xr-x (755)? A jak mohu změnit všechna oprávnění k souboru na rw-r--r-- (644)? Chci změnit všechny složky a soubory včetně dílčích souborů a složek.
Vím, že následující příkaz by změnil všechny soubory a složky, ale chci rozlišovat mezi souborem a složkou.
chmod -R 755 ./my_web_app_project
Přijatá odpověď:
Jeden způsob, jak udělat přesně to, co chcete, pomocí jednoho find příkaz je
find my_web_app_project '(' -type f -exec chmod 644 {} ';' ')' -o '(' -type d -exec chmod 755 {} ';' ')'
-o znamená NEBO.
Tento příkaz zpracuje všechny objekty ve stromu projektu
, které jsou typu „file“ nebo zadejte „adresář“,
a provede různé příkazy podle typu každého objektu.
Můžete to trochu zefektivnit
nahrazením středníků (';' ) se znaménkem plus (+ );
to říká find ke spuštění chmod 644 jednou, se všemi prostými názvy souborů jako argumenty,
a ke spuštění chmod 755 jednou, s názvy všech adresářů jako argumenty.
Mimochodem, nemusíte říkat ./ pro cokoli jiného než spouštění programu v aktuálním adresáři
(i když se to občas hodí
pro manipulaci se soubory, jejichž názvy začínají nějakými speciálními znaky).
Zajímalo by mě, jak teď vypadají vaše oprávnění
(před spuštěním rekurzivního stromového chmod ).
Soubory obecně nemají bity oprávnění ke spuštění zapnuté
, pokud se nejedná o skutečně spustitelné programy,
nebo pokud jste omylem neudělali něco jako chmod -R 755 .
Adresáře obecně nevypínají bity oprávnění ke spuštění
, pokud jste neprovedli něco katastrofálního, jako je chmod -R 644 .
Pokud jste si vážně popletli oprávnění
, protože jste provedli neuváženou akci chmod -R s numerickým režimem
ignorujte tuto sekci
a zůstaňte u příkazu na začátku této odpovědi.
Pokud jsou však vaše oprávnění obecně rozumná,
a chcete pouze zavést standard
oprávnění ke čtení/zápisu pro uživatele
a oprávnění pouze pro čtení pro všechny ostatní (skupinu a svět ),
můžete udělat
chmod -R +rX,u+w,go-w my_web_app_project
ve kterém
+rXznamená+r,+X(všimněte si, žeXse píše velkými písmeny — to je důležité).+rznamená nastavit oprávnění ke čtení pro uživatele, skupinu a další.+Xznamená nastavit oprávnění ke spuštění pro uživatele, skupinu a další pokud je pro některého z nich aktuálně nastaveno nebo pokud je objektem adresář .
u+wznamená nastavit oprávnění k zápisu pro uživatele.go-wznamená vypnout oprávnění k zápisu pro skupinu a další.
Shrnutí některých klíčových bodů:
- Samozřejmě můžete
chmodpouze věci, které vlastníte
(pokud nemáte privilegia) a které nejsou pouze pro čtení.
Pokud jsou ve vašem adresáři věci, které nemůžetechmod,
kterýkoli z těchto příkazů způsobí chybu. findpříkazy neudělají nic s věcmi
, které nejsou adresáři nebo soubory (např. pojmenované kanály).findpříkaz s-exec chmod 755 {} +může selhat
, pokud ještě nemáte oprávnění ke čtení a spouštění pro všechny složky
v adresáři nejvyšší úrovně.chmod -R +rX,u+w,go-wpříkaz will- nastavit všechny adresáře na režim 755,
- ignorujte symbolické odkazy,
- pro všechny ostatní typy souborů (včetně např. pojmenovaných kanálů):
- nastavte jej na 755, pokud již má alespoň jeden
xbit; jinak, - nastavte na 644.
- nastavte jej na 755, pokud již má alespoň jeden