非root用户无需密码以指定用户身份执行邮件发送脚本的实现方法
非root用户无需密码以指定用户身份执行邮件发送脚本的实现方法
咱们先明确你的核心需求:你已经折腾出了适配Postfix+OpenDKIM的mailSender.sh脚本,root运行完全没问题,但现在想让某个普通用户(比如你提到的mydesireduser)不用输入密码就能执行它,还能正常切换到指定的发件人用户身份发邮件对吧?
你之前尝试用visudo修改sudoers文件的思路是对的,不过还需要调整执行方式和细节,下面一步步来:
1. 确保脚本权限配置合理
首先得保证脚本本身的权限不会被随意篡改,建议把脚本的所有权交给root,同时给普通用户留执行权限:
chown root:root /mailSender.sh chmod 755 /mailSender.sh
2. 完善sudoers配置
你已经添加了一行sudoers规则,但要注意:这条规则是允许mydesireduser以root身份免密码执行这个脚本,所以普通用户不能直接运行/mailSender.sh,得通过sudo来调用——这样脚本里的su命令因为是root执行的,就不会要求输入密码了。
如果之前的规则没问题,那现在sudoers里的这条配置应该是:
mydesireduser ALL = (root) NOPASSWD: /mailSender.sh
注意:修改
sudoers一定要用visudo命令,别直接编辑文件,避免语法错误导致sudo失效。
3. 普通用户的执行方式
现在mydesireduser要发邮件的话,不能直接跑脚本,得用sudo调用,比如:
sudo /mailSender.sh test@example.com johndoe
这样就能不用输入密码,以johndoe的身份给test@example.com发邮件了,完全符合你的需求。
额外的安全提示(可选)
如果想进一步缩小权限范围,避免这个用户通过sudo执行脚本时传递恶意参数,可以在sudoers规则里限制参数格式,但一般来说你的场景不需要这么严格,保持当前配置就够用。
备注:内容来源于stack exchange,提问作者BrownianBridge
相关产品推荐
相关产品推荐

