root 如何确保这次 sudo 不会提示特定用户输入密码?

root 如何确保这次 sudo 不会提示特定用户输入密码?

我正在编写一个脚本,它将lxc在主机上进行设置,然后配置一个容器。我希望这个脚本是无人值守的。创建并运行容器后,有时我想以用户身份登录并使用sudo.我知道如何设置 ssh 让我无需提出任何问题即可登录。剩下的唯一一点就是确保我可以做到sudo

我不想禁用sudo- 我只是想模仿用户实际输入密码时的情况。

到目前为止我做了以下事情:

if [ ! -d /var/lib/lxc/$puppetmastername/rootfs/var/lib/sudo/$user ]; then
    sudo mkdir /var/lib/lxc/$puppetmastername/rootfs/var/lib/sudo/$user
fi
sudo touch /var/lib/lxc/$puppetmastername/rootfs/var/lib/sudo/$user/0

sudo grep '!tty_tickets' /etc/sudoers
if [ $? -ne 0 ]; then
    echo 'Defaults         !tty_tickets' >>/var/lib/lxc/puppetmaster/rootfs/etc/sudoers
fi

不幸的是,这还不够,容器仍然要求输入密码。

答案1

您必须编辑您的/etc/sudoers文件并授予您的用户权限以 root 身份运行某些程序而无需密码:

yourusername ALL = (root) NOPASSWD: /path/to/prog1, /path/to/prog2, ...

对于您的情况,您可以尝试:

myusername ALL = (root) NOPASSWD: /bin/mkdir, /usr/bin/touch, /bin/grep

您必须检查NOPASSWD条目是否是与您的用户匹配的最后一个条目。如果其中两个条目与/etc/sudoers您的用户匹配,NOPASSWD则规则需要在该条目之后才能生效。

相关内容