Linux 上的“root”是什么?

b74eb260c2bb2ab

root 用户是 Linux 世界中最强大的实体,拥有无限的权力,无论好坏。创建用户?知道了。消灭文件系统?哎呀,也收到了。

起源故事

root 用户是 Linux 超级用户。从字面上看,他们可以做任何事情。没有任何限制或禁止root。他们是超级英雄还是超级恶棍取决于承担系统管理员职责的人类用户。root 用户所犯的错误可能是灾难性的,因此 root 帐户应专门用于管理目的。

root 用户的概念继承自 Unix,Unix 将 root 用户作为其管理超级用户。但是“root”这个名字的由来并不确定。有些人认为它来自于早于 Unix的Multics 操作系统

Ken ThompsonDennis Ritchie是 Unix 最重要的两位架构师和作者,之前都曾在 Multics 上工作过。Multics 有一个文件系统,它从称为根目录或“/”的点开始,所有其他目录和子目录像倒转树一样从根向下和向外分支。它与Unix采用的树结构相同。那么,也许 Unix 也采用了 Multics 的 root 用户?

搜索 Multics 技术文档会 发现大量对根逻辑卷、根物理卷、根卡和根目录的引用。但是没有提到 root 用户帐户或名为“root”的用户。

另一种理论是,在 Unix 的早期,超级用户的主文件夹是文件系统的根“/”。超级用户需要一个名字。术语“root 用户”曾被用来代替正式名称,但该术语被卡住并成为正式名称。

这似乎更有可能,但似乎没有人能够确定 root 用户是如何得名的。

sudo 命令

在任何操作系统上,最佳做法是仅为管理目的保留超级用户,其余时间使用普通用户帐户。事实上,大多数现代 Linux 发行版都不允许您以 root 用户身份登录。

当然,这是Linux,所以你可以将其配置为允许root用户登录。但是你登录的时间root越少越好。除了保护自己免受因打字错误引起的灾难之外,如果您无法以 身份登录,root其他人也无法登录。任何未经授权访问您的系统的人将无法以 身份登录root,从而限制了他们可以造成的损害。

但是如果root禁用登录身份,您如何管理您的 Linux 计算机?嗯,这就是sudo命令的用途。它不需要 root 用户登录。它会暂时授予root您 的权力。这就像拿起雷神之锤雷神之锤并暂时获得了雷神的力量。但只有当你值得时,你才能拿起锤子。同样,不仅仅是任何人都可以使用该sudo命令。如果您被发现值得并添加到 sudoers 列表中,则该sudo命令只会赋予root您权力。

还有另一个类似于sudo调用的命令su。使用sudo,您可以使用自己的密码进行身份验证。使用su,您可以使用 root 用户的密码进行身份验证。这在两个方面具有重要意义。首先,这意味着您需要为root用户分配一个密码才能使用su。默认情况下,root 用户没有密码,这有助于安全。如果root没有密码,则无法以root.

其次,如果您确实设置了 root 密码,那么每个要使用该su命令的人都需要知道该密码。共享密码是一个安全禁忌,对于 root 密码,更是如此。任何知道 root 密码的人都可以告诉其他人。如果您需要更改 root 密码,您需要将新密码传达给所有需要知道它的人。

使用 sudoers 列表来限制谁可以使用更安全sudo,并让每个特权人员使用他们的个人密码进行身份验证。

使用须藤

“/etc/shadow”文件包含您 Linux 计算机上每个帐户的用户名,以及其他信息,包括每个帐户的加密密码、上次更改密码的时间以及密码过期的时间。由于其中包含敏感信息,因此只能由root.

如果我们尝试使用该wc命令读取影子文件中的行、词和字符,我们将被拒绝权限。

wc /etc/shadow

13cee27a2bd9391

如果我们在 sudoers 列表中并且我们sudo在行的开头使用相同的命令,我们将被提示输入密码,并且该命令将为我们执行。如果您是 Linux 计算机上的唯一用户,则在安装系统时,您将自动添加到 sudoers 列表中。

须藤 wc /etc/shadow

c22c60349630d68

因为我们以 root 身份运行命令,所以wc命令被执行。没有人否认root。

sudo命令过去表示“超级用户执行”。它得到了增强,允许您以任何用户的身份运行命令,因此将其重命名为“替代用户执行”。该命令实际上就像其他用户运行它一样执行。如果不指定用户名,则sudo默认使用root. 如果您希望使用不同的用户,请使用-u(user) 选项。

我们可以看到,通过使用该whoami命令,这些命令是以另一个用户身份执行的。

我是谁
须藤whoami
须藤 -u mary whoami

7866cc7fb5a03c0

以 root 身份运行而不使用 su

问题sudo在于您必须在每个命令的开头使用“sudo”。如果您只是键入一两个命令,那没什么大不了的。如果您有更长的命令序列要执行,它会变得令人厌烦。这可能很烦人,但它确实可以作为一个有用的安全保护装置root,你必须每次都自觉地取下安全装置。

有一种方法可以有效地“登录”,root 因为它不使用su也不要求 root 用户拥有密码。

警告:使用此方法时要小心。你发出的每一个命令都会被愉快地执行,不会问任何问题——即使它是破坏性的。

使用sudo运行Bash shell中打开一个新的外壳,root为用户。

须藤 bash

4864dafb55d05d7

请注意,命令提示符会发生变化。提示的最后一个字符现在是散列“#”而不是美元字符“$”。

命令提示符正文的显示方式因发行版而异。在 Ubuntu 中,我们被告知用户是root并显示了计算机的名称和当前工作目录。提示的颜色也发生了变化。

因为我们是root,所以我们可以执行通常需要使用sudo.

wc /etc/shadow

0dd954ea204f19a

要退出 root 用户的 shell,请按“Ctrl+D”或键入“exit”并按“Enter”。

出口

fae594628f003e7

少超人,多克拉克肯特

如果您在 sudoers 列表中,那么您对 ​​Linux 系统拥有超能力。请记住,超人作为他温文尔雅的另一个自我的时间比他穿着红色斗篷的时间要多。

尽可能使用您的常规用户帐户。仅root在您真正需要时更改为。

未经允许不得转载:表盘吧 » Linux 上的“root”是什么?