Можно ли настроить права доступа к каталогу таким образом, чтобы группа могла читать и записывать файлы и подкаталоги, но ничего не удалять?
Права доступа к каталогу Linux: чтение, запись, но не удаление
Ответы (3)
Может быть достаточно установить липкий бит для каталогов. Пользователи смогут удалять любые файлы, которыми они владеют, но не файлы других пользователей. Этого может быть достаточно для вашего варианта использования. В большинстве систем /tmp настроен таким образом (/tmp имеет значение 1777)
chmod 1775 /контролируемый
Однако, если вы хотите больше контроля, вам придется включить ACL в рассматриваемой файловой системе.
В /etc/fstab добавьте к флагам acl:
/dev/root / ext3 defaults,acl 1 1
Затем вы можете использовать setfacl/getfacl для контроля и просмотра разрешений уровня ACL.
Пример: (Создавайте файлы, после записи они доступны только для чтения, но МОГУТ быть удалены владельцем, но не другими.)
setfacl --set u::rwxs,g::rwx /controlled
setfacl -d --set u::r-x,g::r-x,o::- /controlled
Вы можете установить список ACL по умолчанию для каталога, который будет использоваться всеми созданными там файлами.
Как уже отмечали другие, будьте осторожны, чтобы точно указать, что вы хотите. Вы говорите «записать», но могут ли пользователи перезаписывать свои собственные файлы? Могут ли они изменить существующий контент или просто добавить? После написания он доступен только для чтения? Возможно, вы можете указать более подробную информацию в комментариях.
Наконец, selinux и grsecurity обеспечивают еще больший контроль, но это уже совсем другая проблема. Это может быть довольно сложно для настройки.
setfacl --set u::rwxs,g::rwx /controlled
(где /control — это папка, которую нужно изменить). setfacl -m u::rwx,g::rwx /controlled
- person Buttle Butkus; 15.11.2012
Ну, это будет r-x для этого каталога.
И файлы в нем будут иметь rw-.
Это связано с тем, что файл можно записать, если его разрешения позволяют запись, но его можно удалить только в том случае, если разрешения его каталога разрешают запись.
Возможно это или нет, убедитесь, что перезапись 0-байтового файла не эквивалентна удалению файла в вашем конкретном контексте.