






















sudo -i -u zhangsan 和 su - zhangsan 都可以让你切换到用户 zhangsan 并获得一个登录 Shell(类似直接以该用户登录系统),但它们在认证方式、权限模型、安全审计等方面有本质区别。下面从多个维度详细对比:
sudo -i -u zhangsan
NOPASSWD 则可免密)。zhangsan 的密码。sudo 机制处理,依赖 /etc/sudoers 中的授权规则。su - zhangsan
zhangsan 的密码。zhangsan 的密码(root 可以 su - zhangsan 无需密码,因为 root 可以切换为任何用户,但普通用户 su 到其他用户必须提供目标密码)。su 程序直接验证用户密码。sudo -i -u zhangsan
/etc/sudoers 中被授权以 zhangsan 身份执行命令,且规则中允许执行任何命令(或至少允许执行登录 Shell)。zhangsan 的密码,只要有 sudo 权限,就可以切换过去。su - zhangsan
zhangsan 的密码(或当前用户是 root)。su 切换到没有密码或密码未知的用户。sudo -i -u zhangsan
-i 选项模拟初始登录,会清空当前环境变量,然后加载目标用户的登录脚本(如 .profile、.bashrc 等),并切换到目标用户的家目录。zhangsan 登录系统。su - zhangsan
-(或 -l、--login)同样模拟登录 Shell,清空环境并加载目标用户的配置。sudo -i 类似,都提供一个登录环境。sudo 的优势
sudo 操作都会被记录到日志(如 /var/log/auth.log 或 journalctl),便于审计。su 的风险
su。sudo -i -u zhangsan
xiaoming 以应用用户 zhangsan 的身份进行调试,但不想透露 zhangsan 的密码。sudo 切换到该账户进行维护。su - zhangsan
sudo 取代。sudo 通过设置用户 ID(setuid)以 root 权限运行,然后根据授权规则切换到目标用户。su 本身是 setuid root 的程序(普通用户执行时,它以 root 权限运行,然后验证密码并切换)。假设 xiaoming 被授权 ALL=(zhangsan) ALL:
# xiaoming 执行:
sudo -i -u zhangsan # 输入 xiaoming 的密码后,直接获得 zhangsan 的登录 Shell
# 如果尝试 su:
su - zhangsan # 需要输入 zhangsan 的密码,xiaoming 不知道则会失败
如果 xiaoming 是 root(或通过 sudo su - 变成 root),则 su - zhangsan 可以免密切换,但此时实际上已经绕过了普通用户的限制。
| 特性 | sudo -i -u zhangsan |
su - zhangsan |
|---|---|---|
在现代 Linux 系统中,推荐使用 sudo 进行权限切换,因为它更安全、更灵活,且便于审计。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。