Управление Apache для компенсации маскировки безопасности WebDAV
Когда пользователь создает файл через WebDAV, поведение по умолчанию состоит в том, что файл принадлежит пользователю и группе, выполняющей процесс Apache, с umask 022.
К сожалению, это лишает непривилегированных пользователей возможности писать в файлы другими способами, не будучи членом группы, в которой работает Apache (что кажется мне особенно плохой идеей).
Мое текущее решение состоит в том, чтобы установить umask 000
в Apache envvars и удалите все мировые разрешения из родительского каталога webdav для пользователя. Итак, если общий ресурс WebDAV /home/foo/www
, то /home/foo/www принадлежит www-data:foo
с разрешениями 770
, Это не позволяет другим непривилегированным пользователям, более или менее, но в лучшем случае это ненормально, а в худшем - катастрофа безопасности.
Из моих исследований и поисков в mod_dav и Apache я не могу найти разумного решения, кроме задачи cron, отменившей все права назад (я бы предпочел не иметь нагрузки и повышенной сложности на сервере). SuExec также не будет работать, потому что операции WebDAV не будут выполняться от имени другого пользователя.
Есть мысли по этому поводу? Спасибо.
1 ответ
Я обошел Apache из-за отсутствия возможности переключения пользователей с помощью Posix ACL. Это позволяет вам добавлять больше групповых и пользовательских записей в каждый файл, а также позволяет устанавливать разрешения по умолчанию для каталогов, которые автоматически добавляются к каждому файлу, созданному внутри.
Если я правильно понял, и вы работаете в Linux, вы можете включить Posix ACL, вам нужно перемонтировать файловую систему с помощью acl
вариант. Тогда вы можете использовать setfacl
а также getfacl
управлять дополнительными разрешениями. В системах на основе Debian эти инструменты можно найти в пакете acl
, Подробнее о Posix ACL вы можете прочитать в man acl
а также man setfacl
, Posix ACL также доступны на некоторых системах BSD и MacOS, но я никогда не использовал их там.
Например, вы можете создать папку, в которой группа fileserver
всегда имеет права на чтение и запись для всех файлов в:
setfacl -Rm default:group:fileserver:rw,group:fileserver:rx /srv/fileserver
Это приведет к getfacl /srv/fileserver
сообщить что-то вроде этого:
# file: /srv/fileserver
# owner: aef
# group: aef
user::rwx
group::rwx
group:fileserver:r-x
mask::rwx
other::r-x
default:user::rwx
default:group::rwx
default:group:fileserver:rw-
default:mask::rwx
default:other::r-x
Предупреждение: вам, вероятно, понадобится некоторое время, чтобы привыкнуть к спискам управления доступом Posix, они добавляют немного больше сложности, даже если на первый взгляд это не так.