Mount Hidden From Root User

У меня странная проблема с mount. Пользователь root не может увидеть монтирование, созданное PHP / Apache с скриптом bash от имени root.

Действия по воссозданию проблемы:

  • Настройка fstab для точки монтирования:

    vim / etc / fstab

    / path_to_shared / resource / path_to_local / папка по умолчанию, nofail, nobootwait, bind 0 2

  • Создать скрипт Bash.

  • Настройте Apache, чтобы он мог запускать скрипт bash от имени пользователя root.
  • В bash-скрипте монтируем общий ресурс: mount / path_to_local / folder

Шаги для настройки apache для возможности запуска скрипта от имени root:

  • visudo
  • www-data ALL = (ALL) NOPASSWD: /path_to_script/script.sh *

Затем я запускаю скрипт (/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.

1
задан 28 June 2019 в 23:50

0 ответов

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

Похожие вопросы: