Рейтинг:0

Монтирование файловой системы для всех процессов из службы/веб-сервера

флаг it

Я пытаюсь создать локальный веб-сайт, который позволяет мне расшифровать файл, смонтировать содержащуюся в нем файловую систему и запустить службу systemd без доступа к консоли. Затем запущенная служба использует файлы в смонтированной файловой системе. Веб-сервер в настоящее время запускает мой код Python через cgi, чтобы обслуживать простой веб-сайт для расшифровки и монтирования этой файловой системы. Я сделал исключения в файле sudoers, чтобы пользователь www-data мог выполнять определенные команды, которые я вызываю в python.

Когда я расшифровываю файл с помощью этого веб-сайта (который вызывает cryptsetup luksOpen) расшифрованное устройство выглядит так, как ожидалось:

> файл /dev/mapper/service-volume
/dev/mapper/service-volume: символическая ссылка на ../dm-0

Но когда мой код Python пытается смонтировать это объем обслуживания он монтируется только в рабочем процессе apache, недоступен для моей оболочки или других процессов (XXX — это PID рабочего процесса apache):

>точка монтирования /mnt/служебная папка
/mnt/service-folder не является точкой монтирования
> кот /proc/XXX/mounts
...
/dev/mapper/service-volume /mnt/service-folder ext4 rw, relatime 0 0

Выполняемая операция монтирования sudo /bin/mount /dev/mapper/service-volume /mnt/service-folder с помощью питонов subprocess.run().

Итак, мои вопросы: что там происходит? Это какая-то магия пространства имен/cgroups? И как эту папку можно смонтировать для другого сервиса/процесса, отличного от самого apache?


Дополнительная информация:

служебная папка существует (без смонтированной файловой системы):

> ls -la /mnt/служебная-папка
всего 8
drwxr-xr-x 2 root root 4096 23 января 21:25 .
drwxr-xr-x 4 root root 4096 23 января 21:25 ..
paladin avatar
флаг id
Помимо того, что делать такие вещи с помощью веб-сервера опасно, существует ли ваш каталог `/mnt/service-folder`?
Kaemmelot avatar
флаг it
Да, смотрите мой обновленный вопрос. Также обратите внимание, что веб-сервер успешно смонтировал файловую систему, но только в рабочем процессе веб-сервера.
paladin avatar
флаг id
Обычно в конфигурации по умолчанию веб-сервер подключается к `/var/www`, это означает, что все другие файлы/каталоги не видны для веб-сервера. Может быть, это влияет на вас? Попробуйте смонтировать в `/var/www/yoursite/service-folder`.
Kaemmelot avatar
флаг it
Апач не chroot. И даже если он будет chroot туда, (уже успешная) операция монтирования будет монтироваться в подкаталог `/var/www`. Я просмотрел эти каталоги и ничего не нашел.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.