¿Cómo configuro chmod para una carpeta y todas sus subcarpetas y archivos?

¿Hay alguna manera de configurar chmod 755 para /opt/lampp/htdocs y todo su contenido, incluidas las subcarpetas y los archivos?

Además, en el futuro, si creo una nueva carpeta o archivo dentro de htdocs , ¿cómo pueden los permisos de eso establecerse automáticamente en 755 ?

Esto funciona, pero solo para esta carpeta:

 chmod 775 /opt/lampp/htdocs 

Las otras respuestas son correctas, en que chmod -R 755 establecerá esto como permisos para todos los archivos y carpetas en el árbol. Pero, ¿por qué demonios querrías ? Puede tener sentido para los directorios, pero ¿por qué configurar el bit de ejecución en todos los archivos?

Sospecho que lo que realmente quieres hacer es establecer los directorios en 755 y dejarlos solos o configurarlos en 644. Para esto, puedes usar el comando find . Por ejemplo:

Para cambiar todos los directorios a 755 ( drwxr-xr-x ):

 find /opt/lampp/htdocs -type d -exec chmod 755 {} \; 

Para cambiar todos los archivos a 644 ( -rw-r--r-- ):

 find /opt/lampp/htdocs -type f -exec chmod 644 {} \; 

Verifica la opción -R

chmod -R

En el futuro, puede ahorrar mucho tiempo consultando primero la página de manual:

 man  

Entonces en este caso:

 man chmod 

Si desea establecer permisos en todos los archivos en a a+r , y todos los directorios en a a+x , y hacer eso recursivamente a través del árbol de subdirectorios completo, use:

 chmod -R a+rX * 

La X (que es la X mayúscula, no pequeña x !) Se ignora para los archivos (a menos que ya sean ejecutables para alguien) pero se usa para directorios.

Puede usar -R con chmod para el recorrido recursivo de todos los archivos y subcarpetas.

Es posible que necesite sudo, ya que depende de que LAMP esté siendo instalado por el usuario actual u otro:

 sudo chmod 755 -R /opt/lampp/htdocs 

Para configurar todas las subcarpetas (recursivamente) use -R

 chmod 755 /folder -R 

Y use umask para establecer las carpetas / archivos nuevos cd / folder umask 755

chmod 755 -R /opt/lampp/htdocs configurará recursivamente los permisos. No hay forma de establecer automáticamente los permisos de los archivos solo en este directorio que se crean después de establecer los permisos, pero puede cambiar los permisos de archivo predeterminados de todo el sistema configurando umask 022 .

El comando recursivo correcto es:

 sudo chmod 755 -R /opt/lampp/htdocs 

-R : cambia cada subcarpeta incluida la carpeta actual

Es posible que desee considerar esta respuesta dada por Nik en superusuario y use “un chmod” para todos los archivos / carpetas como este:

 chmod 755 $(find /path/to/base/dir -type d) chmod 644 $(find /path/to/base/dir -type f) 

Utilizar:

 sudo chmod 755 -R /whatever/your/directory/is 

Sin embargo, ten cuidado con eso. Realmente puede hacerte daño si cambias los permisos de los archivos / carpetas incorrectos.

Aquí hay otra forma de establecer directorios en 775 y archivos en 664.

 find /opt/lampp/htdocs \ \( -type f -exec chmod ug+rw,o+r {} \; \) , \ \( -type d -exec chmod ug+rwxs,o+rx {} \; \) 

Puede parecer largo, pero es genial por tres razones:

  1. Escanea a través del sistema de archivos solo una vez en lugar de dos.
  2. Proporciona un mejor control sobre cómo se manejan los archivos y cómo se manejan los directorios . Esto es útil cuando se trabaja con modos especiales , como el bit adhesivo , que probablemente quiera aplicar a directorios pero no a archivos.
  3. Utiliza una técnica directamente de las páginas man (ver a continuación).

Tenga en cuenta que no he confirmado la diferencia de rendimiento (si corresponde) entre esta solución y la de simplemente usar dos comandos de búsqueda (como en la solución de Peter Mortensen). Sin embargo, ver un ejemplo similar en el manual es alentador.

Ejemplo de la página de man find :

 find / \ \( -perm -4000 -fprintf /root/suid.txt %#m %u %p\n \) , \ \( -size +100M -fprintf /root/big.txt %-10s %p\n \) Traverse the filesystem just once, listing setuid files and direc‐ tories into /root/suid.txt and large files into /root/big.txt. 

Aclamaciones

chmod -R 755 directory_name funciona, pero ¿cómo mantendría nuevos archivos en 755 también? Los permisos del archivo se convierten en el permiso predeterminado.

Desea asegurarse de que los archivos y directorios apropiados sean chmod-ed / permisos adecuados. Para todos los directorios que quieras

 find /opt/lampp/htdocs -type d -exec chmod 711 {} \; 

Y para todas las imágenes, JavaScript, CSS, HTML … bueno, no debería ejecutarlos. Entonces usa

 chmod 644 img/* js/* html/* 

Pero para todo el código lógico (por ejemplo, el código PHP), debe establecer permisos para que el usuario no pueda ver ese código:

 chmod 600 file 

Para Mac OS X 10.7 (Lion), es:

 chmod -R 755 /directory 

Y sí, como dicen todos los demás, tenga cuidado al hacer esto.

Creo que Adam preguntaba cómo cambiar el valor de umask para todos los procesos vinculados a operar en el directorio /opt/lampp/htdocs .

La máscara de modo de creación de archivos de usuario (umask) se usa para determinar el permiso de archivo para los archivos recién creados. Se puede usar para controlar el permiso de archivo predeterminado para nuevos archivos.

así que si va a utilizar algún tipo de progtwig ftp para cargar archivos en /opt/lampp/htdocs , necesita configurar su servidor ftp para usar umask que desee.

Si los archivos / directorios se crean, por ejemplo, por php, debe modificar el código php

  

si crea nuevos archivos / carpetas desde su sesión bash, puede establecer el valor umask en su perfil de shell ~ / .bashrc O puede configurar umask en /etc/bashrc o /etc/profile para todos los usuarios. agregue lo siguiente al archivo: umask 022

 Sample umask Values and File Creation Permissions If umask value set to User permission Group permission Others permission 000 all all all 007 all all none 027 all read / execute none 

Y para cambiar los permisos de los archivos ya creados, puede usar find. Espero que esto ayude.

Hay dos respuestas para encontrar archivos y aplicar chmod a ellos. El primero es find el archivo y aplicar chmod como encuentra (como lo sugiere @WombleGoneBad).

 find /opt/lampp/htdocs -type d -exec chmod 755 {} \; 

La segunda solución es generar una lista de todos los archivos con el comando find y suministrar esta lista al comando chmod (como lo sugiere @lamgesh).

 chmod 755 $(find /path/to/base/dir -type d) 

Ambas versiones funcionan bien siempre que la cantidad de archivos devueltos por el comando find sea ​​pequeña. La segunda solución se ve muy bien y más legible que la primera. Si hay una gran cantidad de archivos, la segunda solución devuelve un error: Argument list too long.

Entonces mi sugerencia es

  1. Utilice chmod -R 755 /opt/lampp/htdocs si desea cambiar los permisos de todos los archivos y directorios a la vez.
  2. Utilice find /opt/lampp/htdocs -type d -exec chmod 755 {} \; si la cantidad de archivos que está usando es muy grande. La opción -type x busca solo el tipo específico de archivo, donde d se usa para encontrar el directorio, f para el archivo yl para el enlace.
  3. Utilice chmod 755 $(find /path/to/base/dir -type d) contrario
  4. Es mejor usar el primero en cualquier situación

Es muy sencillo.

En la terminal ve al administrador de archivos. ejemplo: sudo nemo . Vaya /opt/ luego haga clic en Propiedades → Permiso . y luego Otro . Finalmente, cambie para crear y eliminar y archivar el acceso para leer y escribir y haga clic en el botón Aplicar … Y trabaje.