php - 在 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()
.
如何在没有提示的情况下自动传递密码?
解决方案
您可以将用户、密码和域添加到 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”部分。
推荐阅读
- whatsapp - 什么可能导致我的 WhatsApp 贴纸包无法工作?
- data-structures - 数据结构:什么是 T 表?
- react-native - React Native 月份和年份选择器
- java - 在 Java 中使用 HttpURLConnection POST
- c++ - 如何使用 OpenCV 将 RBG 图像转换为 HSV 并将 H、S 和 V 值保存到 C++ 中的 3 个单独的图像中?
- android - TouchableOpacity onLongPress 拦截 FlatList 滚动
- gspread - 更新 gspread 以获取 duplicate_sheet
- java - 连接未与托管连接关联
- robotframework - 如何从机器人框架代码之间的全局变量中获取值
- c++ - OpenCV EqualizeHist() 从彩色图像创建黑白图像