Linux 切换到 Root 用户的方式及差异详解

embedded/2025/1/23 13:08:13/

在 Linux 系统中,切换到 root 用户进行管理和操作是常见需求。不同的切换方法会影响环境变量、工作目录以及加载的配置文件。本文将介绍几种常用的切换方式及它们的特点。


切换到 Root 用户的主要方式

1. sudo su

这是通过 sudo 提权后调用 su 切换到 root 用户的方式。

  • 特点

    • 保留当前用户的环境变量。
    • 切换到 root 用户后,工作目录不变,仍停留在当前目录。
    • 不加载 root 用户的环境配置文件(如 /root/.bashrc/root/.profile)。
  • 适用场景

    • 当需要短暂切换到 root 用户权限,但希望保留当前用户的环境变量时。

2. sudo su -

这是在 sudo su 基础上增加短横线 - 的方式,用于完全模拟登录到 root 用户。

  • 特点

    • 清除当前用户的环境变量,加载 root 用户的完整环境变量。
    • 切换到 root 用户的主目录 /root
    • 加载 root 用户的登录 shell 配置文件(如 /root/.bashrc/root/.profile)。
  • 适用场景

    • 需要完全模拟 root 用户登录环境时,例如测试 root 环境的配置或执行需加载登录环境的操作。

3. sudo -i

sudo -i 是直接通过 sudo 提供的登录 shell 切换方式。

  • 特点

    • 效果与 sudo su - 基本相同。
    • 清除当前用户的环境变量,加载 root 用户的登录环境。
    • 切换到 root 用户的主目录 /root
    • 加载 root 用户的登录 shell 配置文件。
  • 适用场景

    • sudo su - 相同,但语法更短、更直接。

4. sudo -s

sudo -s 提供的是一种非登录 shell 的切换方式。

  • 特点

    • 保留当前用户的环境变量。
    • 切换到 root 用户权限,但不切换目录,仍保留当前目录。
    • 不加载目标用户(root)的登录 shell 配置文件。
  • 适用场景

    • 希望切换到 root 权限,但不改变环境变量和工作目录的快速操作。

差异总结与建议

命令环境变量工作目录登录环境加载适用场景
sudo su保留当前用户环境变量当前目录不加载暂时切换到 root,保留当前环境。
sudo su -加载 root 环境变量/root加载完全模拟 root 登录环境。
sudo -i加载 root 环境变量/root加载sudo su - 相同,语法更简洁。
sudo -s保留当前用户环境变量当前目录不加载切换到 root 权限,快速保留当前环境。
su -c "cmd"根据 - 参数加载环境变量当前目录或 /root根据参数决定单次命令切换到 root,无需进入持续会话。

使用建议:

  • 保留当前环境时:使用 sudo susudo -s,避免影响现有环境变量。
  • 完全模拟 root 环境时:使用 sudo su -sudo -i
  • 单次命令执行:使用 su -c "cmd",切换到 root 仅执行指定命令后返回。

http://www.ppmy.cn/embedded/156308.html

相关文章

C# OpenCV机器视觉:常用滤波算法

在一个电闪雷鸣的夜晚,阿强的实验室里却灯火通明,宛如黑暗中的科技孤岛。窗外狂风呼啸,大雨倾盆,仿佛是世界末日的序曲;而屋内,阿强正对着电脑屏幕愁眉苦脸,屏幕上是一张张 “惨不忍睹” 的图像…

考研408笔记之数据结构(四)——树与二叉树

数据结构(四)——树与二叉树 1. 树的基本概念 1.1 树的定义 树的定义:树是n(n>0)个结点的有限集。当n0时,称为空树。 在任意一棵非空树中应满足: 有且仅有一个特定的称为根的结点。当n&…

07_游戏加载窗口

隐藏动态提示窗口 创建空节点 命名为 LoadingWnd 意为加载窗口 并设置全屏 在子级下创建Image作为加载背景 也设置成全屏 将以下资源放进Art文件夹中 设置好精灵模式后拖拽至 Image的Source Image框选 创建文本作为提示内容 增加描边组件OutLine可以美化字体 创建Image作为加载…

「全网最细 + 实战源码案例」设计模式——工厂方法模式

核心思想 简单工厂模式是一种创建者模式,它通过一个工厂类负责创建不同类型的对象,根据传入的参数决定实例化的具体类,也被称为“静态工厂方法”模式,因为工厂方法通常是静态的。 结构 1. 工厂类: 提供一个静态方法…

Gin 框架入门实战系列教程

一,Gin介绍 Gin是一个 Go (Golang) 编写的轻量级 http web 框架,运行速度非常快,如果你是性能和高效的追求者,我们推荐你使用Gin框架。 Gin最擅长的就是Api接口的高并发,如果项目的规模不大,业务相对简单…

Codeforces Round 1000 (Div. 2)-C题(树上两个节点不同边数最大值)

https://codeforces.com/contest/2063/problem/C 牢记一棵树上两个节点如果相邻,它们有一条边会重叠,两个节点延伸出去的所有不同边是两个节点入度之和-1而不是入度之和,那么如果这棵树上有三个节点它们的入度都相同,那么优先选择非相邻的两个节点才能使所有不同边的数量最大!!…

1561. 你可以获得的最大硬币数目

class Solution:def maxCoins(self, piles: List[int]) -> int:piles.sort()res,n0,len(piles)for i in range(n//3):respiles[n-2-2*i]return res这里如果"你"想要获取最大,那么从最大的开始找 每隔俩算一个最大累计,Bob默认自己从最小那找…

电子电气架构 --- 什么是自动驾驶技术中的域控制单元(DCU)?

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所谓鸡汤,要么蛊惑你认命,要么怂恿你拼命,但都是回避问题的根源,以现象替代逻辑,以情绪代替思考,把消极接受现实的懦弱,伪装成乐观面对不幸的…