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
+rX
znamená+r,+X
(všimněte si, žeX
se píše velkými písmeny — to je důležité).+r
znamená nastavit oprávnění ke čtení pro uživatele, skupinu a další.+X
znamená 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+w
znamená nastavit oprávnění k zápisu pro uživatele.go-w
znamená vypnout oprávnění k zápisu pro skupinu a další.
Shrnutí některých klíčových bodů:
- Samozřejmě můžete
chmod
pouze 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. find
příkazy neudělají nic s věcmi
, které nejsou adresáři nebo soubory (např. pojmenované kanály).find
pří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-w
pří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
x
bit; jinak, - nastavte na 644.
- nastavte jej na 755, pokud již má alespoň jeden