2009-05-15 2 views
54

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

+0

Я интерпретирую «удалить все», чтобы включить запрет любых изменений в существующие файлы. Это то, что вы имели ввиду? У ваших пользователей прямой доступ к файловой системе, или они поступают через NFS, Samba или какой-либо другой маршрут (FTP)? – jmanning2k

ответ

45

Может быть достаточно установить липкий бит в каталогах. Пользователи смогут удалять любые файлы, которыми они владеют, но не те, что принадлежат другим пользователям. Этого может быть достаточно для вашего случая использования. В большинстве систем/TMP настроен таким образом (/ TMP установлен 1777)

CHMOD 1775/контролируемый

Однако, если вы хотите больше контроля, вам придется включить ACL в файловой системе в вопросе.

В/и т.д./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 

Вы можете установить список из аКЛ по умолчанию в каталоге, который будет используемый всеми созданными там файлами.

Как уже отмечалось, будьте осторожны, чтобы точно указать, что именно вы хотите. Вы говорите «пишите» - но могут ли пользователи перезаписывать свои собственные файлы? Могут ли они изменить существующий контент или просто добавить? После написания, это только для чтения? Возможно, вы можете указать более подробную информацию в комментариях.

Наконец, selinux и grsecurity обеспечивают еще больший контроль, но это целая другая червь из червей. Это может быть довольно сложно настроить.

+1

Возможно, вы имели в виду 1777 для/tmp? 4 указывает бит SetUID (который, как я полагаю, имеет значение только для каталога в BSD-производных системах). –

+0

Я считаю, что ты прав. Исправлена. Благодарю. – jmanning2k

+1

Я получаю всевозможные ошибки, выполняемые 'setfacl --set u :: rwxs, g :: rwx/controlled' (где«/controlled »- это папка, которая должна быть изменена). 'setfacl -m u :: rwx, g :: rwx/controlled' –

14

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

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

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

+23

Это работает, но вы также не можете добавлять новые файлы. – richq

+0

вы также не можете перемещать файлы – Selah

2

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

+3

Вы можете использовать «chattr + a», что означает, что «файл может быть открыт только в режиме добавления для записи», то есть вы не можете переписывать существующий контент, но вы можете добавить новый контент в конец , Это должно предотвратить усечение. – jmanning2k

+1

Однако chattr + a требует доступа root для установки на новые файлы. – bdonlan

Смежные вопросы