平时我们会使用到sudo 提升权限重启服务或者其他操作。举例:Mac重启蓝牙服务:sudo pkill bluetoothd,如果没有加 sudo执行的话,则会提示:pkill: signalling pid 22255: Operation not permitted 没有权限操作。 那么如果添加了sudo,则需要你手动输入密码,在写自动化脚本或者定时任务时候是没有人为交互的,较为麻烦。当然可以通过嵌套expect脚本或通过-S 参数读取标准输出来获取密码解决,但是这些都有较为大的密码泄露的风险在,所不在我的考虑范围,经过查询资料可以通过Unixsudoers特性配置免密交互,教程如下

sudo visudo
…………
# 上面的内容省略
# root and users in group wheel can run anything on any machine as any user
root            ALL = (ALL) ALL
%admin          ALL = (ALL) ALL
# 新增一行信息,格式如下:用户名 ALL=(ALL) NOPASSWD: 执行的命令
apper  ALL=(ALL) NOPASSWD: /usr/bin/pkill bluetoothd
# 下面的内容省略
…………

保存退出,mac退出终端重新登陆测试即可。

⚠️注意:此操作我理解的意思是,我设置了某些命令在输入sudo提升权限的时候,无需密码确认。所以在测试的时候还是需要sudo的。(别问我怎么知道,我测试的时候踩了这个坑)

测试

sudo pkill bluetoothd
# 不需要输入密码没有报错则成功

参考链接