使用sudo,您可以将其设置为请求密码,也可以不请求密码。
历史上,一切都是密码保护的,这是我习惯的模式。然而,加密似乎越来越倾向于公钥/私钥认证。
这一点很明显,当我在GCP、AWS或DigitalOcean上旋转服务器时,我没有密码。相反,我得到了一个用于登录的密钥。
现在,如果我想在登录时执行sudo,它不会问我密码。这显然是因为一个密码从来没有给过我,只有一个密钥。由于/etc/sudoers.d/90-cloud-init-users中的以下规则,sudo不需要密码:
ubuntu ALL=(全部) NOPASSWD:ALL
这对于一个用户来说是可以的。但是,如果服务器有3-4个用户,所有用户都需要sudo访问,而且所有用户都使用密钥登录,而不是密码,那么会发生什么呢?你想确保一个用户做不到
sudo su - <someone else's username>
sudo <command>鼓励的做法是在与sshd连接时不允许密码身份验证,而是向所有用户提供用于sudo身份验证的密码吗?还是使用pam_ssh_agent_auth允许sudo使用另一组具有密码的私钥/公钥进行身份验证?还是还有别的事情要做呢?
发布于 2018-12-25 15:14:44
访问sudo的密码身份验证并不限制可以运行哪些命令。
例如
myuser ALL=(ALL) NOPASSWD: ALL
youruser ALL=(ALL) ALL让两个用户运行完全相同的命令,只需要输入密码,而我不需要。
相反,其想法是只授予用户他们需要的特权命令,而不是“所有”命令。因此,如果user1只需要重新启动服务器,您可能会给它们
user1 ALL=(root) NOPASSWD: /usr/sbin/reboot现在他们所能做的就是重新启动服务器。
这遵循最少特权的原则;只给人们他们需要的命令。
进一步阅读:https://www.sweharris.org/post/2018-08-26-minimal-sudo/
https://unix.stackexchange.com/questions/490863
复制相似问题