GNU/Linux >> Tutoriales Linux >  >> Linux

Linux:¿razones oscuras por las que un archivo es de solo lectura?

El sistema de archivos de Linux parece tener capas y capas de sutileza con las que me tropiezo caso por caso:

Estoy interesado en editar este archivo:

[[email protected] ~]$ ls -l /a/b/c/foo.bar
-rw-rwxr-x    1 user   user      144529 Jan 26  2018 /a/b/c/foo.bar

Parece que debería ser escribible por el usuario user - ¿verdadero? Pero cuando trato de editar el archivo en vim, obtengo un "W10: Warning: Changing a readonly file ” advertencia.

Sé que la capacidad de escritura del archivo depende de los permisos de la carpeta que lo contiene. Creo que la carpeta contenedora debe tener permiso de ejecución, ¿verdad? Supongo que el permiso de directorio requerido también se extiende hasta / – ¿Verdad?

Me parece que el árbol de carpetas que contiene el archivo anotado tiene permisos de ejecución:

[[email protected] ~]$ ls -ld /a/b/c/                                                                                    
drwxrwxrwx    2 user   user       36864 Mar  5 17:50 /a/b/c/
[[email protected] ~]$ ls -ld /a/b/           
drwxrwxr-x    4 user   user        4096 Sep 22  2017 /a/b/
[[email protected] ~]$ ls -ld /a/                
drwxrwxr-x    9 user   user        4096 Sep 15  2017 /a/
[[email protected] ~]$ ls -ld /     
drwxr-xr-x   24 root   root           0 Aug 24 10:48 /
[[email protected] ~]$ whoami
user

Por lo que puedo decir de lo anterior, cada directorio en el árbol relevante tiene permisos de ejecución. Al principio, sospeché si tenía que ver con / siendo propiedad de root , pero tiene permiso de ejecución para "otros". Además, si hubiera problemas relacionados con / siendo propiedad de root , me imagino que tendría problemas para escribir archivos en cualquier parte del sistema de archivos como un usuario que no sea root , pero ese no es el caso.

¿Alguien puede pensar en/identificar otras razones por las que el archivo anotado se considera de solo lectura?

Respuesta aceptada:

Primero – estás con un conjunto de banderas inmutables

chattr -i yourfilename

Si se establece el indicador inmutable, no puede cambiar el archivo. ¡Recuerde que los permisos no anularon ese comportamiento!

Segundo, compruebe si el directorio donde se encuentra el archivo está montado en otro disco o partición , como solo lectura, para eso solo escriba:

mount 

(sin argumentos)

Si ve algo como su directorio montado como de solo lectura, ¡esa es la razón! ¡Vuelva a montarlo como lectura-escritura para tener suerte!

Tercero y más común , solo está ejecutando un sistema de archivos con errores , para corregir eso, debe hacer una copia de seguridad de lo que pueda, reiniciar, luego iniciar sesión en modo único y ejecutar:

mount #To determine how the partition is mounted
mount -o remount,ro /dev/sd(yourpartition) directory
fsck.ext4 /dev/sd(yourpartition)

(tal vez sea necesario cambiar ext4 a su tipo de partición)

¡Buena suerte!

Relacionado:¿Obtener el tiempo de usuario y kernel de un proceso en ejecución?
Linux
  1. Cómo mover un archivo en Linux

  2. ¿Qué es un usuario de Linux?

  3. Una introducción a la supervisión de cuentas de usuario de Linux

  4. Linux – ¿Todo es un archivo?

  5. Linux su comando

Comando Gzip en Linux

Comando Su en Linux (Cambiar de Usuario)

Comando de identificación en Linux

Permisos de archivos de Linux:todo lo que necesita saber

Ejemplos de comandos chown de Linux

¿Qué es el archivo /etc/passwd en Linux?