Sin usar sudo, preferiblemente?
Sin usar sudo, preferiblemente?
Respuestas:
Tratar:
chattr +i filename
Sin embargo, al hacer esto, el rootusuario no podrá recuperar el archivo. Úselo con precaución.
touch test && chattr +i testarroja un error; chattr: Operation not permitted while setting flags on test. Necesitas sudopara esto. Además de eso: todavía es posible eliminar el archivo: sudo chattr -i test && rm testfunciona.
No, esto no es posible. Imposible que usuarios normales eliminen un archivo: claro.
Deberá sudoevitar que los usuarios eliminen archivos. Su administrador siempre podrá eliminar un archivo.
sudo chattr +i testpuede evitar la eliminación pero lo requiere sudo. Un simple sudo chattr -i testhace posible eliminar el archivo. Ningún otro usuario que el administrador pueda usar chattr.
Y ... simplemente reiniciar y entrar en modo de rescate permitirá que esa persona pueda eliminar ese archivo. Sería un riesgo de seguridad si hubiera un método para nunca poder eliminar un archivo.
Es un poco tosco, pero está cerca: si elimina el acceso de escritura en el directorio, los archivos que contiene no se pueden eliminar. Y no requiere sudosi lo posee:
=^_^= izkata@izein:~$ mkdir test
=^_^= izkata@izein:~$ touch test/delme
=^_^= izkata@izein:~$ chmod a-w test
=^_^= izkata@izein:~$ echo 'Hello' > test/delme
=^_^= izkata@izein:~$ cat test/delme
Hello
=^_^= izkata@izein:~$ rm test/delme
rm: cannot remove `test/delme': Permission denied
Por lo tanto, puede establecer permisos en el archivo como lo desee.
Además, como lo dijo @Rinzwind, ciertamente hay muchas formas de evitarlo.
Para eliminar un archivo, necesita permiso de escritura en todos los directorios a los que está vinculado ese archivo. Para desvincularlo de un directorio, necesita permiso de escritura en ese directorio.
Por lo tanto, siempre que otorgue permiso de escritura (o incluso propiedad) al archivo pero no al directorio o directorios a los que está vinculado ese archivo, ese archivo no se puede eliminar.
La mejor manera de lograrlo sería vincular ese archivo a un directorio que sea propiedad de root y que nadie pueda escribir. En su lugar, podría hacer que sea propiedad de usted, lo que significaría que tanto usted como root podrían eliminarlo.
Eso aún permitiría a otros usuarios vincular ese archivo a otros directorios y luego desvincularlo de allí, pero aún así no podrían eliminar el archivo ya que podrían desvincularlo de su propio directorio.
Tenga en cuenta que para que funcione completamente, el permiso de escritura de cada componente de ruta al archivo tendría que ser controlado. Porque, por ejemplo, si el archivo es /a/b/the-filey usted /a/bno puede escribirlo, pero todos tienen acceso de escritura /a, entonces podrían cambiar el nombre /a/ba otra cosa y recrear el suyo /a/by crear el suyo /a/b/the-fileallí.