天天看点

保护您的系统安全:为什么 sudo 是比 su 更好的选择?

作者:T锅侠
保护您的系统安全:为什么 sudo 是比 su 更好的选择?

Sudo和su都是允许用户以提升的特权执行命令的命令,但是两者之间存在一些关键差异。Sudo命令允许具有特定权限的用户执行特定的命令,而不必暴露他们的root密码。这使得系统管理员可以更好地控制谁可以执行什么命令,从而提高了系统的安全性。另一方面,su命令需要用户知道root密码,因此在一些情况下可能会导致安全问题。此外,Sudo命令还可以记录用户执行的每个命令,从而提高了系统的可追溯性。因此,在确保系统安全和追溯性方面,Sudo命令通常是更好的选择。具体分析如下:

Sudo

保护您的系统安全:为什么 sudo 是比 su 更好的选择?
  • Sudo是比su更安全的命令。当您使用sudo时,您只需要输入密码一次,即使您运行多个需要root权限的命令。这是因为sudo将您的密码存储在临时文件中,并使用它来验证您的所有后续命令。
  • Sudo可以用来以任何用户身份执行命令,而不仅仅是root用户。这对于解决问题或运行需要另一个用户权限的命令非常有用。
  • Sudo通常被配置为仅允许特定用户使用。这有助于防止未经授权的用户获得root权限。

以下是一个执行sudo命令的例子:

$ sudo apt-get update
[sudo] password for daniel:
Hit:1 <http://archive.ubuntu.com/ubuntu> bionic InRelease
Get:2 <http://archive.ubuntu.com/ubuntu> bionic-updates InRelease [88.7 kB]
Get:3 <http://archive.ubuntu.com/ubuntu> bionic-backports InRelease [74.6 kB]
Fetched 163 kB in 1s (206 kB/s)
Reading package lists... Done

           

在这个例子中,用户输入了sudo命令,并被要求输入用户的密码。一旦密码被验证,用户就被授予了root权限,并可以执行需要root权限的命令。在这种情况下,用户输入了正确的密码,因此被授予了root权限,并执行了apt-get update命令。

Su

  • Su比sudo更不安全。当您使用su时,您被要求输入要切换到的用户帐户的密码。这意味着如果有人能够看到您的屏幕,他们可以了解您的密码并使用它来获得root权限。
  • Su只能用于切换到root用户或具有与当前用户相同权限的另一个用户。
  • Su通常没有配置限制谁可以使用它。这意味着任何知道root密码的人都可以使用su获得root权限。

以下是执行su命令的结果:

$ su
Password:
root@server:~#

           

在这个例子中,用户输入了su命令,并被要求输入root用户的密码。一旦密码被验证,用户就被切换到root用户,可以执行需要root权限的命令。在这种情况下,用户输入了正确的密码,因此被授予了root权限,并被切换到root用户。

实例

保护您的系统安全:为什么 sudo 是比 su 更好的选择?
  • 您可以使用sudo安装软件或更改系统设置。例如,您可以使用sudo安装最新版本的Firefox或更改文件的权限。

sudo命令为:

sudo apt-get install firefox。

运行结果:

[sudo] password for daniel:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  firefox-locale-en
Suggested packages:
  fonts-stix | otf-stix
The following NEW packages will be installed:
  firefox firefox-locale-en
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 47.3 MB of archives.
After this operation, 203 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 <http://archive.ubuntu.com/ubuntu> bionic-updates/main amd64 firefox amd64 89.0.2+build1-0ubuntu0.18.04.2 [46.2 MB]
Get:2 <http://archive.ubuntu.com/ubuntu> bionic-updates/main amd64 firefox-locale-en all 89.0.2+build1-0ubuntu0.18.04.2 [1,170 B]
Fetched 47.3 MB in 16s (2,969 kB/s)
Selecting previously unselected package firefox.
(Reading database ... 167474 files and directories currently installed.)
Preparing to unpack .../firefox_89.0.2+build1-0ubuntu0.18.04.2_amd64.deb ...
Unpacking firefox (89.0.2+build1-0ubuntu0.18.04.2) ...
Selecting previously unselected package firefox-locale-en.
Preparing to unpack .../firefox-locale-en_89.0.2+build1-0ubuntu0.18.04.2_all.deb ...
Unpacking firefox-locale-en (89.0.2+build1-0ubuntu0.18.04.2) ...
Setting up firefox (89.0.2+build1-0ubuntu0.18.04.2) ...
Setting up firefox-locale-en (89.0.2+build1-0ubuntu0.18.04.2) ...
Processing triggers for mime-support (3.60ubuntu1) ...
Processing triggers for desktop-file-utils (0.23-1ubuntu3.18.04.2) ...
Processing triggers for gnome-menus (3.13.3-11ubuntu1.1) ...
Processing triggers for libc-bin (2.27-3ubuntu1.4) ...

           
  • 您可以使用su切换到root用户并运行需要root权限的命令。例如,您可以使用su重启Apache Web服务器或创建新用户帐户。

以下是使用su命令来重启Apache Web服务器的示例:

命令:

su -c "systemctl restart apache2"

运行结果:

Password:

           

在这个例子中,用户输入了su命令,并被要求输入root密码。一旦密码被验证,用户就被切换到root用户,并使用-c选项执行给定的命令,即systemctl restart apache2。在这种情况下,用户输入了正确的密码,因此被授予了root权限,并成功重启了Apache Web服务器。

应该使用哪个命令?

一般来说,您应该使用sudo,除非您有特定的原因要使用su。Sudo更安全,可以用于以任何用户身份执行命令,而不仅仅是root用户。

在选择sudo和su之间的命令时,请记住以下几点:

  • 如果您不确定要使用哪个命令,请始终与系统管理员咨询。
  • 如果您正在使用共享计算机,则只有在绝对需要时才应使用sudo。这是因为sudo可以允许任何知道您密码的人在计算机上获得root权限。
  • 如果您正在使用个人计算机,则可以更自由地使用sudo。但是,您仍然应该小心使用sudo运行的命令。

总结

保护您的系统安全:为什么 sudo 是比 su 更好的选择?

最后,我们以一个小故事作为结尾。

小明是一名系统管理员,他需要在一台服务器上安装一个新的软件包,但是他不确定该使用su还是sudo。他知道su需要输入root密码,而sudo只需要输入用户密码,但是他不确定哪个更安全。

他决定在询问其他管理员之前先尝试使用sudo。他输入了命令,输入了自己的密码,然后安装了软件包。一切都很顺利,没有出现任何问题。

几天后,小明收到了一个紧急电话,通知他服务器出现了一个严重的漏洞。他赶回办公室,发现该服务器已被黑客入侵。黑客使用sudo命令来获得root权限,并访问了所有机密数据。

小明现在意识到,如果他使用su命令并仅在安装软件包期间使用root权限,他可能会避免这种情况。他现在知道,虽然sudo更容易使用,但在某些情况下,su可能更安全。

继续阅读