系统学习 macOS 学习路径:从 BSD 文件命令到系统、网络与开发维护

sudo

以 root 权限执行单条命令,是 macOS 上管理特权操作的标准入口。

补充说明

macOS 默认禁用 root 账户,管理员通过 admin 组和 sudo 提权。首次使用输入当前用户密码,默认在同一终端缓存约 5 分钟;sudo -k 立即失效,sudo -v 续期。sudo -l 查看当前用户被允许的命令,sudo -i 打开 root 登录 shell,sudo -u 用户 命令 切换身份执行。

边界:sudo 只提升 Unix 权限,不绕过 TCC 和 SIP。终端没有“完全磁盘访问”“屏幕录制”等授权时,sudo 一样失败;受 SIP 保护的系统文件即使 root 也不能改。修改 /etc/sudoers 必须用 sudo visudo,语法错误会让所有提权入口失效。

常用示例

# 1. 先续期,避免长脚本执行到一半才提示输密码
% sudo -v

# 2. 查看当前用户被授予了哪些命令
% sudo -l

# 3. 以其他用户身份执行;_www 是系统内置的 Web 用户
% sudo -u _www id -un

# 4. 脚本里非交互执行,凭证未缓存时立即失败而不是卡住
% sudo -n /usr/bin/true; echo $?

# 5. 修改 sudoers 前后都做语法检查
% sudo visudo -c

# 6. 立即清掉当前终端的 sudo 缓存
% sudo -k

# 7. 用 -- 结束选项解析,避免命令参数被 sudo 误读
% sudo -- /bin/ls -la /var/root

易错点与排错

相关命令

参考链接

读完自测

合上页面,先回答,再展开对照。

  1. sudo 的凭证缓存按什么范围生效?为什么新终端又要输密码?
  2. 为什么 sudo 不能解决“终端无法访问桌面文件”的问题?
  3. 修改 sudoers 的安全流程是什么?写错后可能有什么后果?
答案
  1. 默认按终端(tty)缓存约 5 分钟;新终端没有对应时间戳,所以要重新认证。
  2. 那是 TCC 隐私授权,不是 Unix 权限;需要在系统设置里给终端“完全磁盘访问”等权限,root 也不能绕过。
  3. 用 sudo visudo 编辑并在保存前后运行 visudo -c;写错可能导致所有用户无法提权,需要 Recovery 修复。
微信小程序码:扫码打开命令速查小程序

小程序版

微信扫码,随时查命令