首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在不使用密码的服务器上设置sudo身份验证的最佳方法?

在不使用密码的服务器上设置sudo身份验证的最佳方法?
EN

Unix & Linux用户
提问于 2018-12-25 12:07:26
回答 1查看 326关注 0票数 4

使用sudo,您可以将其设置为请求密码,也可以不请求密码。

历史上,一切都是密码保护的,这是我习惯的模式。然而,加密似乎越来越倾向于公钥/私钥认证。

这一点很明显,当我在GCP、AWS或DigitalOcean上旋转服务器时,我没有密码。相反,我得到了一个用于登录的密钥。

现在,如果我想在登录时执行sudo,它不会问我密码。这显然是因为一个密码从来没有给过我,只有一个密钥。由于/etc/sudoers.d/90-cloud-init-users中的以下规则,sudo不需要密码:

ubuntu ALL=(全部) NOPASSWD:ALL

这对于一个用户来说是可以的。但是,如果服务器有3-4个用户,所有用户都需要sudo访问,而且所有用户都使用密钥登录,而不是密码,那么会发生什么呢?你想确保一个用户做不到

代码语言:javascript
复制
sudo su - <someone else's username>
sudo <command>

鼓励的做法是在与sshd连接时不允许密码身份验证,而是向所有用户提供用于sudo身份验证的密码吗?还是使用pam_ssh_agent_auth允许sudo使用另一组具有密码的私钥/公钥进行身份验证?还是还有别的事情要做呢?

EN

回答 1

Unix & Linux用户

发布于 2018-12-25 15:14:44

访问sudo的密码身份验证并不限制可以运行哪些命令。

例如

代码语言:javascript
复制
myuser ALL=(ALL) NOPASSWD: ALL
youruser ALL=(ALL) ALL

让两个用户运行完全相同的命令,只需要输入密码,而我不需要。

相反,其想法是只授予用户他们需要的特权命令,而不是“所有”命令。因此,如果user1只需要重新启动服务器,您可能会给它们

代码语言:javascript
复制
user1 ALL=(root) NOPASSWD: /usr/sbin/reboot

现在他们所能做的就是重新启动服务器。

这遵循最少特权的原则;只给人们他们需要的命令。

进一步阅读:https://www.sweharris.org/post/2018-08-26-minimal-sudo/

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/490863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档