Permisos establecidos como desconocidos después de chmod 777

Permisos establecidos como desconocidos después de chmod 777

Me acabo de dar cuenta de que después de correr

chmod 777 * 

en un directorio que tiene subdirectorios hace lo que cabría esperar. Establece los permisos de todo, incluidos los subdirectorios, en 777. Sin embargo, si luego decide que no desea hacer eso y ejecuta

chmod 644 *

Ahora el contenido de los subdirectorios obtiene permisos desconocidos y no puede volver a cambiarlos.

¿Por qué sucede eso? ¿Es este el comportamiento esperado o un error? ¿Hay alguna manera de restaurar los permisos del archivo?

Como los archivos que tenía estaban en un archivo zip en otra ubicación, simplemente eliminé todo el directorio y descomprimí el archivo zip nuevamente, pero me gustaría saber las causas de este "problema" y sus soluciones.

Alguna información adicional. Estoy ejecutando esos comandos en una máquina remota a través de SSH.

Respuesta1

Probablemente sea mejor utilizar find para este tipo de cosas.

Los directorios deben tener acceso x, los archivos no, por lo que hay diferentes conjuntos de permisos.

# Files
find . -type f -exec chmod 644 '{}' \;

# Directories
find . -type d -exec chmod 755 '{}' \;

Respuesta2

La forma en que se interpretan los bits de permiso difiere para archivos y directorios. Lea info coreutils 'File permissions'y man 2 chmodpara más detalles. ¿Por qué querríamos que todo fuera legible, escribible y ejecutable para el propietario, el grupo y el mundo?

Dado que la evidencia desapareció, solo puedo suponer que después de su chmod, perdió el acceso de escritura al .directorio actual. Esto se puede solucionar mediante:

chmod u+w $PWD

Luego, puede cambiar el modo (permisos) de los archivos en$PWD

Al hacer el chmod 644 *, también eliminaste elejecutarpermiso de cualquiera de los archivos que lo tenían, por lo que ya no son ejecutables por ningún propietario, grupo o mundo.

Respuesta3

Cuando desee establecer permisos para directorios y subdirectorios, debe usar:

chmod -R

-R, --recursive cambia archivos y directorios de forma recursiva

Respuesta4

Encontré la solución al problema que tenía.

En primer lugar, gracias a todos los que publicaron, sus respuestas fueron realmente útiles.

El problema es que asignar el permiso 664 a todos los archivos en el directorio actual:

chmod 644 *

elimina los permisos de ejecución en los directorios, que necesitan permisos de ejecución para funcionar correctamente. La solución es bastante simple. Sólo necesitamos cambiar los permisos para los directorios de esta manera:

chmod 744 dir_name

Donde dir_name es, por supuesto, el nombre de nuestro directorio. Una vez que hagamos eso, todo volverá a la normalidad.

información relacionada