Estoy intentando cambiar los permisos de temp_dir a 777. ¿Por qué estos comandos no logran eso? Por cierto, estoy usando Linux.
kylefoley@kfoley76:/mnt/disks$ chmod 777 /mnt/disks/temp_dir
kylefoley@kfoley76:/mnt/disks$ stat -c "%a %n" temp_dir
755 temp_dir
También probé el interruptor detallado.
kylefoley@kfoley76:/mnt/disks$ chmod -v 777 /mnt/disks/temp_dir
mode of '/mnt/disks/temp_dir' changed from 0755 (rwxr-xr-x) to 0777 (rwxrwxrwx)
kylefoley@kfoley76:/mnt/disks$ stat -c "%a %n" temp_dir
755 temp_dir
Tampoco entiendo por qué no puedo usarsudo
kylefoley@kfoley76:/mnt/disks/temp_dir$ sudo chmod 777 fix_mistakes
chmod: cannot access 'fix_mistakes': Permission denied
Incluso cuando inicio sesión como usuario root
kylefoley@kfoley76:/mnt/disks/temp_dir$ sudo -i
root@kfoley76:~# sudo chmod 777 /mnt/disks/temp_dir
chmod: cannot access '/mnt/disks/temp_dir': Permission denied
También debo agregar que este error debe tener algo que ver con el hecho de que el directorio en cuestión es un disco montado en gcsfuse, disponible en gcloud. Otros intentos de cambiar los permisos funcionaron bien:
kylefoley@kfoley76:~$ mkdir hey
kylefoley@kfoley76:~$ stat -c "%a %n" hey
755 hey
kylefoley@kfoley76:~$ chmod 777 hey
kylefoley@kfoley76:~$ stat -c "%a %n" hey
777 hey
Respuesta1
gcsfuse establece permisos de archivos y directorios al montar. En concreto, las opciones son:
file_mode
– Bits de permiso para archivos, en octaldir_mode
– Bits de permisos para directorios, en octal.
Si no especifica las opciones, los valores predeterminados son dir_mode=0755,file_mode=0644
.
Estas opciones se aplican a todos los archivos y directorios del montaje. Este sistema de archivos FUSE no tiene la capacidad de cambiar permisos para archivos o directorios específicos, por lo que chmod
no hace nada.
Además, gcsfuse tiene restricciones de acceso adicionales que limitan el acceso al usuario que montó el sistema de archivos. Detalles:
Como medida de seguridad, el propio fusible restringe el acceso al sistema de archivos al usuario que montó el sistema de archivos (cf.fusible.txt). Por este motivo, gcsfuse muestra de forma predeterminada que todos los archivos pertenecen al usuario que los invoca. Por lo tanto, debes invocar a gcsfuse como el usuario que utilizará el sistema de archivos, no como root.
Si sabe lo que está haciendo, puede anular estos comportamientos con el
allow_other
opción de montaje compatible con fusible y con banderas--uid
y--gid
compatibles con gcsfuse. ¡Cuidado, esto puede tener implicaciones de seguridad!
Es por eso que no puedes acceder al soporte desde otro usuario. Para permitir que otros usuarios accedan al montaje, especifique allow_other
en sus opciones de montaje.
Respuesta2
Pude resolver el problema de la siguiente manera: tuve que ir a Cloud API Access Scopes y verificar en la configuración de la VM que tiene acceso de lectura, escritura o acceso completo para almacenamiento. Esto implicó presionar editar en la consola de gcloud que enumera mis instancias. En la parte inferior de la página, estaba la limitación de almacenamiento que cambié a "completo". Eso fue todo.