不,sudo
不是没用。
作为用户(目标)
通常,当您在 Linux 上时,您是以非 root 用户的身份行事。很多东西,比如用 安装包apt
,需要root
/sudo
权限才能使用。该sudo
二进制文件用于授予普通用户使用root
级别操作的权限,例如apt install
.
您不应该一直使用 Linux作为root
. 这是因为如果您受到威胁,攻击者将可以root
访问您的系统,这意味着他们可以在您的系统上做几乎任何事情。相反,您以非 root 用户身份运行 Linux,因此即使您的帐户遭到入侵,攻击者也无法立即获得root
访问权限。
当然,没有一个系统是完全安全的,系统中的某些地方可以被利用。如上所述,使用sudoers
帐户而不是保护您的系统的一个步骤。root
如果您说“黑客无论如何都会进入并获得root权限,我为什么要使用sudo
?”,这就像说“如果有人进入我的房子,他们无论如何都能够(以某种方式)获得我的珠宝。为什么我应该使用保险箱还是锁?”。这是额外的保护层。我们不是在寻找“一种可以保护一切的锁”,而是“许多锁以提供额外的安全性,以防其中一些被破坏”。
sudo
是一种保障。它允许您仅在需要时运行根级程序。所以你只是偶尔打开你的绝密房间的门,而不是总是让它打开,即使它总是打开(总是以 root 身份运行)更方便。
此外,当您是合法用户时,您不会在每次想要使用sudo
操作时都运行权限提升脚本,而是使用sudo
.
作为攻击者
sudo
可以利用二进制文件来获取一些信息,甚至获得访问root
权限。有时,用户的sudoers
文件中可能有类似的东西MY_USER ALL=(ALL) NOPASSWD: ALL
,在这种情况下,如果您可以作为用户访问MY_USER
,您可以运行任何和所有sudo
/root
命令而无需密码。运行sudo -l
还可以为您提供信息,例如即使没有密码也可以以 root 身份运行哪些命令。此类错误配置的一个示例是USERNAME ALL=(ALL) NOPASSWD: /bin/vi
,它允许您以vi
root 身份运行,而无需以 user 身份输入密码USERNAME
。这是手动提升权限的一种方法。
每个额外的程序都可能存在一些额外的漏洞。让 tomcat 运行会将系统引入 tomcat 漏洞利用。sudo
可能只是您可以在开发中使用的另一个程序。
此外,您认为那些方便的权限提升脚本/工具如何让您获得 root 访问权限?他们中的许多人使用sudo
一种或另一种方式。