首页 > 解决方案 > 在 PHP 没有密码提示的情况下执行 samba 挂载命令?

问题描述

我想用 PHP 编写一个脚本,通过命令临时执行 samba 挂载

sudo mount -t cifs //xx.yy.zz/windows_shared /var/www/html/test -o user=TestUserWindow,uid=testuser,gid=testgroup

如您所知,它将提示输入WINDOWS而不是 linux 的密码。

但我想使用shell_exec().
如何在没有提示的情况下自动传递密码?

标签: phpsambacifs

解决方案


您可以将用户、密码和域添加到 mount 命令。例如,只需定义用户名和密码,您的命令将如下所示:

sudo mount -t cifs //xx.yy.zz/windows_shared /var/www/html/test -o user=TestUserWindow,password=TestUserPassword,uid=testuser,gid=testgroup

更好/更安全的选择是使用凭证文件,但是您放弃了将密码的用户名从 php 传递到 mount 命令的选项。无论哪种方式,这里都是一个凭证文件示例:

1 创建凭证文件:

sudo vim /etc/php.cred

2 如果需要,添加用户名、密码和域。确保它们在自己的行上,并且等号两边之间不能有任何空格:

username=TestUserWindow
password=TestUserPassword
domain=TestDomain

3 在 mount 命令中引用新创建的凭证文件:

sudo mount -t cifs //xx.yy.zz/windows_shared /var/www/html/test -o credentials=/etc/php.cred,uid=testuser,gid=testgroup

参考:

挂载cifs 手册页

这个问题还有很多其他的答案。我建议询问“使用凭证文件挂载 cifs 示例”或“挂载 cifs 示例用户名密码”。基本上在执行 shell 命令而不是 php 时删除问题的“php”部分。


推荐阅读