Разрешения на доступ к каталогам в Linux для записи, но не удаления - PullRequest
57 голосов
/ 15 мая 2009

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

Ответы [ 3 ]

47 голосов
/ 15 мая 2009

Этого может быть достаточно, чтобы установить липкий бит в каталогах. Пользователи смогут удалять любые принадлежащие им файлы, но не файлы других пользователей. Это может быть достаточно для вашего случая использования. В большинстве систем / 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 обеспечивают еще больший контроль, но это совсем другая банка червей. Это может быть довольно сложно настроить.

15 голосов
/ 15 мая 2009

Ну, для этого каталога это будет r-x.

И файлы в нем будут иметь rw -.

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

2 голосов
/ 15 мая 2009

Возможно или нет, убедитесь, что перезапись 0-байтовым файлом не эквивалентна удалению файла в вашем конкретном контексте.

...