[Решено]Странная проблема с Apache + *.php + mount

Автор Synthex, 04 июня 2018, 15:29:05

« назад - далее »

0 Пользователи и 3 гостей просматривают эту тему.

Synthex

Есть вот такой скрипт( проще некуда, сделан для опытов )
#!/usr/bin/php
<?php
$cmd 
"sudo mount -v -o loop /mnt/public/Images/mathcad15.iso /tmp/mathcad15";
system($cmd);


В sudoers добавлена строка(для опыта разрешил всё, правильнее только mount/umount):

www-data ALL=NOPASSWD: ALL

Вот так всё работает как задумано:
sudo -u www-data /path/test.php

а вот так http://server/test.php, вроде всё отрабатывает, mount говорит что всё ок, losetup говорит, что всё подключено, НО, папка куда монтирован образ пуста.

Проблема всплыла при переносе web приложения с Debian 8 на 9.


ecc83

Смею предположить, что в браузере открывается ссылка от другого пользователя.
Внесите своего пользователя в группу www-data и не занимайтесь извращением с sudoers.

sudo usermod -aG www-data $USER

Synthex

В обоих вариантах в auth.log записано, что mount выполнился от www-data, как и задумано.

ecc83

Цитата: Synthex от 04 июня 2018, 16:07:06mount выполнился от www-data, как и задумано.

А под каким пользователем вы входите в систему и пытаетесь открыть http://server/test.php ?

Synthex

Проблема на Debian9 с Apache и без GUI стоит на виртуалке (xenserver). К http://server/test.php обращаюсь с другого компьютера.

Давно сделал систему, чтобы iso образа из одной папки автоматически при загрузке подключались в другую папку. И простой веб интерфейс чтобы подключать/отключать образа. Работает исправно много лет на отдельном файл сервере, пережило апгрейд с Debian 7 на 8. Решил на виртуалке настроить тоже самое, и на тебе такой глюк.

ecc83

Цитата: Synthex от 04 июня 2018, 16:40:31Решил на виртуалке настроить тоже самое, и на тебе такой глюк.

Я никогда не устанавливал Apache на Debian. Ставил локальный веб сервер на FreeBSD для собственных нужд.
Но мне кажется, что у вас какие то проблемы с правами.

endru

включай debug и изучай логи. не бывает странных проблем.

Synthex

Apache запускается с помощью systemd.
В systemd профиль apache2 настроен так, что монтирование сделанное из скриптов под apache становится приватным, вне него не доступным.
К тому же всё отмонтируется при перезапуске apache.(так и нашел)
Поэтому ошибок нет, всё ок, а содержимое монтированных ресурсов не доступно.

Требуется PrivateTmp=false в systemd.

$ cp /lib/systemd/system/apache2.service /etc/systemd/system/
$ vi /etc/systemd/system/apache2.service

установить PrivateTmp=false
перезапустить apache.