Для какой-то особой цели я хочу запретить некорневым пользователям Linux Server изменять или переименовывать имена файлов. Тем не менее, они могут изменять и записывать содержимое файла. Как это сделать из командной строки.
Цитируя Стефана Шазеля из , этот ответ на Unix & amp; Linux SE .
Чтобы переименовать файл, разрешения на запись в файл не имеют значения, переименование файла - это изменение каталога, а не файла. Это изменяет запись каталога, чтобы иметь другое имя, указывающее на файл.
Так что все, что вам нужно сделать, это изменить права доступа к каталогу. Например:
chown root: . chmod 755 .
Это будет препятствовать пользователям переименовывать файлы, а также создавать и удалять файлы. Если вы все еще хотите, чтобы они могли это делать, вы можете вместо этого сделать каталог доступным для записи, но также установить бит
t
. С этим битом пользователи (кроме владельца каталога, который не ограничен) могут только удалять или переименовывать свои собственные файлы.blockquote>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 ...
chmod +t [FILE]
Устанавливает фиксированный бит , который делает именно то, что вы описываете.
РЕДАКТИРОВАТЬ: Ну, чтобы быть более конкретным, он мешает другим пользователям переименовать файл. Так что зависит от того, что вы хотите, именно.