Монтирование общего ресурса CIFS на Linux через веб-интерфейс - PullRequest
0 голосов
/ 23 марта 2020

Я отчаянно пытаюсь смонтировать общий ресурс CIFS на коробке Debian 10 через веб-интерфейс пользователя и сделать его доступным для всей системы. Команда монтирования выполнена успешно, но точка монтирования не указана в / etc / mtab или / proc / mounts и, следовательно, также не показана командой монтирования.

Я использую apache2 в качестве веб-сервера и пробовал разные подходит ко всем с одинаковым результатом.

Цель состоит в том, чтобы использовать php -скрипт с Apache или Nginx, который монтирует общий ресурс, который является действительным и видимым для всей ОС, как если бы я использовал команда mount в командной строке.

Я пробовал разные способы с монтированием. php, который вызывает bash -скрипт для монтирования общего ресурса:

  • добавлено www-data для sudoers без пароля и вызова сценария, содержащего "sudo mount ..."
  • использовал c -компилированную оболочку, которая выполняется как root, которая вызывает bash -скрипт, который монтирует ресурс
  • установленный php -fpm с включенным root сокетом для вызова сценария bash
  • позволяет сценарию bash добавить общий ресурс в / etc / fstab и выполнить mount -a

Все эти подходы работать как следует, если вызывается из командной строки, даже когда вызывается как www-data пользователь (где это возможно).

Кажется, что все они также монтируют общий ресурс при вызове через веб-интерфейс, потому что если я использую те же приемы для запуска монтирования без параметров в php -скрипте с веб-сайта, монтирование указано в порядке. Также вторая попытка смонтировать общий ресурс через веб-интерфейс выдает сообщение о том, что устройство занято.

Но когда я использую команду mount без каких-либо параметров в командной строке, точка монтирования не указывается, и я не нахожу это в / etc / mtab или / proc / mounts.

В последнем подходе, когда я позволяю сценарию редактировать / etc / fstab и вызывать 'mount -a', поведение точно такое же (указано в веб-интерфейсе, но не в командной строке), но когда Я перезагружаю общий ресурс, смонтированный как ожидалось и видимый.

Так что я очень уверен, что пропускаю какое-то ограничение на пользовательское пространство / песочницу / терминал, где запускается apache2, что оказывает некоторое влияние на команду mount. Что странно, потому что я даже могу отредактировать / etc / fstab с помощью сценариев и, кажется, у меня есть root доступ ко всему - даже к монтированию, иначе он вообще не запустится. Но в любом случае команда mount, похоже, записывает свои результаты монтирования где-то в другом месте при вызове через веб-интерфейс.

У кого-нибудь есть идея, указывающая мне правильное направление? `

Заранее спасибо Аксель

Ответы [ 2 ]

1 голос
/ 01 апреля 2020

Apache2 имеет свойство "PrivateTmp", которое устанавливается в /etc/systemd/multi-user.target.wants/apache2.service. Попробуйте прокомментировать это, поставив ха sh (#) перед строкой.

При монтировании используется временная папка, а если Apache использует личную временную папку, она может не отображаться в списке монтирования.

0 голосов
/ 23 марта 2020

Если у вас проблемы с разрешениями, и вы не хотите копать слишком глубоко, я рекомендую использовать простую функцию записи в файл в PHP, а затем с CRON JOB выполнить скрипт, который, если найдет этот файл, удалите его и выполните желаемую функцию. Это задание cron не должно иметь проблем с разрешением на всем компьютере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...