如何通过 shell 脚本获得 sudo 权限而不输入密码?示例:
[user@user Desktop]$ ./script.sh
[user@user Desktop]#
我应该在 script.sh 上尝试哪个命令?我不想在 sudoers 文件中添加。请帮助我。感谢您的宝贵时间。
答案1
您必须修改 sudoers 文件(或向 /etc/sudoers.d/ 添加新文件)以允许用户“user”无需密码即可执行此脚本:
user ALL=(ALL:ALL) NOPASSWD: /home/user/Desktop/script.sh
如果您不想以 root 身份执行整个 script.sh,则需要在 script.sh 中提及所有将在前面加上 sudo 的命令。如果您使用别名功能,它的可读性会更强:
Cmnd_Alias SCRIPT_CMDS = /sbin/poweroff, /sbin/reboot, /sbin/halt
user ALL=(ALL:ALL) NOPASSWD: SCRIPT_CMDS
编辑
如果您构建了一些在 stdout 上输出密码的脚本,则可以使用 askpass 参数:
sudo -A /path/to/password-output-script /some/command/to/be/run/as/root
否则这可能会让你感兴趣(来自 sudo 手册页):
-S, --stdin
将提示写入标准错误并从标准输入读取密码,而不是使用终端设备。密码后面必须跟换行符。