Монтирование диска в Debian из кода PHP

0

Я занимаюсь этим уже два дня и не смог найти способ (хороший или плохой) сделать это для работы.

Я должен иметь возможность динамически монтировать диски по сети с моих страниц веб-сайта (эта часть неизбежна).

У меня нет проблем делать это прямо на консоли со следующей командой

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.

  • 0
    Как это не сработало? Добавьте некоторые детали здесь.
Теги:
debian
mount

2 ответа

0
Лучший ответ

У меня есть дикая идея...

Вы можете установить cron для запуска от имени root, который проверяет команды монтирования из вашего скрипта. Сценарий просто установил команду монтирования, которая будет обработана, и когда cron доберется до нее, запустит mount, отметит команду как обработанную и записывает в файл журнала, который вы могли бы отобразить.

  • 0
    На самом деле это очень хорошая идея, так как мне все равно придется перемещать файлы, это займет слишком много времени (иногда), управляя этим с помощью php, я сделаю это с помощью cron.
0

Небезопасно запускать команды 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

  • 0
    о человек, пожалуйста, никогда не делай этого :(
  • 0
    Да, я видел эту опцию, но это казалось еще хуже, чем сценарий, который автоматически переключался бы с www-данных на root, поэтому я надеялся найти что-то более «чистое» (но если я не найду ничего другого, я мог бы прийти к этой опции)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню