在树莓派上以 root 用户身份登录
- Raspberry Pi OS 和 Root 帐户中的一般访问控制概念
-
从默认
pi
用户以 Root 身份登录 - 在 Raspberry Pi OS 中为 root 用户设置密码
- 通过 SSH 会话访问 root 用户
本文将介绍几种在树莓派操作系统上以 root 用户登录的案例。
Raspberry Pi OS 和 Root 帐户中的一般访问控制概念
你可能已经知道,Raspberry Pi OS 是基于 Debian Linux 的,操作系统的许多核心部分对于系统管理员来说都具有相同的界面。
通常,一个基于 Linux 的系统可以有多个用户,他们可以同时使用其上的资源而不会相互冲突。Linux 系统还定义了一个名为 root
的特殊管理用户,它能够操纵系统的各个方面。虽然,这种无限制的权限引发了正确保护对它的访问的问题,这就是为什么某些 Linux 发行版(如 Raspberry Pi OS)默认禁用它的原因。
新安装的 Pi OS 具有默认的 pi
用户和密码 raspberry
。这些凭据用于在第一次启动时登录。此外,在此阶段,系统设置 GUI 提示将建议更改默认密码。如果你在初始设置过程中错过了这一步,你始终可以通过 CLI 使用 passwd
命令对其进行修改。
从默认 pi
用户以 Root 身份登录
在这种情况下,我们假设你以 pi
用户身份登录并有权访问命令行界面。输入以下命令以 root
用户身份登录。
sudo su
上述方法应该可以在当前 Pi OS 版本上不需要任何密码的情况下工作,假设直到此时还没有完成相应的系统配置修改。请注意,sudo
命令用于将操作系统的普通用户的权限提升到超级用户级别。这样,单个命令(如 su
)以 root 权限执行,一旦它返回,控制权就会交还给普通用户。这种技术被用作大型多用户系统的安全措施,它有很多好处。
在这里,我们基本上利用 sudo
提供的权限来运行 su
命令,这会产生 root
shell 访问权限。请注意,执行带有 sudo
前缀的命令本身就是普通用户的特权,而 pi
用户恰好在 Pi OS 中默认拥有该特权。一旦你访问了 root
shell,你就可以使用超级用户权限运行所有命令,完成后,你可以使用 Ctrl+D 快捷方式退出它。
在 Raspberry Pi OS 中为 root 用户设置密码
之前访问 root
用户的解决方案是一个小技巧,需要你首先以 pi
用户身份登录,但我们可以有一个解决方案,即激活 root
用户并设置单独的密码。这首先需要 sudo
权限进行配置。因此,我们需要从 pi
用户运行以下命令:
sudo passwd root
此命令将提示输入新密码,然后再次重新输入。因此,你可以从当前终端会话以 root
用户身份登录,或者你可以注销并使用新的 root
凭据登录。请注意,你需要运行没有 sudo
前缀的 su
命令才能使用新密码访问 root shell。
通过 SSH 会话访问 root 用户
如果你按照上一条说明操作并为 root
用户设置了单独的密码,则可以继续执行下一个命令并允许通过 SSH 进行访问。首先,你需要确定你的用户是 pi
还是 root
,你可以在 CLI 行的左侧快速注意到这一点,或者通过执行 whoami
命令来检索它。然后你可以根据当前登录的用户运行以下命令之一:
pi
用户:
sudo nano /etc/ssh/sshd_config
root
用户:
nano /etc/ssh/sshd_config
这些命令使用 CLI 文本编辑器 nano
打开 SSH 配置文件,这是一个更适合 Linux/Unix 初学者的用户友好界面。但是,你可以打开此文件以使用你熟悉的任何 CLI 文本编辑器(例如 Vim 或 Emacs)进行编辑。然后你应该寻找一行说:
#PermitRootLogin prohibit-password
现在,删除 #
以取消注释文本并将 prohibit-password
替换为 yes
字符串。然后,通过单击Ctrl+X 并输入 Y
来保存更改。此时,nano
将提示覆盖给定文件,你可以按Enter键确认。最后,你需要使用下一个命令重新启动 SSH 服务以加载新配置:
pi
用户:
sudo systemctl restart ssh
root
用户:
systemctl restart ssh
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn