Así que estaba haciendo algo de mantenimiento en mi servidor hoy y noté que podía eliminar un archivo propiedad de root en mi directorio de inicio.
Pude reproducir una muestra:
[cbennett@nova ~/temp]$ ls -al
total 8
drwxrwxr-x. 2 cbennett cbennett 4096 Oct 5 20:59 .
drwxr-xr-x. 22 cbennett cbennett 4096 Oct 5 20:58 ..
-rw-rw-r--. 1 cbennett cbennett 0 Oct 5 20:58 my-own-file
[cbennett@nova ~/temp]$ sudo touch file-owned-by-root
[cbennett@nova ~/temp]$ ls -al
total 8
drwxrwxr-x. 2 cbennett cbennett 4096 Oct 5 21:00 .
drwxr-xr-x. 22 cbennett cbennett 4096 Oct 5 20:58 ..
-rw-r--r--. 1 root root 0 Oct 5 21:00 file-owned-by-root
-rw-rw-r--. 1 cbennett cbennett 0 Oct 5 20:58 my-own-file
[cbennett@nova ~/temp]$ rm file-owned-by-root
rm: remove write-protected regular empty file ‘file-owned-by-root’? y
[cbennett@nova ~/temp]$ ls -al
total 8
drwxrwxr-x. 2 cbennett cbennett 4096 Oct 5 21:00 .
drwxr-xr-x. 22 cbennett cbennett 4096 Oct 5 20:58 ..
-rw-rw-r--. 1 cbennett cbennett 0 Oct 5 20:58 my-own-file
[cbennett@nova ~/temp]$
Mi pregunta es ¿cómo pude eliminar un archivo que es propiedad de root y tiene permisos -rw-r--r--
, mientras no soy root?
linux
security
permissions
Carl Bennett
fuente
fuente
Respuestas:
Los permisos, el contenido y todos los atributos son parte del inodo. El nombre está en la entrada del directorio. Los permisos no se heredan de forma recursiva (excepto cuando usa valores predeterminados en las ACL de Posix).
Cuando elimina un archivo, internamente simplemente elimina un enlace duro de la entrada del directorio al inodo. Cuando se eliminan todos los enlaces duros y el inodo no está en uso, el sistema de archivos recuperará el espacio. Solo necesita permiso de escritura en la carpeta, independientemente de los permisos establecidos en el archivo (con la excepción del permiso ext inmutable). Lo mismo para una carpeta vacía.
Cuando elimina una carpeta que no está vacía, necesita permiso de escritura en la carpeta que está eliminando y su padre.
fuente
sudo touch test_file;sudo chattr +i test_file;rm -f test_file
Ver:man chattr
Cuando posee el directorio, se le permite hacer cualquier cosa y los contenidos dentro de él en función de los permisos del directorio. Por lo tanto, a pesar de no ser propietario del archivo, aún pudo eliminarlo porque tenía permiso de lectura / escritura en el directorio en el que residía el archivo.
fuente
vi
archivo se guarda primero en una copia temporal, luego se elimina el archivo original y se cambia el nombre de la copia al original (o algo así).