0

0

Linux如何切换到root用户

P粉602998670

P粉602998670

发布时间:2025-09-09 08:29:01

|

691人浏览过

|

来源于php中文网

原创

答案是使用su或sudo切换到root用户。su需输入root密码,适合单机环境;sudo则通过授权机制以当前用户密码执行特权命令,更安全,便于审计,推荐用于多用户或生产环境。

linux如何切换到root用户

在Linux系统中,切换到root用户,也就是超级管理员,主要有两种方式:一种是使用

su
命令,另一种是利用
sudo
命令。这两种方式各有特点,理解它们的不同,能帮助你更安全、高效地管理系统。

要切换到root用户,最直接的办法是使用

su
switch user)命令。

如果你想获得一个完整的root用户环境,包括root用户的环境变量和路径,我强烈建议你使用:

su -

执行这个命令后,系统会提示你输入root用户的密码。密码输入正确,你就会发现命令行提示符变了,通常会变成

#
,表示你现在是root用户了。

如果只是简单地切换用户身份,但保留当前用户的环境变量,可以使用:

su

不过,这在实际管理中可能会导致一些意想不到的问题,比如某些命令找不到,因为PATH变量没更新。所以,我个人更倾向于使用

su -

另一种更常见、更推荐的方式,尤其是在多用户或生产环境中,是使用

sudo
命令。
sudo
允许授权用户以root或其他用户的身份执行命令。

如果你想执行单个命令作为root:

sudo 

例如,要更新系统:

sudo apt update

系统会要求你输入当前用户的密码(而不是root用户的密码)。这是

sudo
的一个核心优势,它不需要你知道root的密码,只要你的用户被配置在
/etc/sudoers
文件中,拥有执行相应命令的权限即可。

如果你想获得一个root的交互式shell,但又不想直接用

su -
(可能你不知道root密码,或者出于安全考虑不想直接用):

sudo su -

或者,更简洁一点,直接获得一个root shell:

sudo -i

这两种方式都会在你输入当前用户密码后,给你一个root权限的shell,效果上类似于

su -
,但背后的权限验证机制不同。

su
sudo
:究竟有何不同,我该如何选择?

说实话,这俩命令在功能上都能让你“变成”root,但它们的设计哲学和适用场景却大相径庭。在我看来,理解它们之间的差异,是Linux权限管理的第一课。

su
,全称是“switch user”,顾名思义,就是切换用户。当你执行
su -
时,系统会要求你输入目标用户(这里是root)的密码。这意味着,如果你想用
su
切换到root,你必须知道root用户的密码。这听起来很直接,但同时也带来了一个潜在的安全风险:root密码一旦泄露,整个系统就可能面临危险。而且,在团队协作中,把root密码分享给所有人,简直是安全噩梦。

sudo
(superuser do),则完全是另一套思路。它允许普通用户以其他用户(默认为root)的身份执行命令,但前提是这个普通用户必须在
/etc/sudoers
文件中有明确的授权。更妙的是,
sudo
要求你输入的是当前用户的密码,而不是root的密码。这大大提升了安全性,因为root密码始终只有少数人知道,甚至可以被锁定。每个用户只知道自己的密码,而且管理员可以精细地控制每个用户能执行哪些root权限的命令,甚至可以配置在执行
sudo
时是否需要密码,或者密码的有效期。

CoCo
CoCo

智谱AI推出的首个有记忆的企业自主Agent智能体

下载

我个人在日常管理中,更倾向于使用

sudo
。它提供了更强的审计能力(每次
sudo
操作都会被记录),也更好地遵循了“最小权限原则”。除非是进行系统恢复或者在单机环境下,我很少会直接用
su -
。在生产服务器上,我们通常会禁用root用户的直接登录,只允许通过
sudo
来执行特权操作,这样一旦某个普通用户账号被攻破,攻击者也无法轻易获得完整的root权限。

忘记了root密码怎么办?Linux系统应急处理策略

这绝对是每个Linux管理员都可能遇到的“心跳骤停”时刻。别慌,Linux系统提供了几种应急方案来帮你重置root密码。这过程其实是利用了系统启动时的特殊模式,绕过正常的认证机制。

最常见的方法是进入单用户模式(或恢复模式)。这个过程通常需要在系统启动时,在GRUB引导菜单界面进行操作。

以GRUB2为例,大致步骤是这样的:

  1. 重启系统。
  2. 在GRUB引导菜单出现时(通常是倒计时几秒),按下
    e
    键进入编辑模式。
  3. 你会看到一些启动参数。找到以
    linux
    linux16
    开头的那一行。
  4. 在这行的末尾,或者将
    ro
    (read-only)改为
    rw
    (read-write)之后,添加
    init=/bin/bash
    或者
    init=/sysroot/bin/sh
    (取决于你的发行版和具体情况,后者在某些发行版中更稳妥)。这会让系统启动后直接进入一个root权限的shell,而不是完整的图形界面或多用户模式。
  5. 按下
    Ctrl+x
    F10
    启动系统。
  6. 如果一切顺利,你会直接进入一个root shell。此时,你可能需要先挂载根文件系统为可写:
    mount -o remount,rw /

    如果之前用了

    init=/sysroot/bin/sh
    ,可能还需要:

    chroot /sysroot
  7. 然后,就可以使用
    passwd
    命令来重置root密码了:
    passwd root

    系统会提示你输入两次新密码。

  8. 密码修改完成后,别忘了更新SELinux上下文(如果你的系统启用了SELinux):
    touch /.autorelabel
  9. 最后,重启系统:
    exec /sbin/init

    或者直接

    reboot

这个过程听起来有点复杂,但其实只要跟着步骤走,大部分时候都能成功。它也从侧面说明了,物理安全对于服务器的重要性,因为任何能接触到服务器的人,都有可能通过这种方式重置密码。

为什么不建议长期以root身份操作?权限管理的最佳实践

我常常看到一些新手,甚至一些老手,习惯性地直接用root用户登录,或者在完成一个任务后,迟迟不退出root shell。说实话,这简直是给系统埋雷。长期以root身份操作,在我看来,是权限管理中的一个大忌,也是一个非常危险的习惯。

首先,最直接的风险就是误操作。作为root用户,你拥有对系统的一切权限,一个简单的

rm -rf /
就能瞬间摧毁整个系统,而且没有任何挽回的余地。普通用户即便执行了这样的命令,也会因为权限不足而失败。这种“一失足成千古恨”的例子,在运维圈子里可不少见。

其次,安全漏洞。如果你以root身份运行了一个有漏洞的程序,或者不小心从不安全的来源下载并运行了某个脚本,那么这个程序或脚本就能获得root权限,从而对你的系统造成无法挽回的损害,比如安装恶意软件、窃取数据,甚至是成为僵尸网络的一部分。如果只是以普通用户身份运行,即使程序有漏洞,其影响范围也会被限制在当前用户权限之内。

再者,审计和可追溯性。当多个人共享一个root密码并直接以root身份操作时,一旦系统出现问题,很难追溯是哪个具体的人,在哪个时间点,执行了哪个操作导致的问题。而如果大家都通过

sudo
来执行特权命令,那么
sudo
的日志(通常在
/var/log/auth.log
/var/log/secure
)就能清晰地记录下“哪个用户在何时执行了哪个命令”,这对于故障排查和安全审计至关重要。

所以,最佳实践是遵循最小权限原则(Principle of Least Privilege)

  • 日常操作使用普通用户。 只有在需要执行管理任务时,才临时提升权限。
  • 使用
    sudo
    进行特权操作。
    配置
    sudoers
    文件,精确控制每个用户可以执行的命令。例如,只允许某个用户重启服务,而不允许他修改系统文件。
  • 禁用root用户的直接登录。 特别是通过SSH远程登录,这是非常普遍且推荐的安全措施。
  • 为不同的服务创建专用用户。 例如,Web服务器(Nginx/Apache)通常会以
    www-data
    nginx
    用户运行,数据库(MySQL/PostgreSQL)会以
    mysql
    postgres
    用户运行,这样即使服务被攻破,攻击者也只能获得该服务的有限权限,无法直接控制整个系统。

总之,把root权限想象成一把万能钥匙,你不会把它挂在门外,也不会随意交给不相干的人。只有在确实需要打开保险柜时,才会小心翼翼地拿出来用,用完立刻收好。这种谨慎,才是系统安全和稳定的基石。

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

664

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

246

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

281

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

515

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

255

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

386

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

530

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

600

2023.08.14

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

9

2026.01.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 1.9万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 805人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号