linux — монтирование диска в debian из кода php

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

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

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

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.

0

Решение

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

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

0

Другие решения

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

0

По вопросам рекламы [email protected]