我可以编写一个任何人都可以执行的shell脚本,该脚本内部切换用户(或提升为root),然后运行这些命令而不会将执行用户暴露给root权限?
一些背景:我有一个shell脚本,它从我的本地网络(使用smbclient)获取一个文件,然后将该文件转换并处理为csv,准备导入我的MYSQL数据库。我可以自己运行该文件,但是当我尝试通过 PHP exec() 或 shell_exec() 执行它时,我遇到了权限问题,因为它的用户是 www-data。
我花了一天时间进行各种文件性能更改,等待路径环境,甚至阅读授予 www-data sudo 权限(没有成功),但是,我不能创建一个文件,任何人都可以(www-data)作为我的用户或 sudo 执行其中的命令(并且只有其中的命令)?
通过编辑/etc/sudoers来做到这一点
sudoedit /etc/sudoers
添加此行
Cmnd_Alias YOUR_CMD_ALIAS= /path/yourShellScript
[User's name] ALL=(ALL) NOPASSWD: YOUR_CMD_ALIAS
然后使用 sudo 执行您的代码
sudo /path/yourShellScript