Для некоторых особых целей я хочу запретить не-root пользователям Linux Server изменять или переименовывать имена файлов. Однако они могут изменять и записывать содержимое файла. Как это сделать из командной строки.
решение1
Чтобы переименовать файл, права на запись в файл не имеют значения, переименование файла — это изменение каталога, а не файла. Это изменение записи каталога на другое имя, указывающее на файл.
Поэтому все, что вам нужно сделать, это изменить права доступа к каталогу. Например:
chown root: .
chmod 755 .
Это не позволит пользователям переименовывать файлы в нем, а также создавать или удалять файлы. Если вы все еще хотите, чтобы они могли это делать, вы можете вместо этого сделать каталог доступным для записи, но также установить бит t
. С установленным битом пользователи (кроме владельца каталога, который не ограничен) могут удалять или переименовывать только файлы, которыми они владеют.
chown root:people-who-can-create-file-here .
chmod 1775 .
chown root:people-who-can-modify-the-files file1-that-must-not-be-rename ...
chmod 664 file1-that-must-not-be-rename ...