Да, ваша оболочка пытается быть умной при изменении на каталог символьной ссылки:
$ 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
Удаление файла требует разрешений записи в родительский каталог файла. Такие же разрешения, которые вам нужно будет иметь возможность создавать файлы в каталоге в первую очередь, поэтому ваши требования являются противоречивыми: удаление разрешения на запись на дома пользователя для предотвращения удаления также предотвращает создание файлов.
Обратите внимание, что создание файлов и удаление файлов очень похожи: в обоих случаях вы изменяете записи в каталоге, будь то добавление или удаление записи.
Если вы действительно хотели, я полагаю, вы можете вручную сделать важные существующие файлы, неизменные со следующими:
$ chattr +i filename
Это добавит атрибут i для файла, который помешает кому-либо из модификации или Удаление этого любым способом. Вы можете проверить, является ли файл неизменен таким как таковой:
$ lsattr filename
----i--------e-- filename
, если присутствует i, он неизменен. Чтобы удалить его, используйте:
$ chattr -i filename
Примечание. Вы должны быть root, чтобы добавить или удалить неизменного тега в файлы.
Недостаток этого, конечно, заключается в том, что вам нужно будет идти и сделать это вручную для всех файлов, которые вы хотите быть защищены от удаления. Увеличивается, это не помешает пользователю создавать новые файлы.