Попробуйте:
chattr +i filename
Это позволит сделать файл невозможным для удаления даже пользователем root
- используйте с осторожностью.
Это немного грубо, но это близко - если вы удалите права на запись в каталог, файлы внутри него не могут быть удалены. И это не требует sudo
, если вы им владеете:
=^_^= 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
Таким образом, вы можете устанавливать разрешения для самого файла так, как вы хотите.
Кроме того, как утверждает @Rinzwind, есть много способов обойти это.
Для удаления файла Вы должны записать разрешение во все каталоги, с которыми связан файл. Для удаления связи с ним с одним каталогом Вы должны записать разрешение в тот каталог.
Таким образом, пока Вы даете разрешение записи (или даже владение) в файл, но не в каталог или каталоги, с которыми связан файл, тот файл не может быть удален.
Лучший способ достигнуть его состоял бы в том, чтобы связать тот файл с каталогом, который принадлежит корню, и это не является записываемым никем. Вы могли сделать принадлежавшим Вам вместо этого, которые будут подразумевать, что и Вы и корень могли удалить его.
Это все еще позволило бы другим пользователям связывать тот файл с другими каталогами и удалять связь с ним оттуда после этого, но они все еще не смогут удалить файл, как они смогли бы удалить связь с ним с Вашим собственным каталогом.
Обратите внимание, что, чтобы это работал полностью, разрешением записи каждого компонента контура в файл нужно было бы управлять. Поскольку, например, если файл /a/b/the-file
и Вы имеете /a/b
не записываемый кем-либо, но у всех есть доступ для записи к /a
, затем они могли переименовать /a/b
к чему-то еще и воссоздают их собственное /a/b
и создайте их собственное /a/b/the-file
там.
Нет, это невозможно. Для обычных пользователей невозможно удалить файл: обязательно.
Вам понадобится sudo
, чтобы пользователи не могли удалять файлы. Ваш администратор всегда сможет удалить файл.
sudo chattr +i test
может предотвратить удаление, но требует sudo
. Простой sudo chattr -i test
позволяет удалить файл. Ни один другой пользователь, кроме администратора, не может использовать chattr
.
И ... простая перезагрузка и переход в режим восстановления позволит этому человеку иметь возможность удалить этот файл. Это было бы угрозой безопасности, если бы существовал метод, который никогда не сможет удалить файл.