it-swarm-es.com

¿Cómo cambio los permisos para una carpeta y todas sus subcarpetas y archivos en un solo paso en Linux?

Me gustaría cambiar los permisos de una carpeta y todas sus subcarpetas y archivos en un solo paso (comando) en Linux.

Ya probé el siguiente comando pero solo funciona para la carpeta mencionada:

chmod 775 /opt/lampp/htdocs

¿Hay alguna forma 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 se pueden configurar automáticamente los permisos de 755?

He echado un vistazo a este enlace también:

http://stackoverflow.com/questions/3740187/how-to-set-default-chmod-in-linux-terminal

1546
Adam

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

Sospecho que lo que realmente desea 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 {} \;
2608
WombleGoneBad

Marque la opción -R

chmod -R <permissionsettings> <dirname>

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

man <command name>

Así que en este caso:

man chmod
709
Steve Robillard

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

chmod -R a+rX *

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

340
Pete

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

Sudo chmod 755 -R /opt/lampp/htdocs
122
ravi ranjan

Para establecer a 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

71
Topera

El comando recursivo correcto es:

Sudo chmod 755 -R /opt/lampp/htdocs

-R: cambia cada subcarpeta incluyendo la carpeta actual

60
Pramendra Gupta

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 configurar los permisos, pero puede cambiar los permisos de archivo predeterminados de todo el sistema con la opción umask 022.

49
sleepynate

Es posible que desee considerar esta respuesta dada por nik en 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)
23
Iam Zesh

Utilizar:

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

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

20
Nate Starner

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 muy bueno por tres razones:

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

Tenga en cuenta que no he confirmado la diferencia de rendimiento (si existe) 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 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

19
chrisfargen

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
Sanchit Gupta

Desea asegurarse de que los archivos y directorios apropiados sean chmod-ed/permissions para que sean apropiados. 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 debes ejecutarlas. Asi que usa

chmod 644 img/* js/* html/*

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

chmod 600 file
10
NikolaiDante

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
wmartin

Creo que Adam estaba preguntando cómo cambiar el valor de umask para todos los procesos que intentan operar en el directorio /opt/lampp/htdocs.

La máscara de modo de creación de archivos del 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.

por lo tanto, si va a usar algún tipo de programa ftp para cargar archivos en /opt/lampp/htdocs, debe configurar su servidor ftp para que use la umask que desee.

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

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

si va a crear nuevos archivos/carpetas desde su sesión de 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. agrega 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.

6
Viktor

Hay dos respuestas para encontrar archivos y aplicar chmod a ellos. La primera es find el archivo y aplique chmod como encuentre (como lo sugiere @WombleGoneBad).

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

La segunda solución es generar la 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 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 la primera. Si hay una gran cantidad de archivos, la segunda solución devuelve un error: Argument list too long.

Así que 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. Use 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 un tipo específico de archivo, donde d se usa para encontrar el directorio, f para el archivo yl para el enlace.
  3. Use chmod 755 $(find /path/to/base/dir -type d) de lo contrario
  4. Mejor usar el primero en cualquier situación.
4
Prabhu

Es muy sencillo.

En la Terminal vaya 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 acceda a los archivos para leer y escribir, y haga clic en el botón aplicar ... Y trabajar.

2
Debian.