linux sudo su su - 三者区别

在 Linux 中,sudosusu - 都与权限切换相关,但用途和效果不同


1. sudo

普通用户执行特权命令

bash 复制代码
sudo command
以 root 权限执行单条命令

需要输入 当前用户的密码

权限由 /etc/sudoers 文件控制

执行后环境变量保持当前用户不变

示例:

bash 复制代码
sudo apt update  # 以 root 权限更新软件包列表

2. su (Switch User)

切换到其他用户(默认 root)

bash 复制代码
su [用户名]
切换到指定用户(不指定则切换到 root)

需要输入 目标用户的密码

保持 当前的工作目录和环境变量

主要用于用户身份切换

示例:

bash 复制代码
su          # 切换到 root(需 root 密码)
su alice    # 切换到用户 alice(需 alice 的密码)

3. su - (su + 登录 shell)

切换到其他用户的登录环境

bash 复制代码
su - [用户名]
连字符 - 或 -l 表示登录 shell

需要输入 目标用户的密码

切换到目标用户的 家目录

加载目标用户的 完整环境变量(~/.bashrc, ~/.profile 等)

类似于重新登录

示例:

bash 复制代码
su -        # 切换到 root 的登录环境
su - alice  # 切换到 alice 的登录环境

对比表格

命令 需要密码 环境变量 工作目录 典型用途
sudo cmd 当前用户密码 当前用户环境 当前目录 临时执行特权命令
su 目标用户密码 当前用户环境 当前目录 切换用户身份但保持环境
su - 目标用户密码 目标用户环境 目标用户家目录 完全切换到目标用户环境

使用建议

  • 日常管理 :使用 sudo 执行单条特权命令(更安全,有操作日志)

  • 需要 root shell :使用 sudo -isudo su -(比直接 su - 更安全)

  • 完全切换用户环境 :使用 su - username

  • 临时切换身份 :使用 su username


安全提示

bash 复制代码
# 推荐的安全做法:
sudo -i          # 切换到 root 的登录环境(使用当前用户密码)
sudo -u alice bash  # 以 alice 身份启动 shell

# 不推荐(除非必要):
直接使用 root 密码通过 su/su - 切换

最佳实践 :配置 sudo 权限给普通用户,避免共享 root 密码,使用 sudo 代替直接 su 到 root。

相关推荐
比昨天多敲两行2 分钟前
Linux进程间通信-共享内存
linux·运维·服务器
AbandonForce2 分钟前
Linux权限深入解读
linux·运维·服务器
哎呦,帅小伙哦4 分钟前
Nanomsg usock 模块:Socket 选项与错误码介绍
linux·中间件·nanomsg
lbb 小魔仙19 分钟前
Docker一键部署 EasyNode 面板,随时随地可视化管理服务器
服务器·docker·容器
Elastic 中国社区官方博客22 分钟前
Hacknight Beijing:基于阿里云与 Elastic 构建 AI Agents
大数据·运维·人工智能·elasticsearch·搜索引擎·阿里云·云计算
草莓熊Lotso27 分钟前
【Linux网络】深入理解 HTTP 协议(一):从基础概念到 URL 编码解码
linux·网络·c++·网络协议·http·软件工程
一号弯29 分钟前
用NAVICAT访问非本地服务器的报错问题
运维·服务器
能摆一天是一天33 分钟前
windows docker 部署openfire
运维·docker·容器
jingling55539 分钟前
Flutter | 从基本跳转到路由守卫
服务器·前端·网络·flutter·前端框架