Диски, смонтированные с помощью команды Apache sudo WSGI, не видны на хосте - PullRequest
0 голосов
/ 11 января 2019

В системе Ubuntu 18.01 LFS (мой частный домашний сервер, доступный только из моей домашней локальной сети) я создал веб-приложение Apache / WSGI / flask, которое монтирует зашифрованные диски (через cryptsetup luksOpen, а затем mount) на веб-запрос. Пароль для cryptsetup отправляется через HTTP POST, Python-скрипт (который вызывает себя через sudo, а затем вызывает cryptsetup и mount через subprocess.run) вводится в /etc/sudoers.d ... без необходимости пароль, так что все работает нормально с sudo -u www-data ./starthepythonscript_that_mounts_stuff_via_sudo.py без пароля. После вызова этого скрипта я вижу смонтированные диски и cd в них.

Однако это поведение кажется другим, когда скрипт вызывается из того же пользователя "www-data", но из службы Apache WSGI Ubuntu. В этом случае монтирование кажется успешным, но монтирования не видны в системе (ни при перечислении содержимого соответствующей смонтированной папки, ни при наборе mount - например, как root - в системе, в которой работает Apache). Они просто не отображаются - существует ли какой-то механизм песочницы, реализованный для службы Apache в Ubuntu?

Моя цель - смонтировать диски с помощью скрипта Apache / WSGI / flask / sudo, но «обычным» образом, чтобы пользователи на одной машине могли видеть это через mount или cd.

Любая подсказка приветствуется!

1 Ответ

0 голосов
/ 12 января 2019

Nevermind - я нашел ответ на unix.stackexchange.com - служба apache запускается с PrivateTmp=true, который создает личное пространство имен монтирования ядра. Один из вариантов - убрать этот флаг или установить его в false - другой - сохранить настройки и (из корневого пространства имен) использовать nsenter -a -t APACHEPID bash, чтобы запустить bash, который видит монтирования.

...