macOS 终端中如何切换到其他用户 su
在 macos 系统中,使用 su 命令切换到其他用户需要当前账户具备管理员权限(即属于 admin 组),并且必须提供目标用户的密码。默认情况下,macos 出于安全考虑禁止直接切换至 root 用户,但允许切换到其他已创建的用户账户。执行时只需在终端输入 su - [用户名] 并回车,随后输入该用户的密码即可成功切换会话。

为什么无法直接 su 到 root 用户
macOS 默认禁用了 root 用户的远程登录和直接 su 访问,这是为了遵循最小权限原则和安全最佳实践。系统通过 PAM(可插拔认证模块)配置限制了 root 的直接交互登录。若需执行高权限操作,推荐使用 sudo 命令临时获取权限,而非永久切换身份。这种设计防止了因误操作或恶意软件导致的系统级破坏。

su 命令切换后的环境变量差异
使用 su - username(注意连字符)会加载目标用户的环境变量,模拟完整登录状态;而 su username(无连字符)仅切换用户身份,保留当前 shell 的环境变量。这可能导致路径、编辑器或工具链不一致。例如,切换后若未加连字符,$PATH 仍指向原用户目录,可能找不到新用户的自定义脚本。

#!/bin/bash # 示例:演示 su 切换行为 # 假设当前用户为 alice,目标用户为 bob # 确保 bob 用户存在且密码已设置 # 正确切换:加载 bob 的环境 su - bob # 错误切换:不加载环境,可能出错 su bob # 验证当前用户 echo "Current user: $(whoami)" # 退出切换 exit
预期结果:执行 su - bob 后,whoami 输出 bob,且 $HOME 变为 /Users/bob。若省略连字符,$HOME 仍为原用户目录,可能导致配置文件读取异常。


















