如何在 shell 脚本中获得 sudo 权限?

如何在 shell 脚本中获得 sudo 权限?

如何通过 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
将提示写入标准错误并从标准输入读取密码,而不是使用终端设备。密码后面必须跟换行符。

相关内容