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。

相关推荐
wuminyu1 小时前
Kafka中sendfile与mmap实现机制解析
java·linux·c语言·jvm·c++
新时代牛马2 小时前
嵌入式网络完整篇:从LwIP/以太网驱动到 Linux netdev 与排障
linux·网络·php
猿与禅2 小时前
Linux(Ubuntu)入门到实战:系统管理、常用命令与权限体系完整指南
linux·ubuntu·apt·进程管理·系统运维·用户权限·vi/vim
前端世界2 小时前
Linux服务器实战:NTP时间同步、SELinux权限与rsyslog日志管理,一次搞懂三大运维问题
linux·运维·服务器
Android系统攻城狮2 小时前
Linux Gstreamer深度解析之gst_audio_converter_new调用流程与实战(二十)
linux·运维·服务器·gstreamer音视频·音视频进阶
海宇服务2 小时前
零信任架构实战:基于海宇对外投资历史查询服务构建自动化供应商准入网关
运维·人工智能·架构·自动化
上海云盾-小余2 小时前
BGP 高防底层原理:TCP 异常流量识别与清洗机制
运维·网络·tcp/ip
captain3763 小时前
▲网络原理(2)-TCP
java·服务器·网络·tcp/ip·java-ee
言乐64 小时前
Python加速器4跨境网络加速器
运维·服务器·开发语言·网络·python
蓝速科技7 小时前
医院导诊 AI 数字人一体机场景适配与落地指南丨蓝速科技
运维·数据库·人工智能·科技·自然语言处理·技术分享