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


¿Hay una manera de establecer 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 se pueden establecer automáticamente los permisos de esa carpeta en 755?

Esto funciona, pero solo para esta carpeta:

chmod 775 /opt/lampp/htdocs
Author: jww, 2010-09-18

16 answers

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

Sospecho que lo que realmente quiere hacer es establecer los directorios en 755 y dejar los archivos solos o establecerlos en 644. Para esto, puede 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 {} \;
 2327
Author: WombleGoneBad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-26 10:48:25

Marque la opción-R

chmod -R <permissionsettings> <dirname>

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

man <command name>

Así que en este caso:

man chmod
 658
Author: Steve Robillard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-25 02:47:26

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

chmod -R a+rX *

El X (que es capital X, no pequeño x!) se ignora para los archivos (a menos que sean ejecutables para alguien ya) pero se utiliza para los directorios.

 298
Author: Pete,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-11 20:57:02

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é instalado por el usuario actual u otro:

sudo chmod 755 -R /opt/lampp/htdocs
 109
Author: ravi ranjan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-05 13:24:06

Para establecer todas las subcarpetas (recursivamente) use-R

chmod 755 /folder -R

Y use umask para establecer el valor predeterminado en nuevas carpetas / archivos cd /carpeta umask 755

 67
Author: Topera,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-18 02:43:19

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

 47
Author: sleepynate,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-18 02:38:42

El comando recursivo correcto es:

sudo chmod 755 -R /opt/lampp/htdocs

-R: cambiar cada subcarpeta, incluida la carpeta actual

 44
Author: Pramendra Gupta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-11 09:34:03

Es posible que desee considerar esta respuesta dada por nik en el superusuario y usar" one 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)
 22
Author: Iam Zesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-20 10:18:14

Uso:

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

Sin embargo, tenga cuidado con eso. Realmente puede hacerle daño si cambia los permisos de los archivos/carpetas incorrectos.

 20
Author: Nate Starner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-25 02:49:26

Aquí hay otra forma de establecer directorios a 775 y archivos a 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 bastante genial por tres razones:

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

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

Ejemplo de man find página:

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.

Salud

 19
Author: chrisfargen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-17 07:04:26

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

 11
Author: Sanchit Gupta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-22 12:03:34

Debe asegurarse de que los archivos y directorios apropiados son chmod-ed/permissions para los que son apropiados. Para todos los directorios que desee

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

Y para todas las imágenes, JavaScript, CSS, HTML...bueno, no deberías ejecutarlos. Así que use

chmod 644 img/* js/* html/*

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

chmod 600 file
 9
Author: NikolaiDante,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-22 22:07:22

Para Mac OS X 10.7 (Lion), es:

chmod -R 755 /directory

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

 7
Author: wmartin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-25 02:56:19

Creo que Adam estaba preguntando cómo cambiar el valor de umask para todos los procesos que atan 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 archivos nuevos.

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

Si se crean archivos / directorios para ejemplo de php, necesita modificar el código php

<?php
umask(0022);
// other code
?>

Si va a crear nuevos archivos / carpetas desde su sesión bash, puede establecer el valor umask en su perfil de shell ~/.bashrc O puede configurar umask en el archivo /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 buscar. Espero que esto ayude.

 5
Author: Viktor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-21 09:03:06

Hay dos respuestas: buscar archivos y aplicarles chmod. El primero es find el archivo y aplicar chmod como se encuentra (como 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 sugiere @lamgesh).

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

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

, Así que mi sugerencia es

  1. Use chmod -R 755 /opt/lampp/htdocs si desea cambiar los permisos de todos los archivos y directorios a la vez.
  2. Use find /opt/lampp/htdocs -type d -exec chmod 755 {} \; si el número de archivos que está utilizando es muy grande. La opción -type x busca solo un tipo específico de archivo, donde d se usa para encontrar el directorio, f para el archivo y l para el enlace.
  3. Use chmod 755 $(find /path/to/base/dir -type d) de lo contrario
  4. Mejor que utilice el primero en cualquier situación
 4
Author: Prabhu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-21 19:58:49

Es muy simple.

En la Terminal vaya al administrador de archivos. ejemplo: sudo nemo. Ir /opt/ luego haga clic Propiedades → Permiso. y luego Otros. Finalmente, cambie para crear y eliminar y acceso a archivos para leer y escribir y haga clic en el botón aplicar... Y trabajo.

 2
Author: Debian.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-16 09:57:54