Cómo crear un archivo, incluso el usuario root no puede eliminarlo

13

¿Cómo crear un archivo, incluso el usuario root no puede eliminarlo?

Kumar
fuente
99
Si bien la respuesta de tante debe cubrir su pregunta, un meta-comentario: sería mucho más fácil responder si agregara su justificación a su pregunta. ¿Tal vez hay una solución a su problema que no consiste en evitar la eliminación de los archivos?
fschmitt

Respuestas:

33

Respuesta simple: no puedes, root puede hacer todo.

Puede configurar el atributo "i" con chattr (al menos si está en la extensión {2,3,4}), lo que hace que un archivo no se pueda cambiar, pero root simplemente puede desactivar el atributo y eliminar el archivo de todos modos.

Más complejo (y solución hack fea): coloque el directorio que desea que no se pueda cambiar para root en el servidor remoto y móntelo a través de NFS o SMB. Si el servidor no ofrece permisos de escritura que bloquea la cuenta raíz local. Por supuesto, la cuenta raíz local podría simplemente copiar los archivos localmente, desmontar los elementos remotos, colocar la copia en su lugar y cambiar eso.

No puede bloquear la eliminación de la raíz de sus archivos. Si no puede confiar en su raíz para mantener los archivos intactos, está teniendo un problema social, no técnico.

tante
fuente
Esta pregunta me la hace un entrevistador. No se la respuesta. Le pedí una respuesta. Lo dijo posible y encuentra la solución por ti mismo.
Kumar
12
algún día usted también será un entrevistador y podrá hacer sus propias preguntas sin sentido: "¿puede el root crear un archivo tan grande que él no pueda mv?" (que es una broma tonta basada en la teosofía cristiana, y una broma terrible si no estás familiarizado con el campo)
msw
55
@msw: Se podría argumentar que es una broma terrible, incluso si está familiarizado con el campo.
Matthew Crumley
@matthew crumley: culpable de los cargos :)
msw
@msw: Acabo de notar que incluso admitiste que era una broma tonta. Y FWIW, me gustan (algunos) chistes tontos, así que realmente me gustó. Esto se está poniendo bastante lejos fuera de tema aunque :)
Mateo Crumley
34

¡Póngalo en un CD-rom! ;)

(Esto debería ser un comentario pero no puedo hacer comentarios ...)

Laurent
fuente
Hay un sentido detrás del límite de reputación para los comentarios ;-) Solo un pequeño impulso que invita a la reflexión. sin llama prevista ;-)
echox
66
+1 Pero eso funcionaría.
Richard Holloway
1
Esta y la respuesta de @mouviciel es la única solución correcta. Incluso el todopoderoso @root todavía está sujeto a las reglas establecidas por el hardware.
Lie Ryan
15

Coloque su archivo en un sistema de archivos de solo lectura. Esto puede ser un FS remoto donde la raíz ya no es raíz, un CD-ROM o un dispositivo extraíble que se puede proteger contra escritura, por ejemplo, una tarjeta SD.

Mouviciel
fuente
2

Hace mucho tiempo escribí un parche de kernel (a 2.2.ancient) donde intentar eliminar un archivo llamado SELFDESTRUCT eliminó el proceso de llamada. Esta protegido contra accidental "rm -rf *".

pjc50
fuente
Hace mucho tiempo y lejos. ¿Cómo lo hiciste realmente (comandos)?
Michael Durrant
1

Puede usar chattr +ipara hacer un archivo inmutable.

Por supuesto, un usuario inteligente con acceso a la raíz aún podría usar chattr -ipara eliminar el atributo inmutable y luego eliminar el archivo, pero también podría deshacer cualquiera de los otros intentos de bloquear el acceso que se enumeran aquí.

Yo diría que chattr es la forma correcta de Unix para hacer esto.

jeremyjjbrown
fuente