我想给我的账户nova
sudo 权限,所以我将此配置添加到 /etc/sudoers
Defaults:nova !requiretty
nova ALL = (root) NOPASSWD: /openstack/bin/nova-rootwrap
/etc/nova/rootwrap.conf *
nova ALL = (root) NOPASSWD: /usr/bin/privsep-helper *
然后我切换到nova:
su - nova
问题是:当我执行 时sudo /openstack/bin/nova-rootwrap
,它可以工作,但是当我执行 时sudo nova-rootwrap
,系统会要求我输入密码。似乎不起作用NOPASSWD
。
我已经添加/openstack/bin
到我的环境路径中。系统是CentOS7.4。
为什么会发生这种情况?我怎样才能不使用密码执行它?
答案1
我首先想到的是,有人可以更改路径,并让 nova-rootwrap 充满一些恶意代码。
关于这个话题有很多很好的讨论 ->https://stackoverflow.com/questions/257616/sudo-changes-path-why
答案2
切换用户的命令不会更新环境,而是保留之前用户的环境。使用登录 shell 而不是仅使用“-”可以更彻底地实现此目的。
也就是说,如果您想要一个全新的环境,您应该这样做:
su --login nova
这也有效:
sudo -i nova
答案3
这是出于安全原因,因为给予没有完整路径的 sudo 或者给予非特权用户拥有的脚本 sudo 确实是个坏主意,因为您在那一刻授予他们 root 权限。