Я занимаюсь этим уже два дня и не смог найти способ (хороший или плохой) сделать это для работы.
Я должен иметь возможность динамически монтировать диски по сети с моих страниц веб-сайта (эта часть неизбежна).
У меня нет проблем делать это прямо на консоли со следующей командой
mount -t cifs //IP-REMOTE-MACHINE/Folder -o username=username,password=password /mnt/share
Очевидно, что попытка просто выполнить shell_exec()
этой команды не будет работать без прав root.
Я попытался использовать shell_exec()
скрипт, в котором я бы переключился на пользователя root (через su или sudo mycommand), но оба они не работали (никогда не удавалось выполнить сценарий, который автоматически переключил бы пользователя на root с корневым pwd жестко закодированным (даже если это кажется очень плохой идеей, я мог бы принять этот atm).
После этого я попытался использовать pmount
но не нашел способ доступа к удаленному файлу (не думаю, что это возможно, но я, возможно, что-то пропустил?)
Все, что работает на машине Debian с apache2.
У меня есть дикая идея...
Вы можете установить cron для запуска от имени root, который проверяет команды монтирования из вашего скрипта. Сценарий просто установил команду монтирования, которая будет обработана, и когда cron доберется до нее, запустит mount, отметит команду как обработанную и записывает в файл журнала, который вы могли бы отобразить.
Небезопасно запускать команды sudo с www-данными (пользователь для веб-серверов в Debian).
Но если вы хотите запустить sudo [command] в php-скрипте, вы должны добавить пользовательские www-данные в sudoers: http://www.pendrivelinux.com/how-to-add-a-user-to-the- sudoers-лист/
И тогда вы можете выполнить: sudo mount...
EDIT: безопаснее добавлять в visudo:
www-data ALL= NOPASSWD: /bin/mount
Чтобы позволить www-данным использовать только sudo/bin/mount