在Linux上使用sudo的5个理由

以下是切换到Linux sudo命令的五个安全理由。 下载我们的sudo速查表以获取更多技巧。
8 位读者喜欢这篇文章。
Command line prompt

Opensource.com

在传统的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是一个已确认的攻击向量

我使用常用的 防火墙fail2banSSH密钥 来防止未经授权的人员进入我运行的服务器。 在我了解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速查表,并在您最需要它的时候,将其用作所有用途的有用提醒。

Seth Kenlon
Seth Kenlon是一位UNIX极客、自由文化倡导者、独立多媒体艺术家和D&D爱好者。 他曾在电影和计算行业工作,通常同时进行。

3 评论

很棒的文章,多年来我一直在使用一个别名,首先指向一个su命令,现在指向一个sudo命令,它是

alias become='sudo -iu'

像“become aturing”这样使用,可以模拟以aturing用户身份登录并有效地成为该用户。

root意味着后悔

关于sudo与su比较的精彩文章。 很高兴我一直是一个sudoer而不是一个suer。 XD 谢谢这篇文章。

Creative Commons License本作品已根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.