Управление 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, они добавляют немного больше сложности, даже если на первый взгляд это не так.

Другие вопросы по тегам