![Linux 中管理员/root/超级用户如何工作?](https://linux22.com/image/81041/Linux%20%E4%B8%AD%E7%AE%A1%E7%90%86%E5%91%98%2Froot%2F%E8%B6%85%E7%BA%A7%E7%94%A8%E6%88%B7%E5%A6%82%E4%BD%95%E5%B7%A5%E4%BD%9C%EF%BC%9F.png)
我上学的时候我们就学过Windows。然后我选择了计算机工程学士学位课程,我们被迫使用 Linux 而不是 Windows。他们从不教授Linux基础知识,直接开始教授编程。这对我来说并不困难,因为我对 Linux 有点熟悉。但我仍然对Linux中的管理员或root或超级用户系统有一些疑问。现在我的问题由几个不同的子问题组成。所以事情是这样的:
我知道
#
终端提示中的 (hash) 意味着一个人正在以超级用户身份运行,而$
(dollar) 意味着一个人不是。但即使我的帐户是管理员帐户,我也没有#
在终端提示中看到。相反,我必须使用su
命令登录才能拥有管理权限。这是为什么?管理员、root 和超级用户这三个术语是否相同?我很困惑,因为在 Windows 中,只有一个术语“管理员”,如果您的帐户是管理员帐户,那么您基本上一直以管理员权限登录,即不必像在Linux。
我们在大学计算机中安装了 Ubuntu,如果您必须以管理员身份登录,那么您需要输入密码
su
,然后系统会提示您输入密码,您必须输入当前帐户密码才能成为超级用户。但我不喜欢 Ubuntu 设计,所以我转而在我的笔记本电脑上安装了 Fedora,安装时要求我输入两个密码,一个用于我的普通帐户(具有管理员权限),另一个用于“root”用户。那么这是否意味着每当我必须使用普通帐户以管理员身份登录时,我就必须登录我的“root”密码而不是普通密码?如果是这样的话,如果软件不会直接给我管理员权限,为什么它会要求我提供普通密码?
编辑:
有人可以向我解释一下 Linux 中的管理系统吗?什么是根?为什么我是管理员却没有管理员权限?
答案1
Unix/Linux 系统上的每个帐户都有一个数字标识符,即“用户 ID”或 UID。按照惯例,UID 0(零)被命名为“root”,并被赋予特殊权限(通常是访问系统上任何内容的权限)。
你可以如果您有 root 密码,则直接以 root 用户身份登录即可。然而,这样做通常被认为是不好的做法。
一方面,Unix/Linux 经常给你带来这种情况足够在没有安全的情况下搬起石头砸自己的脚的空间——有很多打字错误和事故,最简单的恢复就是完全重新安装和/或从备份恢复。因此,当您需要时,必须实际切换到root,以防止您意外地做一些您不想做的事情。
它还有助于限制恶意软件的传播。如果您的网络浏览器在 UID 0(我们说“以 root 身份”)下运行,那么远程网站可能会利用编程错误来完全控制您的计算机。保留“常规”用户帐户可以限制这种损害。
这两者都遵循称为“最小特权原则”的通用最佳实践 - 老实说,这在一般系统设计中是一件好事。您可以阅读更多关于不总是以 root 身份运行的具体原因:担心以 root 身份登录被高估了?
现在,剩下的问题是你如何能以非 root 用户身份访问受保护的内容。有两种基本方法 -su
和sudo
。第一个需要 root 密码,第二个在通常的配置中需要你的密码。通常的情况是,您使用sudo
“以 root 身份”运行单个命令,而不是在整个会话中切换到 root 帐户。 (您也可以使用 来执行此操作su -c
,这是您在文档中经常看到的内容。)有关这些相对优点的详细讨论,请参阅获得root权限最安全的方法是:sudo、su还是login?。 (并且,为了完整起见,还有其他机制不是 sudo 但以相同的方式工作,例如 PackageKit,通常用于 GUI 应用程序。)
您询问术语“root”、“超级用户”和“管理员”是否相同。 “root”和“超级用户”基本上都是。准确地说,有人可能会说:“该root
帐户是这超级用户,因为它的 UID 0。”
“行政人员”可以意思是一样的,但在 Fedora 中,我们*以稍微不同的方式使用它。并非系统上的每个用户都有权通过 sudo 获取 root 权限。在 Fedora 的默认设置中,组成员wheel
可以执行此操作。并且,在安装程序、文档和其他地方,我们称之为这“管理员帐户”。不是 root,但有权访问 root 权限。
(哦,最后一件事:提示中的#
vs$
只是一种视觉约定,并不是确定的。您可以更改环境变量PS1
以使提示执行各种操作。)
* 我在 Fedora 上工作。
答案2
安全问题,请参阅https://askubuntu.com/questions/16178/why-is-it-bad-to-login-as-root
是的
su
允许使用替代用户运行命令,当不带参数调用时,它默认以 root 身份运行交互式 shell。看http://www.linfo.org/su.html为此,您需要有 root 密码。您可以通过运行来绕过它
sudo su
(如果您被允许运行它)。 Sudo 允许允许的用户作为超级用户或安全策略指定的其他用户执行命令。 (在 /etc/sudoers 文件中指定)。在这里阅读更多内容:https://www.sudo.ws/man/1.8.15/sudo.man.html那么对于你的最后一个问题。至于第一个,是的。但大多数人更喜欢使用方便
sudo
。至于最后一个:我不确定你的意思,但最好为不同的帐户设置不同的密码。
答案3
Windows 和 Linux 管理管理权限的方式不同。
在 Windows 中,系统管理任务只能由以高权限级别运行的进程执行。正常进程以正常权限级别运行。如果用户的帐户被标记为管理员,则该用户可以以高权限级别运行进程;通常,他们需要重新输入密码才能执行此操作(“联合应用中心迅速的”)。因此,管理员是其帐户有权提升权限的用户。
在Linux(和其他Unix系统)中,系统管理任务只能由根用户。这是一个用于系统任务的用户帐户,而不是供人类登录的。root 用户由其用户 ID 定义,即 0(该帐户通常称为root
,但正是用户 ID 使其变得特殊,而不是名字)。管理员是有权访问root帐户的用户。
Linux 中访问 root 帐户的方式主要有两种。系统管理员可以启用其中之一或两者(或者更罕见的其他方法,涉及以不同方式配置的相同工具或其他工具)。
- 这
su
命令允许任何知道 root 帐户密码的用户访问 root 帐户。在某些设置中,仅传统上称为组成员的某些用户wheel
允许su
以 root 身份运行命令。 - 这
sudo
sudoers
如果命令在 sudo 配置文件 ( ) 中直接或通过组成员身份声明,command 允许用户以 root 身份运行命令。通常sudo
要求用户输入自己的密码;这主要是为了避免在用户离开终端无人看管的情况下路人使用 sudo。
因此,如果您在 Linux 上拥有管理员帐户,则意味着您可以以 root 身份运行sudo
或su
运行命令。当您不以 root 身份运行命令时,您拥有普通权限。