我正在编写一个脚本,它将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
则规则需要在该条目之后才能生效。