Мое приложение позволяет пользователю привязывать монтирование исходного каталога к целевой точке монтирования. Это все работает правильно, за исключением того, что монтирование не существует вне процесса, который его исправил.
Я свел проблему к очень простому сценарию.
#!/bin/bash
echo "Content-type: text/html"
echo ""
echo ""
echo "<p>Hello</p>"
echo "<p>Results from pid #{$$}:</p>"
echo "<ul>"
c="sudo mkdir /shares/target"
echo "<li>Executed '$c', Results: " $(eval $c) "</li>"
c="sudo mount --bind /root/source /shares/target"
echo "<li>Executed '$c', Results: " $(eval $c) "</li>"
c="sudo mount | grep shares"
echo "<li>Executed '$c', Results: " $(eval $c) "</li>"
c="sudo cat /proc/mounts | grep shares"
echo "<li>Executed '$c', Results: " $(eval $c) "</li>"
echo "</ul>"
Первые две команды создают точку монтирования и выполняют монтирование. Последние две команды проверяют результат. Скрипт выполняется без проблем. Однако монтирование не видно и не доступно в отдельном процессе оболочки. Выполнение последних двух команд в отдельной оболочке не показывает, что монтирование доступно. Если я попытаюсь выполнить «rm -rf /shares/target», я получу «rm: невозможно удалить ‘/shares/target/’: устройство или ресурс заняты». Выполнение «losf | grep /shares/target» не генерирует выходных данных. В отдельной оболочке я переключился на пользователя apache, но монтирование по-прежнему недоступно. Я проверил, что процесс apache не находится в chroot, зарегистрировав вывод «ls /proc/ $$/root". Он указывает на "/".
Я бегу:
- Апач 2.4.6
- ЦенОС 7
- httpd-2.4.6-31.el7.centos.1.x86_64
- httpd-tools-2.4.6-31.el7.centos.1.x86_64
Я включил ведение журнала для отладки, но error_log ничего не указывает.
Заранее спасибо.