GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué Rm puede eliminar archivos de solo lectura?

Si creo un archivo y luego cambio sus permisos a 444 (solo lectura), ¿por qué rm ¿Se puede eliminar?

Si hago esto:

echo test > test.txt
chmod 444 test.txt
rm test.txt

rm me preguntará si quiero eliminar el archivo protegido contra escritura test.txt . Hubiera esperado que rm no puedo eliminar dicho archivo y tendría que hacer un chmod +w test.txt primero. Si hago rm -f test.txt entonces rm eliminará el archivo sin siquiera preguntar, aunque sea de solo lectura.

¿Alguien puede aclarar? Estoy usando Ubuntu 12.04/bash.

Respuesta aceptada:

Todo rm necesita es permiso de escritura+ejecución en el directorio principal. Los permisos del archivo en sí son irrelevantes.

Aquí hay una referencia que explica el modelo de permisos más claramente que nunca:

Cualquier intento de acceder a los datos de un archivo requiere permiso de lectura. Cualquier
intento de modificar los datos de un archivo requiere permiso de escritura. Cualquier
intento de ejecutar un archivo (un programa o un script) requiere permiso de ejecución
...

Debido a que los directorios no se usan de la misma manera que los archivos normales, los permisos
funcionan de forma ligeramente diferente (pero solo ligeramente). Un intento
de enumerar los archivos en un directorio requiere permiso de lectura para el directorio
, pero no para los archivos que contiene. Un intento de agregar un archivo a un directorio
, eliminar un archivo de un directorio o cambiar el nombre de un archivo, todos
requieren permiso de escritura para el directorio, pero (quizás sorprendentemente)
no para los archivos dentro. El permiso de ejecución no se aplica a los directorios
(un directorio no puede ser también un programa). Pero ese
bit de permiso se reutiliza para directorios con otros fines.

Se necesita permiso de ejecución en un directorio para poder acceder a él con un CD
(es decir, para convertir algún directorio en su directorio de trabajo actual).

Se necesita ejecutar en un directorio para acceder a la información de "inodo" de
los archivos que contiene. Necesita esto para buscar un directorio para leer los
inodos de los archivos que contiene. Por esta razón, el permiso de ejecución en
un directorio a menudo se denomina permiso de búsqueda.


Linux
  1. ¿Se pueden recuperar los archivos sobrescritos?

  2. ¿Por qué los archivos no pueden ser manipulados por inode?

  3. comando de linux para vaciar todos los archivos de un directorio

  4. ¿Por qué mi sistema de archivos está montado como de solo lectura?

  5. ¿Por qué no puedo eliminar este archivo como root?

Cómo quitar (eliminar) un archivo o directorio en Linux

¿Cómo puedo eliminar archivos duplicados en árboles de directorios separados?

¿Por qué no puedo crear archivos de más de 2 GB en Linux?

¿Por qué el directorio raíz se indica con un signo /?

¿Cómo eliminar archivos ._ en un directorio? ubuntu

No puedo eliminar archivos 'rm:no puedo eliminar el sistema de archivos de solo lectura X'