¿Quiere decir que desea cambiar los permisos para todos los archivos en el directorio? ¿Desea que esto también vaya a directorios anidados? ¿Desea cambiar los permisos del directorio (s) en sí, o solo los archivos dentro? Por último, ¿intentaste buscar en este sitio antes de publicar tu pregunta?
Ether
Respuestas:
21
Para cambiar los permisos en un archivo o entrada de directorio de forma no recursiva, use el chmodcomando (vea man chmod para leer más sobre sus opciones específicas):
chmod +x dir # Set a directory to be listable
chmod +x file # Set a file to be executable
Para cambiar el propietario de un archivo / directorio de forma recursiva (que afecta a todos los descendientes):
chown -R username dir # Recursively set user
chown -R username:groupname dir # Recursively set user and group
Para cambiar los bits de permisos de todos los archivos en un directorio, recursivamente:
find dir -type f -exec chmod 644 {} ';' # make all files rw-r-r-
Para cambiar los bits de permisos de todos los directorios:
find dir -type d -exec chmod 755 {} ';' # make all directories rwxr-xr-x
Sería bueno si pudieras hacer esto:
chmod -R 755 dir
Sin embargo, esto tiene problemas. Trata los archivos y directorios de la misma manera. El comando anterior hace que los directorios sean listables y legibles para todos los usuarios, pero también hace que todos los archivos sean ejecutables, que generalmente es lo que no desea hacer.
El problema es que 644elimina el bit de la lista de directorios, y este efecto secundario impide un mayor recorrido del árbol de archivos. Podría solucionar este problema utilizando sudo, pero aún así terminará con directorios que son completamente inútiles para los usuarios no root.
El punto es que chmod -Rfunciona bien en algunos casos (por ejemplo chmod -R g-r), pero no en los casos en que desea jugar con el -xbit, ya que funciona en archivos y directorios de manera indiscriminada.
¿Por qué estás asumiendo que él quiere configurar 644o que está configurando -xen los directorios? La pregunta solo estipula que quiere cambiar los permisos, no a qué en particular.
Reese Moore el
@ Reese Moore: Tienes razón. El autor de la pregunta ni siquiera dijo nada sobre cambiar los permisos de forma recursiva.
Joey Adams
1
Por lo general, desea utilizar las cosas de modo simbólico + y - para eso; es decir,chmod -R go=u,go-w /dir
dannysauer
6
chmodtiene una -Rbandera que significa cambiar los permisos en archivos y directorios de forma recursiva.
Puede usar 'X' mayúscula para hacer lo correcto para las carpetas: 'X' = "ejecutar / buscar solo si el archivo es un directorio o ya tiene permiso de ejecución para algún usuario"
Entonces, por ejemplo: chmod -R ug = rwX, o-rwx.
Haría que un árbol completo fuera accesible para el propietario y el grupo de cada archivo, y que nadie más pueda acceder a él. Cualquier archivo ya ejecutable seguiría siendo ejecutable después, y todos los directorios tendrían la 'x' para el usuario y el grupo y no para otros.
Pruebe chmod -R 444 somediren un directorio con archivos en él. Obtiene Permission deniedporque el indicador -x se está quitando de los directorios y es necesario para continuar leyendo el directorio.
Joey Adams
1
Una adición útil a esto es la sintaxis X = Y. Puede, por ejemplo, establecer permisos de grupo para el permiso del usuario utilizando chmod -R g = u dir para configurar el grupo y el equivalente del usuario. Esto funciona alrededor de cosas como directorios que necesitan ejecutables mientras que los archivos "simples" no.
Paul Rubel
3
chmod -R <file permission> *
De la página del manual de chmod:
-R, --recursive
change files and directories recursively
Úselo chmodcon el -Rinterruptor para varias direcciones que tiene un árbol de subdirectorios que tiene millones de archivos dentro y desea cambiar los permisos de estos archivos juntos de una sola vez.
El permiso de archivo puede ser por ej. 777, 755, 644, etc.
Respuestas:
Para cambiar los permisos en un archivo o entrada de directorio de forma no recursiva, use el
chmod
comando (vea man chmod para leer más sobre sus opciones específicas):Para cambiar el propietario de un archivo / directorio de forma recursiva (que afecta a todos los descendientes):
Para cambiar los bits de permisos de todos los archivos en un directorio, recursivamente:
Para cambiar los bits de permisos de todos los directorios:
Sería bueno si pudieras hacer esto:
Sin embargo, esto tiene problemas. Trata los archivos y directorios de la misma manera. El comando anterior hace que los directorios sean listables y legibles para todos los usuarios, pero también hace que todos los archivos sean ejecutables, que generalmente es lo que no desea hacer.
Si lo cambiamos a
644
, tenemos otro problema:El problema es que
644
elimina el bit de la lista de directorios, y este efecto secundario impide un mayor recorrido del árbol de archivos. Podría solucionar este problema utilizandosudo
, pero aún así terminará con directorios que son completamente inútiles para los usuarios no root.El punto es que
chmod -R
funciona bien en algunos casos (por ejemplochmod -R g-r
), pero no en los casos en que desea jugar con el-x
bit, ya que funciona en archivos y directorios de manera indiscriminada.fuente
644
o que está configurando-x
en los directorios? La pregunta solo estipula que quiere cambiar los permisos, no a qué en particular.chmod -R go=u,go-w /dir
chmod
tiene una-R
bandera que significa cambiar los permisos en archivos y directorios de forma recursiva.Puede usar 'X' mayúscula para hacer lo correcto para las carpetas: 'X' = "ejecutar / buscar solo si el archivo es un directorio o ya tiene permiso de ejecución para algún usuario"
Entonces, por ejemplo: chmod -R ug = rwX, o-rwx.
Haría que un árbol completo fuera accesible para el propietario y el grupo de cada archivo, y que nadie más pueda acceder a él. Cualquier archivo ya ejecutable seguiría siendo ejecutable después, y todos los directorios tendrían la 'x' para el usuario y el grupo y no para otros.
fuente
chmod -R 444 somedir
en un directorio con archivos en él. ObtienePermission denied
porque el indicador -x se está quitando de los directorios y es necesario para continuar leyendo el directorio.De la página del manual de
chmod
:Úselo
chmod
con el-R
interruptor para varias direcciones que tiene un árbol de subdirectorios que tiene millones de archivos dentro y desea cambiar los permisos de estos archivos juntos de una sola vez.El permiso de archivo puede ser por ej. 777, 755, 644, etc.
fuente