Cambiar todos los permisos de archivos y carpetas de un directorio a 644/755


184

¿Cómo cambiaría todos los archivos a 644 y todas las carpetas a 755 usando chmodel linuxsímbolo del sistema? (Terminal)


66
Si alguien (@animuson) sería tan amable de explicar, por qué esta pregunta chmod es fuera de tema y todos los demás (14.438 resultados) aquí no son ...
Hugo der Hungrige

Un poco tarde, pero este comando también hará la respuesta aceptada de una vez: chmod -R a = r, a + X, u + w / your / path
MichaelICE

Buena pregunta, no merece un cierre. Estos deberían ser trasladados a un subsitio stackoverflow que cerrados.
Erik Friesen

1
@hugoderhungrige significa ir a preguntar en un sitio del servidor como http://superuser.com: P, pero esta pregunta me ayudó aquí, gracias.
emotalidad

Respuestas:


345

Un enfoque podría ser usar find:

para directorios

find /desired_location -type d -print0 | xargs -0 chmod 0755

para archivos

find /desired_location -type f -print0 | xargs -0 chmod 0644

21
solo para alguien como yo, esto no funciona en su lugar, intente sudo find /your/location -type f -exec chmod 644 {} \;con archivos y sudo find /your/location -type d -exec chmod 755 {} \;directorios
NineCattoRules

Ejecuté la solución original y estropeó mis permisos en archivos y directorios. ¡Cuidado! La solución en el comentario funcionó, ¡gracias!
Mahsa Mortazavi

3
¿Por qué (?) Es mejor tham chmod -R a=r,u+w,a+X /foo?
Peter Krauss

falla conunable to execute /bin/chmod: Argument list too long
vladkras

¿Qué sucede si solo quiero que la subcarpeta sea chmod 755 al especificar la ubicación deseada? Porque esto también hará que la carpeta principal sea 755
MaXi32

105

La forma más fácil es hacer:

chmod -R u+rwX,go+rX,go-w /path/to/dir

que básicamente significa:

para charchivar modes -Recursivamente dando:

  • user: rpermisos de ead, write y e Xecute,
  • grupo y other usuarios: rEAD y correoX , pero no -wpermisos de rito.

Tenga en cuenta que X hará que un directorio sea ejecutable, pero no un archivo, a menos que ya se pueda buscar / ejecutar.

+X - haga que todos puedan buscar / ejecutar un directorio o archivo si ya alguien puede buscarlo / ejecutarlo.

por favor, compruebe man chmod para más detalles.

Ver también: ¿Cómo modificar todos los directorios excepto los archivos (recursivamente)? en SU


77
chmod -R a = r, u + w, a + X / foo
John Allsup

9
Esta respuesta, aunque ordenada, tiene un problema: un archivo que es ejecutable antes de ejecutar el comando será ejecutable después. Vea la respuesta de @JohnAllsup para un comando que no tiene este defecto.
mzuther

44
@mzuther a menos que este problema sea realmente una característica para usted
RiaD

37

El más corto que se me ocurrió es:

chmod -R a=r,u+w,a+X /foo

que funciona en GNU / Linux, y creo en Posix en general (de mi lectura de: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/chmod.html ).

Lo que esto hace es:

  1. Establezca el archivo / directorio en r__r__r__ (0444)
  2. Agregue w para el propietario, para obtener rw_r__r__ (0644)
  3. Establezca ejecutar para todos si es un directorio (0755 para dir, 0644 para archivo).

Es importante destacar que el permiso del paso 1 borra todos los bits de ejecución, por lo que el paso 3 solo agrega bits de ejecución para directorios (nunca archivos). Además, los tres pasos suceden antes de que se vuelva a utilizar un directorio (por lo que esto no es equivalente a, por ejemplo,

chmod -R a=r /foo
chmod -R u+w /foo
chmod -R a+X /foo

dado que a = r elimina x de los directorios, entonces chmod no puede recurrir a ellos).


¡brillante! me ayudó mucho
Jannie Theunissen

13

Lo más fácil para mí es recordar dos operaciones:

chmod -R 644 dirName
chmod -R +X dirName

La + X solo afecta a los directorios.


1
Más simple y seguro
Marco Marsala

12

En https://help.directadmin.com/item.php?id=589 escriben:

Si necesita una forma rápida de restablecer sus datos public_html a 755 para directorios y 644 para archivos, puede usar algo como esto:

cd /home/user/domains/domain.com/public_html
find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;

Lo probé y ... ¡funciona!


Salvavidas! ¡Gracias por la solución limpia a este problema! ¡Me funcionó cuando necesité solucionar problemas de permisos para una instalación de WordPress!
twknab

Funciona bien para hacer los ajustes dentro de un directorio.
Christian Berendt

8

Esto funcionó para mí:

find /A -type d -exec chmod 0755 {} \;
find /A -type f -exec chmod 0644 {} \;

3
Tenga cuidado: estos comandos no manejarán archivos o directorios con espacios en sus nombres. Los comandos en la respuesta aceptada lo harán.
Chad Nouis

1
Esta advertencia solo se aplica si {} no está entre comillas ... por lo tanto, no hay razón para jugar con print0 y xargs -0, lo siguiente es suficiente:find /A -type X -exec chmod Y '{}' \;
Michael Stumpfl

6

Haz ambas cosas en una sola pasada con:

find -type f ... -o -type d ...

Como en, encuentre el tipo f O el tipo d, y haga el primero ... para archivos y el segundo ... para directorios. Específicamente:

find -type f -exec chmod --changes 644 {} + -o -type d -exec chmod --changes 755 {} +

Deja el --changessi quieres que funcione en silencio.


2

Si necesita una forma rápida de restablecer sus datos public_html a 755 para directorios y 644 para archivos, puede usar algo como esto:

cd /home/user/domains/domain.com/public_html
find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;

Además, si sabe que PHP se ejecuta como usuario y no como "apache", puede configurar los archivos PHP a 600, para un nivel adicional de seguridad, por ejemplo:

find . -type f -name '*.php' -exec chmod 600 {} \;

Puede encontrar este recurso aquí: https://help.directadmin.com/item.php?id=589


-9

Esto también puede funcionar:

chmod -R 755 *  // All files and folders to 755.

chmod -R 644 *.*  // All files will be 644.

1
¡NADIE HAGA ESO! ¡afecta al servidor completo!
T.Todua
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.