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。

相关推荐
Lucis__21 分钟前
一文读懂TCP通信机制:基于相关API构建可靠性连接
linux·网络·tcp/ip
_深海凉_23 分钟前
LeetCode热题100-有效的括号
linux·算法·leetcode
鹿鸣天涯2 小时前
Xftp传输文件时,解决“无法显示远程文件夹”方法
运维·服务器·计算机
unDl IONA3 小时前
服务器部署,用 nginx 部署后页面刷新 404 问题,宝塔面板修改(修改 nginx.conf 配置文件)
运维·服务器·nginx
零号全栈寒江独钓3 小时前
基于c/c++实现linux/windows跨平台获取ntp网络时间戳
linux·c语言·c++·windows
Web极客码3 小时前
WordPress管理员角色详解及注意事项
运维·服务器·wordpress
左手厨刀右手茼蒿3 小时前
Linux 内核中的进程管理:从创建到终止
linux·嵌入式·系统内核
geinvse_seg3 小时前
中小团队如何低成本搭建项目管理系统?基于 Ubuntu 的 Dootask 私有化部署实战
linux·运维·ubuntu
星辰徐哥3 小时前
鸿蒙金融理财全栈项目——上线与运维、用户反馈、持续迭代优化
运维·金融·harmonyos
CSCN新手听安3 小时前
【linux】高级IO,以ET模式运行的epoll版本的TCP服务器实现reactor反应堆
linux·运维·服务器·c++·高级io·epoll·reactor反应堆