从 php 代码在 debian 中安装驱动器
Mounting a drive in debian from php code
我已经做了两天了,但一直没能找到任何方法(好或坏)来实现它。
我必须能够从我的网站页面通过网络动态安装驱动器(这部分是不可避免的)。
我可以直接在控制台上使用以下命令进行操作
mount -t cifs //IP-REMOTE-MACHINE/Folder -o username=username,password=password /mnt/share
显然,如果没有 root 权限,尝试只执行此命令的 shell_exec()
是行不通的。
我尝试 shell_exec()
一个脚本,在该脚本中我将切换到 root 用户(通过 su 或 sudo mycommand),但它们都不起作用(从来没有能够成功地执行一个脚本自动将我的用户切换到 root,即使 root pwd 是硬编码的(即使这感觉是一个非常糟糕的主意,我本可以接受那个 atm)。
在那之后我尝试使用 pmount
但从未找到访问远程共享文件的方法(我认为这是不可能的,但我可能在这里遗漏了什么?)
在装有 apache2 的 Debian 机器上 运行 所有这些。
我有一个疯狂的想法...
您可以将 cron 设置为 运行 作为 root 来检查脚本中的安装命令。该脚本将简单地设置一个要处理的挂载命令,当 cron 到达它时,运行s 挂载,将命令标记为已处理,并写入一个日志文件,然后您可以显示该文件。
运行 使用 www-data(Debian 中 web 服务器的用户)的 sudo 命令是不安全的。
但是如果你想在 php 脚本中 运行 sudo [command],你必须在 sudoers 中添加用户 www-data:http://www.pendrivelinux.com/how-to-add-a-user-to-the-sudoers-list/
然后你可以执行:sudo mount ...
编辑:在 visudo 中添加更安全:
www-data ALL= NOPASSWD: /bin/mount
只允许 www-data 使用 sudo /bin/mount
我已经做了两天了,但一直没能找到任何方法(好或坏)来实现它。
我必须能够从我的网站页面通过网络动态安装驱动器(这部分是不可避免的)。
我可以直接在控制台上使用以下命令进行操作
mount -t cifs //IP-REMOTE-MACHINE/Folder -o username=username,password=password /mnt/share
显然,如果没有 root 权限,尝试只执行此命令的 shell_exec()
是行不通的。
我尝试 shell_exec()
一个脚本,在该脚本中我将切换到 root 用户(通过 su 或 sudo mycommand),但它们都不起作用(从来没有能够成功地执行一个脚本自动将我的用户切换到 root,即使 root pwd 是硬编码的(即使这感觉是一个非常糟糕的主意,我本可以接受那个 atm)。
在那之后我尝试使用 pmount
但从未找到访问远程共享文件的方法(我认为这是不可能的,但我可能在这里遗漏了什么?)
在装有 apache2 的 Debian 机器上 运行 所有这些。
我有一个疯狂的想法...
您可以将 cron 设置为 运行 作为 root 来检查脚本中的安装命令。该脚本将简单地设置一个要处理的挂载命令,当 cron 到达它时,运行s 挂载,将命令标记为已处理,并写入一个日志文件,然后您可以显示该文件。
运行 使用 www-data(Debian 中 web 服务器的用户)的 sudo 命令是不安全的。
但是如果你想在 php 脚本中 运行 sudo [command],你必须在 sudoers 中添加用户 www-data:http://www.pendrivelinux.com/how-to-add-a-user-to-the-sudoers-list/
然后你可以执行:sudo mount ...
编辑:在 visudo 中添加更安全:
www-data ALL= NOPASSWD: /bin/mount
只允许 www-data 使用 sudo /bin/mount