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