当前位置: 首页 > 科技观察

在Linux上使用sudo命令的五个理由

时间:2023-03-14 17:19:09 科技观察

以下是切换到Linuxsudo命令的五个安全原因。在传统的Unix和类Unix系统上,第一个也是唯一一个存在于新系统上的用户是root。以root身份登录并创建一个“普通”用户。初始化后,您应该以普通用户身份登录。作为普通用户使用系统是一种自我施加的限制,可以防止愚蠢的错误。例如,作为普通用户,您不能删除定义网络接口的配置文件或意外覆盖用户和组列表。作为普通用户,您无权访问这些重要文件,所以您不可能犯这些错误。作为系统的实际所有者,您始终可以su到超级用户(root)并执行任何您想做的事情,但是对于日常工作,您应该使用普通帐户。几十年来,su运行良好,但随后出现了sudo命令。对于每天使用超级用户的人来说,sudo命令乍一看似乎是多余的。在某些方面,它感觉很像su命令。例如:$suroot#dnfinstall-ycowsaysudo做同样的事情:$sudodnfinstall-ycowsay他们做几乎完全一样的事情。但是大部分发行版都推荐使用sudo而不是su,甚至大部分发行版已经完全取消了root账号(LCTT译注:没有取消,但是默认禁止使用root用户登录,运行命令等,root还是数字0用户,仍然拥有大部分系统文件并在后台运行大部分服务)。让Linux变傻的阴谋?它不是。sudo使Linux更加灵活和可配置,并且不会损失功能和几个显着的优势。为什么在Linux上sudo比root更好?以下是您应该使用sudo而不是su的五个原因。1.root被识别为受到攻击我使用防火墙、fail2ban和SSH密钥的常见组合来防止对服务器进行一些不需要的访问。在了解sudo的价值之前,我对日志中的暴力破解感到恐惧。自动尝试以root身份登录是最常见的情况,当然这是有充分理由的。有一点常识的攻击者应该知道,在sudo被广泛使用之前,基本上每个Unix和Linux都有一个root账号。这让攻击者少了一个猜测。因为登录名只要是root就总是正确的,所以攻击者只需要一个有效的密码。删除root帐户提供了大量的保护。没有root,服务器没有确认的登录账号。攻击者必须猜测登录名和密码。不是两个猜测,而是两个必须都正确的猜测。(LCTT译注:这是误导,root用户不能删除,否则系统会出问题。另外,root虽然可以重命名,但最好不要这样做,因为很多程序都硬编码了root用户名里面。你可以禁用root用户,给它一个不允许你登录的密码。)2.root是最终的攻击向量root经常出现在访问失败日志中,因为它是最强大的用户。如果您要设置一个脚本来强制进入其他人的服务器,为什么要浪费时间尝试以受限普通用户身份进入呢?只有最强大的用户才是最重要的。root是唯一已知的用户名,也是最强大的用户帐户。所以root基本上使尝试暴力破解其他任何东西变得毫无意义。3.可选择的权限su命令是allornothing。如果您有suroot密码,您就可以成为超级用户。如果您没有su的密码,那么您就没有任何管理员权限。这种模式的问题是系统管理员必须在移交根密钥或保留系统的密钥和所有权之间做出选择。这并不总是你想要的,有时你只是想授权。例如,假设您想要授予用户以root身份运行特定应用程序的权限,但又不想为用户提供root密码。通过编辑sudo配置,您可以允许指定用户或属于指定Unix组的任何用户运行特定命令。sudo命令需要用户的现有密码,而不是您的密码,当然也不是root密码。4.使用sudo运行命令超时后,经过身份验证的用户的权限提升5分钟。在此期间,他们可以运行管理员授权的任何命令。5分钟后清空认证缓存,下次使用sudo时再次提示密码。超时可以防止用户意外执行某些操作(例如,意外搜索shell历史记录或多次按向上箭头)。它还确保如果一个用户在没有锁定计算机屏幕的情况下离开办公桌,则另一个用户无法运行这些命令。5.记录Shell历史功能可以用作用户所做操作的日志。如果您需要知道系统发生了什么,您可以(理论上,取决于shell历史记录的配置方式)使用su切换到其他人的帐户,查看他们的shell历史记录,还可以查看用户执行了哪些命令。但是,如果您需要审计10或100个用户的行为,您可能会注意到这种方法无法扩展。shell历史循环很快,默认为1000个条目,可以通过在任何命令前加一个空格轻松绕过它们。当您需要管理任务的日志时,sudo提供了完整的日志记录和警报子系统,因此您可以在一个特定位置查看活动,甚至可以在发生重大事件时收到警报。了解sudo的其他功能除了本文列举的一些功能外,sudo命令还有很多已经存在或正在开发的新功能。因为sudo通常是你配置一次然后忘记的东西,或者只在新管理员加入团队时配置,所以很难记住它的细微差别。