在传统的Unix和类Unix系统中,全新安装后存在的第一个也是唯一一个用户名为*root*。 使用root帐户,您可以登录并创建辅助“普通”用户。 在那次最初的互动之后,您应该以普通用户身份登录。
以普通用户身份运行系统是一种自我施加的限制,可以保护您免受愚蠢的错误。 例如,作为普通用户,您无法删除定义网络接口的配置文件,也无法意外覆盖您的用户和组列表。 您无法犯这些错误,因为作为普通用户,您无权访问这些重要文件。 当然,作为系统的实际所有者,您始终可以使用su
命令成为超级用户(root)并做任何您想做的事情,但对于日常任务,您应该使用您的普通帐户。
使用su
运行良好几十年,但后来出现了sudo
命令。
对于长期的超级用户来说,sudo
命令起初可能看起来是多余的。 在某些方面,它感觉很像su
命令。 例如,这是正在运行的su
命令
$ su root
<enter passphrase>
# dnf install -y cowsay
这是sudo
做同样的事情
$ sudo dnf install -y cowsay
<enter passphrase>
这两种交互几乎相同。 然而,大多数发行版建议使用sudo
而不是su
,并且大多数主要发行版已经完全消除了root帐户。 这是降低Linux难度的阴谋吗?
实际上,远非如此。 事实上,sudo
使Linux比以往任何时候都更灵活和可配置,没有功能损失,并且 有几个显著的优势。
[ 下载速查表: Linux sudo命令 ]
为什么在Linux上sudo比root更好
以下是您应该使用sudo
而不是su
的五个原因。
1. Root是一个已确认的攻击向量
我使用常用的 防火墙、 fail2ban 和 SSH密钥 来防止未经授权的人员进入我运行的服务器。 在我了解sudo
的价值之前,我过去常常惊恐地查看日志,发现大量针对我的服务器的失败的暴力破解攻击。 自动尝试以root身份登录是最常见的,并且有充分的理由。
一个有足够知识尝试闯入的攻击者也会知道,在sudo
广泛使用之前,基本上每个Unix和Linux系统都有一个root帐户。 攻击者不必猜测如何进入您的服务器。 只要它是root,登录名总是正确的,所以攻击者只需要一个有效的密码。
删除root帐户可以提供很好的保护。 没有root,服务器没有已确认的登录帐户。 攻击者必须猜测可能的登录名。 此外,攻击者必须猜测与登录名关联的密码。 这不仅仅是一个猜测然后另一个猜测; 这是两个必须同时正确的猜测。
2. Root是最终的攻击向量
root在失败的访问日志中是一个流行的名称的另一个原因是,它是最强大的用户。 如果您要设置一个脚本以暴力破解进入别人的服务器,为什么要浪费时间尝试以对机器访问权限有限的普通用户身份进入? 尝试获取最强大的可用用户才有意义。
通过既是唯一已知的用户名又是最强大的用户帐户,root实际上使得尝试暴力破解任何其他用户变得毫无意义。
3. 选择性权限
su
命令是全有或全无。 如果您拥有su
root的密码,您可以成为超级用户。 如果您没有su
的密码,您将没有任何管理权限。 这种模式的问题在于,系统管理员必须选择交出其系统的主密钥,或者保留密钥并保留对系统的所有控制权。 这并不总是您想要的。 有时您想委派。
例如,假设您想授予用户运行通常需要root权限的特定应用程序的权限,但您不想给该用户root密码。 通过编辑sudo
配置,您可以允许特定用户,或属于特定Unix组的任何数量的用户运行特定命令。 sudo
命令需要用户现有的密码,而不是您的密码,当然也不是root密码。
4. 超时
使用sudo
运行命令时,经过身份验证的用户的权限会提升5分钟。 在此期间,他们可以运行您授予他们运行的命令。
5分钟后,身份验证缓存将被清除,下次使用sudo
时会再次提示输入密码。 超时可以防止用户稍后意外执行该操作(例如,粗心地搜索您的shell历史记录或按了太多次向上箭头)。 它还可以确保如果第一个用户离开办公桌而没有锁定他们的计算机屏幕,则另一个用户无法运行这些命令。
5. 日志记录
shell历史记录功能充当用户一直在做什么的日志。 如果您需要了解系统上的某些事情是如何发生的,您可以(理论上,取决于shell历史记录的配置方式)使用su
切换到其他人的帐户,查看他们的shell历史记录,并且可能了解用户一直在执行哪些命令。
但是,如果您需要审核10个或100个用户的行为,您可能会注意到这种方法无法扩展。 Shell历史记录的轮换速度也相当快,默认年龄为1,000行,并且可以通过在任何命令前加一个空格来轻松规避。
当您需要有关管理任务的日志时,sudo
提供完整的 日志记录和警报子系统,因此您可以从集中位置查看活动,甚至可以在发生重大事件时收到警报。
了解这些功能
sudo
命令具有比我在本文中列出的更多功能,包括当前功能和开发中的功能。 因为sudo
通常是您配置一次然后忘记的事情,或者只是在新管理员加入您的团队时才配置的事情,所以可能很难记住它的细微差别。
下载我们的sudo速查表,并在您最需要它的时候,将其用作所有用途的有用提醒。
3 评论