Коробка CentOS с smb и afp.
Существует общий ресурс, к которому у всех есть доступ для чтения / записи, я хочу, чтобы пара папок в этом общем ресурсе не могла быть удалена, но все же позволяла полное чтение / запись в них.
Из-за того, что я читал справочные страницы chmod, я не понимаю, как это сделать.
Какие-либо предложения?
Используйте липкую часть (o+t
) в родительском каталоге и измените владельцев каталогов или файлов, которые вы хотите сделать не удаляемыми, другому пользователю.
Если вы не хотите, чтобы они удаляли ЛЮБЫЕ файлы из каталога, включая те, которые они создают, продолжайте с описанного выше и добавьте бит SUID в каталог (u+s
). Это приведет к тому, что все файлы будут созданы с владельцем, являющимся владельцем каталога (что может привести к тому, что файлы, которые пользователь не сможет открыть снова, в зависимости от их umask). Бит suid каскадно переходит в новые каталоги автоматически, однако бит липкости не работает, поэтому его защита предназначена только для файлов непосредственно в одном каталоге, поэтому это не сможет помешать пользователям создавать файлы в подкаталогах, а затем удалять их.
Использование сетевой файловой системы немного усложняет это, поскольку все, что вам нужно сделать, это изменить ее на пользователя, отличного от того, который samba использует для соединения (сопоставляете ли вы каждого удаленного пользователя с одним пользователем «samba» или используете локальные имена пользователей для всех?), но вам все равно потребуются разрешения, позволяющие самбе получать доступ к содержимому каталогов.
Также обратите внимание, что это может сделать невозможным редактирование файлов в некоторых редакторах, даже если для самого файла установлено значение + w, поскольку многие редакторы фактически сохраняют, записывая временный файл, а затем пытаются переименовать оригинал в файл резервной копии перед переименованием временного файла в его последнее место, но они не смогут переименовывать файлы, которыми они не владеют, в прикрепленном каталоге.
Боюсь, тебе не повезло. Для этого сервер сетевой файловой системы (smb, afp) должен поддерживать xacls, и один из этих xacls означает «предотвращать удаление этого каталога». Насколько мне известно, Samba и NetATalk не имеют их.
Я знаю только одну такую систему, которая поддерживает, и это будет сервер NCP в Novell Open Enterprise Server, который поддерживает такие «флаги» в каталоге. Хотя я не знаю ничего другого, что могло бы это сделать.