De la publicación ¿Por qué rm puede eliminar archivos de solo lectura? Entiendo que rm
solo necesita permiso de escritura en el directorio para eliminar el archivo. Pero me resulta difícil digerir el comportamiento en el que podemos eliminar fácilmente un archivo cuyo propietario y grupo son diferentes.
Probé lo siguiente
mtk: mi nombre de usuario
abc: creó un nuevo usuario
$ ls -l file
-rw-rw-r-- 1 mtk mtk 0 Aug 31 15:40 file
$ sudo chown abc file
$ sudo chgrp abc file
$ ls -l file
-rw-rw-r-- 1 abc abc 0 Aug 31 15:40 file
$ rm file
$ ls -l file
<deleted>
Estaba pensando que esto no debería haberse permitido. ¿Un usuario debería poder eliminar solo los archivos de su propiedad? ¿Alguien puede arrojar luz sobre por qué esto está permitido? ¿Y cuál es la forma de evitar esto? Solo puedo pensar en restringir el permiso de escritura del directorio principal para deshabilitar las eliminaciones de archivos por sorpresa.
-rw-rw-rw- 1 root root 0 Sep 1 11:11 /tmp/foo
como mi usuario habitual (/tmp
es pegajoso) porque puedo escribirlo? Sin embargo no puedo.me
/you
tiene un enfoque más claro si se plantea la hipótesis de que el usuario (el que no posee el archivo) creó el enlace. Los pronombres son difíciles de usar; supongamos que Al crea/home/al/file1
, y Bob, que tiene acceso para ejecutar (y tal vez leer)/home/al
, vincula el archivo a él/home/bob/als_file
. En caso de impedimento Bob de la eliminación de un enlace que se creó? ¿Y debería permitirse a Al eliminar (desvincular)/home/bob/als_file
cuando no tiene acceso de escritura/home/bob
? Este camino lleva al caos.Para eliminar un archivo, solo necesita poder escribir en el directorio en el que se encuentra el archivo.
Si no le gusta esto, puede configurar el bit "adhesivo" a través de
chmod +t dir
si está en un SO medio reciente (esta característica se introdujo alrededor de 1986 en SunOS).Si desea ser más fino, necesita un sistema de archivos con una implementación moderna de ACL como ZFS. Las ACL NFSv4 estándar basadas en NTFS incluyen soporte para permisos de eliminación específicos de archivo por usuario y un permiso "delete_child" para directorios.
fuente
t
bit, debe ser el propietario del directorio. Y si posee el directorio, siempre puede eliminar archivos independientemente de si elt
bit está configurado o no. Si vincula un archivo al directorio de otra persona, debe estar preparado para que otra persona pueda eliminarlo. Una alternativa sería crear primero un subdirector tuyo y agregar el archivo allí, ya que el propietario no podría eliminar ese subdirectorio si no está vacío.rm
es una operación en el directorio, no en el archivo. Un archivo se elimina cuando se elimina la última referencia, pero técnicamente, eso es un efecto secundario.La lógica es similar a la de una casa: el propietario o inquilino decide qué invitados desechar, sin importar quién sea el propietario. Además, el invitado desalojado que es bienvenido en otra casa (tiene otro enlace en el directorio de otra persona) no se congelará hasta morir afuera.
fuente