sudo -i 与 sudo su 的区别详解
这两个命令都能让你从普通用户获得 root 权限,但有几点区别需要留意:
环境变量和初始化配置的加载
- sudo -i:模拟 root 用户的完整登录环境。它会加载 root 用户的登录配置文件(如 /root/.bash_profile 或 /root/.profile),设置好 root 用户预定义的 PATH 及其他环境变量。
- sudo su:会调用 su 命令切换到 root,但默认不会加载 root 的完全登录环境,而是继承当前用户的部分环境变量。除非使用 sudo su - 才会加载登录环境。
安全和审计日志
- 无论使用哪种方式,操作都会被 sudo 的日志记录下来。不过 sudo -i 是直接由 sudo 提供的命令,相对更简洁,也更符合 sudo 权限管理的初衷。
使用场景
- sudo -i:适合需要一个完整、干净的 root 登录环境的场景,推荐用于大部分需要完全 root 环境的操作。
- sudo su:有时使用者可能只是希望在已经存在的环境下调用 su 切换用户,或者出于习惯使用 su;但这通常意味着环境变量不会变成标准的 root 登录配置,可能会影响一些命令的行为。
总结: 一般建议在需要全面 root 登录环境时使用 sudo -i;而 sudo su 则只是简单地切换用户身份,不完全等同于登录 root。选择哪种方式取决于你对环境隔离和加载配置的需求。