У меня странная проблема с mount. Пользователь root не может увидеть монтирование, созданное PHP / Apache с скриптом bash от имени root.
Действия по воссозданию проблемы:
Настройка fstab для точки монтирования:
vim / etc / fstab
/ path_to_shared / resource / path_to_local / папка по умолчанию, nofail, nobootwait, bind 0 2
Создать скрипт Bash.
Шаги для настройки apache для возможности запуска скрипта от имени root:
Затем я запускаю скрипт (/path_to_script/script.sh) из PHP / Apache.
Когда сценарий выполнен, root не может видеть содержимое подключенного ресурса (/ path_to_shared / resource) внутри подключенной папки (/path_to_local/folder).
Если я вручную запускаю ту же команду, что и root, root может видеть содержимое монтирования. Но когда команда запускается Apache, root не может видеть содержимое монтирования, в то время как Apache может видеть содержимое монтирования.
Пример # 1:
В этом примере пользователь Apache может видеть содержимое смонтированной папки, смонтированной с помощью сценария bash.
PHP / Apache получает список каталогов:
scandir ("/ path_to_local / folder")
Показывает содержимое /path_to_shared/resource.
Пример # 2:
В этом примере пользователь root не может видеть содержимое папки, смонтированной Apache.
root @ server ~: ls -al / path_to_local / folder
Не показывает содержимое папки.
Пример № 3:
В этом примере пользователь root вручную запускает команду монтирования. После этого пользователь root может увидеть монтирование. Это пример, показывающий, что работает та же команда, что и пользователь root, из командной строки.
root @ server ~: mount / path_to_local / folder
root @ server ~: ls -al / path_to_local / folder
Показывает содержимое /path_to_shared/resource.
Дополнительное обновление
Я нашел причину, но я не знаю, каково подходящее решение. Очевидно, в Apache для параметра PrivateTmp установлено значение true. Если я установлю значение false, оно будет работать так, как я намереваюсь. Однако, по-видимому, это открывает для меня проблемы с безопасностью в папке / tmp. Информация, которую я нашел, была из аналогичного вопроса / ответа по адресу: https://stackoverflow.com/questions/32869660/bind-mount-not-visible-when-created-from-a-cgi-script-in- апаш . [тысяча сто тридцать два]
Я бы предпочел создать монтирование в реальном времени, а не ждать события crontab. Если я не придумаю решение в реальном времени, я собираюсь удалить команду mount из моего скрипта Apache и создать mount с событием crontab.