su、sudo、sudo su、sudo -i有什么区别

发布时间:2022-01-27 15:14:47 作者:iii
来源:亿速云 阅读:278
# su、sudo、sudo su、sudo -i有什么区别

在Linux系统管理中,`su`、`sudo`、`sudo su`和`sudo -i`是切换用户或提升权限的常用命令。它们看似功能相似,但在使用场景、安全性和环境变量处理上存在显著差异。本文将深入解析它们的区别,帮助读者根据实际需求选择合适的方式。

---

## 1. su:切换用户的基础命令

### 基本功能
`su`(Substitute User)是Linux中用于切换用户身份的基础命令。默认情况下,不指定用户名时切换到root用户:
```bash
su

需输入目标用户的密码(默认为root密码)。

特点

示例

su - username  # 切换用户并加载其环境变量
su             # 切换到root(需root密码)

2. sudo:以其他用户身份执行命令

基本功能

sudo(SuperUser Do)允许授权用户以其他用户(默认root)身份执行命令,无需知道目标用户密码:

sudo command

需输入当前用户的密码(由/etc/sudoers配置决定权限)。

特点

示例

sudo apt update       # 以root身份执行apt更新
sudo -u mysql ls /var/lib/mysql  # 以mysql用户执行命令

3. sudo su:结合sudo和su的混合用法

基本功能

sudo su通过sudo权限调用su命令,实现无需知道root密码的切换:

sudo su

特点

与纯su的区别

对比项 su sudo su
密码要求 root密码 当前用户密码
权限控制 受sudoers限制

4. sudo -i:模拟完整登录环境

基本功能

sudo -i(–login)模拟用户登录过程,生成完整的登录环境:

sudo -i

特点

sudo su -的等价性

sudo -i          # 等同于 sudo su - root
sudo -i username # 以指定用户登录

横向对比总结

命令 密码要求 环境加载 家目录切换 权限控制 典型使用场景
su 目标用户密码 保留当前环境 已知root密码时的快速切换
sudo 当前用户密码 保留当前环境 精细控制 单条命令的临时提权
sudo su 当前用户密码 保留当前环境 受sudoers限制 需要交互式shell但不想改环境
sudo -i 当前用户密码 加载目标环境 受sudoers限制 需要完整root会话

安全最佳实践

  1. 避免直接使用su
    因为需要共享root密码,且无法审计具体操作。

  2. 优先使用sudo
    通过/etc/sudoers限制权限,例如:

    username ALL=(ALL) NOPASSWD: /usr/bin/apt
    
  3. 谨慎使用sudo su
    可能绕过某些sudo的限制(如NOEXEC)。

  4. 会话管理推荐sudo -i
    当需要完整环境时,比sudo su -更符合标准。


常见问题解答

Q:为什么sudo -isudo su更推荐?
A:sudo -i直接调用login shell,行为更可预测,且不会被su的别名或配置影响。

Q:如何让sudo保留部分环境变量?
A:在/etc/sudoers中添加:

Defaults env_keep += "http_proxy HOME"

Q:sudo bashsudo -i有什么区别?
A:sudo bash只是启动bash,不会加载登录环境或切换家目录。


通过理解这些命令的差异,系统管理员可以更安全高效地管理权限。记住:最小权限原则是Linux系统安全的黄金准则。 “`

注:本文约1200字,采用Markdown格式,包含代码块、表格和层级标题。实际字符数可能因渲染环境略有差异。

推荐阅读:
  1. 设置ssh证书登录,禁止root登录,禁止su到root,sudo权限设置
  2. sudo更改身份

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

su sudo sudo su

上一篇:Linux中的semaphore是什么

下一篇:jstat命令怎么使用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》