![要 root 还是不要 root?](https://linux22.com/image/589974/%E8%A6%81%20root%20%E8%BF%98%E6%98%AF%E4%B8%8D%E8%A6%81%20root%EF%BC%9F.png)
请参阅(有点)相关主题这里。
我每天在 Linux 机器上执行的任务都需要超级用户访问权限,因为我要(重新)启动服务、监控系统、(卸载)安装东西等等。
前一段时间,我在 IRC 会话中受到了侮辱/嘲笑(正如预料的那样),因为我以 root 身份登录来安装 ruby。
显然,以 root 身份安装服务是正常的*,但以 root 帐户运行服务则不正常。这是可以理解的 - 您不希望在 apache 中出现访问违规,从而允许 root 权限。
*这与 IRC 上的优秀人士的观点相矛盾......去想象一下。
所以我猜主要的问题是为什么许多服务的安装说明(最近在 nodejs、ruby 和 cloud9ide 上看到过)都假设您在安装时不是 root ?
例如,就在上周,我安装了 cloud9ide,但无法让它工作,因为它明确禁止我以 root 身份运行它。然而,没有人提到过这件事。我通过运行以下命令解决了这个问题:
su -s /bin/sh apache -c "node /var/www/cloud9/server.js -l 192.168.1.117 -p 3131 -w /var/www/html"
答案1
除了已经提到的原因之外;
在一个足够大的环境中,单个主机或主机组有多个系统管理员,sudo 可以实现共享 root 帐户所不能实现的责任。
答案2
正如您所意识到的,某些操作需要 root 权限。当您需要它们时,您应该使用它们。
当您知道所运行的命令将会执行什么操作并且不会产生任何意外的副作用时,使用 root 是完全没问题的。
从互联网上下载软件并对其进行编译具有潜在危险。它可能存在错误,或包含故意有害的命令。rm -rf
例如,makefile 中可能包含命令。或者构建脚本的其他部分可能存在一些未知的错误,这些错误可能会毁掉您的系统。同样的理由也可以用来鼓励您不要在生产系统上编译未经测试的软件。您应该在测试环境中构建和测试软件包,而这实际上并不重要。
行使 root 权限时,您可以遵循一份简单的检查表。如果您对其中三项的回答都是否定的,那么您可能不应该使用 root 权限。
- 该命令是否需要 root 权限
- 您是否完全理解该命令的作用?
- 如果出现故障,您是否有备份或撤消功能
因此,在您刚刚拍摄快照的虚拟机中,您可能可以非常随意地使用 root 权限。在拥有许多关键服务的生产服务器上,您需要对 root 权限的使用更加谨慎。
就像所有与安全相关的事物一样,它都与风险级别有关。您必须明智地判断潜在风险与付出的努力/回报的对比。有些地方您几乎永远不应该使用 root,而有些情况下使用 root 编译东西可能没有任何风险。
答案3
这些说明试图假设读者应该遵循隐含的“最佳实践”,这意味着不以 root 身份登录。
这些类型的教程/说明的一部分目标受众只需复制粘贴命令,或者拥有足够的知识来制造真正的混乱。
让初学者遵循这些最佳实践对于他们自己的保护(以及如果他们使用 IRC 时的感受)非常重要。
在这方面,有几点是肯定的:
直接使用 root 的每个人都会误操作命令,这在某些时候会造成大量混乱。(这并不是说“sudo”用户不会受到影响,只是可能性较小,并且可以限制此类损害)。
大多数用户忽视最佳实践,最终犯下错误,根本不知道如何解决他们的新问题。
该用户可能会进入帮助论坛或 IRC 频道寻求帮助,因此首先会因是 root 而被嘲笑。