Без використання судо, бажано?
Без використання судо, бажано?
Відповіді:
Спробуйте:
chattr +i filename
Це, однак, зробить файл, який не може бути відновлений навіть root
користувачем - використовувати обережно.
touch test && chattr +i test
його виконанні викидає помилку; chattr: Operation not permitted while setting flags on test
. Вам sudo
для цього потрібно . Поруч із цим: ще можна видалити файл: sudo chattr -i test && rm test
працює.
Ні, це неможливо. Звичайним користувачам неможливо видалити файл: обов'язково.
Вам потрібно sudo
буде запобігти видаленню файлів користувачам. Ваш адміністратор-завжди зможе видалити файл.
sudo chattr +i test
може запобігти видаленню, але вимагає sudo
. Простий sudo chattr -i test
дозволяє видалити файл. Жоден інший користувач, крім адміністратора, не може використовувати chattr
.
І ... просто перезавантаження та перехід у режим порятунку дозволить цій людині мати змогу видалити цей файл. Це було б ризиком для безпеки, якби був метод, який ніколи не зможе видалити файл.
Це трохи неочищено, але це близько - якщо ви видалите доступ для запису в каталог, файли всередині нього не можуть бути видалені. І це не вимагає, 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, навколо цього, безумовно, існує багато способів.
Щоб видалити файл, вам потрібен дозвіл на запис у всіх каталогах, до яких файл пов’язаний. Щоб від’єднати його від однієї директорії, вам потрібно дозволити на запис до цього каталогу.
Якщо ви даєте дозвіл на запис (або навіть право власності) на файл, але не в каталог або каталоги, до яких файл пов'язаний, цей файл не можна видалити.
Найкращим способом досягти цього було б прив’язати цей файл до каталогу, який належить root, і який ніхто не може записувати. Ви можете зробити так, щоб він належав вам, а це означало б, що і ви, і root могли видалити його.
Це все ще дозволить іншим користувачам зв’язати цей файл з іншими каталогами та від’єднати його звідти згодом, але вони все одно не зможуть видалити файл, оскільки вони зможуть від’єднати його від вашого власного каталогу.
Зауважте, що для того, щоб повноцінно працювати, дозвіл на запис кожного компонента шляху до файлу повинен був контролюватися. Оскільки, наприклад, якщо файл є, /a/b/the-file
і ви /a/b
не можете його записувати ніким, але всі мають доступ до запису /a
, вони можуть перейменувати /a/b
щось інше і відтворити своє власне /a/b
і створити /a/b/the-file
там свій власний .