GNU/Linux >> Znalost Linux >  >> Cent OS

Centos – Změnit všechna oprávnění ke složce pomocí 1 příkazu?

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, že X 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ší.
Související:Mohu smazat složku C:ProgramDataPackage Cache?

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ůžete chmod ,
    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.

Cent OS
  1. CentOS 8 Package Management s DNF na příkazovém řádku

  2. Příkaz Linux DD – 15 příkladů se všemi možnostmi

  3. Jak auditovat oprávnění pomocí příkazu find

  1. Centos – Přejmenovat všechny soubory s určitým názvem?

  2. Linux – změnit oprávnění složky?

  3. Vypsat všechny nainstalované balíčky s yum na CentOS 7

  1. Jak používat příkaz chmod (Change Mode) v Linuxu

  2. CentOS / RHEL 7 :Jak změnit úrovně běhu (cíle) pomocí systemd

  3. Chmod 777 do složky a veškerého obsahu