之前有一个问题:
大多数反对这种可能性的人都说你会需要它,如果你没有它,你就会遇到大麻烦。
我不认为这是一个真正的原因,有很多方法可以避免任何组件的单点故障,因此访问某个特定服务器的关键性变得无关紧要。
因此,如果您的 IT 基础设施完全冗余,并且对某个特定服务器的非访问并不重要,那么可以通过集群、虚拟化、克隆、快速备份系统等来解决。
你会放弃 root 帐户吗?我的经验表明,系统管理员主要与 root 帐户有私人关系,并且无法保管自己服务器的密码,这给他们带来了很大麻烦。
答案1
当功能在所有事物中得到更普遍的支持时,绝对是这样的。
在此之前,我会继续sudo
关注那些仍然需要明确特权升级的事情。不过,我上次研究时发现,许多系统仍然相对不支持能力概念。这一点很重要。这样,无论您的系统是什么,您都可以说“此用户有能力访问此内容”,而无需真正升级到另一个用户帐户。当然,授予的特权需要基于系统中用户的角色,但最终,没有人应该掌握帐户的所有权力(至少,如果有多个功能需要其他人来处理的话)。
如果您是 DBA,则只要您拥有数据库系统进程和文件系统存储区域,就不需要任何形式的超级用户访问权限。这可能意味着您必须要求磁盘管理员对您的分区进行 fsck 或不时恢复它们,或者其他什么,但 DBA 不应该有能力关闭具有自己访问权限的机器,除非他们“拥有”该服务器。
也就是说,如果您是管理服务器上 100% 进程的唯一人员,那么这sudo
绝对足够了。只有当其他人使用服务器和/或管理服务器上的内容(或依赖服务器)并且有多个管理员时,才需要考虑权限分离。
答案2
只需禁用通过 ssh 和 su 到 root 的 root 登录。在我加入的任何组织中,它一直运行良好。只需使用控制台以 root 身份登录进行维护,所有其他用户只需使用 sudo。
答案3
你会放弃 root 帐户吗?我的经验表明,系统管理员主要与 root 帐户有私人关系,并且无法保管自己服务器的密码,这给他们带来了很大麻烦。
如果我负责服务器,我将需要一定级别的特权访问权限。这个帐户名称是否根或者我必须以自己的身份登录并使用某些工具来提升我的权限。
如果系统是标准 *nix(或接近标准),那么我可能需要根在某些时候,我会为了某些管理任务而访问该帐户,这只是因为几十年来一直如此,而且这种做法存在很大的惯性。但这并不意味着我会在不需要时使用该帐户登录,或者我会让该帐户处于开放状态且不受保护。
如果我不负责主机,那么可能不应该给我 root 帐户。事实上,我经常尝试避免让任何人告诉我 root 密码是什么。
因此,如果您的 IT 基础设施完全冗余,并且对某个特定服务器的非访问并不重要,那么可以通过集群、虚拟化、克隆、快速备份系统等来解决。
老实说,我不明白这些与需要特权帐户在计算机上执行特权任务有什么关系。
答案4
我工作过的组织中关于“根”帐户的常见最佳实践。
- 完全禁用远程访问,或者仅允许通过密钥验证的 SSH。
- 禁用/锁定 root 密码(类似 Ubuntu)。
- 严格要求使用
sudo
并确保其正确记录。 - 锁定
/bin/su
为仅可由某个组执行(通常,wheel
或sysadmin
)。 - 确保 root shell 已正确记录(强制
script
、使用sudosh
、shell 历史技巧等)。 - 只有需要访问的用户
root
才被授予权限sudo ALL
,否则将根据每次使用通过 sudo 授予权限。
UID 0 仍然是需要的,特别是对于打开 1024 以下的端口等任务,即使在应用程序运行后特权被删除。
在 IT 领域,安全性和便利性是相互排斥的。root
直接使用帐户通常是为了方便,而不是为了必要,也许是因为管理员讨厌sudo
一直打字?