Можно ли создать файл с полными разрешениями для всех, но его невозможно удалить?

Без использования sudo, предпочтительно?

1
задан 31 May 2014 в 22:39

3 ответа

Нет, это невозможно. Невозможно для обычных пользователей удалить файл: обязательно.

Вам понадобится sudo, чтобы пользователи не могли удалять файлы. Ваш администратор всегда сможет удалить файл. sudo chattr +i test может предотвратить удаление, но требует sudo. Простой sudo chattr -i test позволяет удалить файл. Ни один другой пользователь, кроме администратора, не может использовать chattr.

И ... просто перезагрузка и переход в режим спасения позволят этому человеку удалять этот файл. Это был бы риск для безопасности, если бы был способ никогда не удалять файл.

23
ответ дан 25 May 2018 в 01:04

Немного грубо, но это близко - если вы удаляете доступ на запись в каталоге, файлы внутри него не могут быть удалены. И это не требует 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, там, конечно, много способов.

8
ответ дан 25 May 2018 в 01:04
  • 1
    Это похоже на то, что хотел OP. (Хотя , почему они этого хотели, я не уверен.) Пользователи могут читать, изменять и запускать файлы, но не могут отменить (удалить) их. – Eliah Kagan 3 October 2014 в 23:11

Чтобы удалить файл, вам необходимо получить разрешение на запись во все каталоги, к которым привязан файл. Чтобы отключить его от одного каталога, вам необходимо написать разрешение на этот каталог.

До тех пор, пока вы даете разрешение на запись (или даже право собственности) на файл, но не на каталог или каталоги, к которому этот файл связан , этот файл не может быть удален.

Лучший способ добиться этого - связать этот файл с каталогом, принадлежащим root, и который не может быть написан кем-либо. Вы могли бы сделать это принадлежащим вам, а это означало бы, что и вы, и корень могли бы его удалить.

Это все равно позволит другим пользователям связать этот файл с другими каталогами и отменить его оттуда после этого, но они все равно будут

Обратите внимание, что для того, чтобы полностью работать, разрешение на запись каждого компонента пути к файлу должно было бы быть удалено из вашего собственного каталога.

контролируется. Потому что, например, если файл /a/b/the-file, и вы /a/b недоступны для записи кем угодно, но у всех есть доступ на запись к /a, тогда они могут переименовать /a/b в нечто другое и воссоздать свои собственные /a/b и создать их собственный /a/b/the-file там.

8
ответ дан 25 May 2018 в 01:04

Другие вопросы по тегам:

Похожие вопросы: