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

Да, ваша оболочка пытается быть умной при изменении на каталог символьной ссылки:

$ mkdir a
$ ln -s a b
$ cd b
$ pwd
/home/michas/b
$ pwd -P
/home/michas/a

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

См. pwd справки:

  -P        print the physical directory, without any symbolic links

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

команда cd является встроенной оболочкой и примет значение по умолчанию к интерпретации CD. как "отпуск текущая символьная ссылка", вместо "использования физический родитель". Но можно изменить то поведение. cd справки говорит:

   -P      use the physical directory structure without following symbolic
           links: resolve symbolic links in DIR before processing instances
0
13.03.2015, 23:57
2 ответа

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

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

2
28.01.2020, 02:36

Если вы действительно хотели, я полагаю, вы можете вручную сделать важные существующие файлы, неизменные со следующими:

$ chattr +i filename

Это добавит атрибут i для файла, который помешает кому-либо из модификации или Удаление этого любым способом. Вы можете проверить, является ли файл неизменен таким как таковой:

$ lsattr filename
----i--------e-- filename

, если присутствует i, он неизменен. Чтобы удалить его, используйте:

$ chattr -i filename

Примечание. Вы должны быть root, чтобы добавить или удалить неизменного тега в файлы.

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

0
28.01.2020, 02:36

Теги

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