我正在 Centos7 上配置一个服务器,用于一些生物信息分析,并且安装了 rundeck。Rundeck 似乎以自己的帐户名启动脚本,我决定使用 sudo 绕过来让它访问我的脚本。
使用 visudo 我可以使用 rundeck 将 sudo 更改为 root,从而执行一些无需密码的命令。当我输入用户 bioinfo 而不是 root 时,系统会要求输入密码才能执行相同的命令。
以下是 sudoers 文件的一部分:
root ALL=(ALL) ALL
bioinfo ALL=(ALL) ALL
rundeck ALL=(bioinfo) NOPASSWD:/home/bioinfo/singularity_data/Bionano3.5,/usr/local/bin/singularity,/bin/*
我不知道 root 和 bioinfo 之间有什么不同,因为他们拥有相同的权限。有谁知道为什么 bioinfo 无法工作,而 root 可以正常工作?
我尝试以 root 身份运行我的配置
su - rundeck
然后做一个
sudo whoami
如果 root => root
如果 bioinfo => 询问密码
谢谢
答案1
为了让用户bioinfo
能够运行 sudo 命令而不输入密码您需要修改bioinfo
sudoers 中的条目以包含NOPASSWD:
bioinfo ALL=(ALL) NOPASSWD: ALL
请注意,这样做允许用户运行任何 sudo 命令而无需输入密码。
如果用户是 sudoers 中指定的组 (例如 %wheel 或 %users) 的成员,则最后一个条目优先 - 因此将此条目放在下面。
如果您希望一个用户能够以另一个用户的身份运行而不需要密码:
rundeck ALL=(bioinfo) NOPASSWD:/home/bioinfo/singularity_data/Bionano3.5,/usr/local/bin/singularity,/bin/*
那么你需要以该格式调用命令,sudo -u bioinfo <cmd>
否则它会认为你仍在尝试以 root 身份调用