当`sudo`和`bypass`不起作用时如何避免macOS上的“不允许操作”

Posted

技术标签:

【中文标题】当`sudo`和`bypass`不起作用时如何避免macOS上的“不允许操作”【英文标题】:How to avoid "Operation not permitted" on macOS when `sudo` and `bypass` don't do the trick 【发布时间】:2020-01-25 18:14:30 【问题描述】:

在 macOS (High Sierra) 上,当我尝试在路径中列出文件时

/private/var/db/ConfigurationProfiles/Store

我收到错误“Operation not permitted”。使用 sudo 并没有更好,甚至使用 bypass 助手也不会改变任何东西:

sudo /System/Library/Extensions/TMSafetyNet.kext/Contents/Helpers/bypass ls -l /private/var/db/ConfigurationProfiles/Store

也给出“Operation not permitted”。如何列出/访问路径/private/var/db/ConfigurationProfiles/Store下的文件?

其他信息:

通过ls -al /private/var/db/ConfigurationProfiles 显示的封闭目录列表:

drwxr-xr-x   5 root  wheel   160 13 Apr  2018 .
drwxr-xr-x  85 root  wheel  2720 28 Sep 06:27 ..
drwxr-xr-x@  4 root  wheel   128 16 Dec  2017 Settings
drwx------   3 root  wheel    96  1 Oct 21:56 Setup
ls: Store: Operation not permitted

始终如一,但奇怪的是,Store 无法列出。在以当前用户身份执行 ls 和通过 sudo 执行时都会发生这种情况。

【问题讨论】:

你能给我们ls -la/private/var/db/ConfigurationProfiles吗? @tukan 查看我的问题。我已经添加了相关细节。 你也试过sudo ls -la吗? 是的,正如问题中提到的那样,它既作为当前用户又通过 sudo 发生。 您在 (csrutil status) 上有系统完整性吗? -> 这是您必须禁用保护才能查看文件的最可能原因。您是否验证您的磁盘? 【参考方案1】:

最可能的原因是system integrity protection (SIP) - csrutil 是命令行实用程序。您需要禁用它才能查看目录。

要查看您的状态,您需要:

csrutil status

禁用它(这通常是一个的想法):

csrutil disable(那么您可能需要重新启动)。

启用它(完成后应重新打开):

csrutil enable

【讨论】:

我可以确认禁用 SIP 解决了访问问题:然后sudo ls -al /private/var/db/ConfigurationProfiles/Store 列出了该目录的内容。 - 这不是我希望的解决方案,但它是一个解决方案(并且可能是唯一可能的解决方案)。 @halloleo 这就是 MacOS 的工作方式。如果 SIP 被 SIP 覆盖,则“普通”用户无权访问,以保护系统免受普通用户的侵害。【参考方案2】:

往往“不允许操作”与权限有关,所以真正解决问题的方法是进入有问题的文件夹的权限。

    打开 Finder,然后找到导致您操作失败的文件夹(例如“ls”)。

    右键单击文件夹,然后选择“获取信息”

    添加用户对该文件夹具有读/写权限;又名,添加您的用户个人资料(您)。

如果这不能解决问题,则可能是终端应用程序本身无法通过隐私火球访问数据。解决这个问题:

    点击左上角的苹果符号并选择“系统偏好设置” 打开“安全和隐私” 选择“隐私”菜单 在左侧,选择“全盘访问” 在左下角,单击锁并输入您的 MacOS 密码或滑动手指(眼睛)。 单击右侧的加号按钮将终端应用程序添加到具有全盘访问权限的事物列表中。确保完成后检查终端。 重置锁,您就完成了。 关闭终端,然后重新启动。

这应该允许终端访问相关文件夹。

更多信息:https://osxdaily.com/2018/10/09/fix-operation-not-permitted-terminal-error-macos/

【讨论】:

以上是关于当`sudo`和`bypass`不起作用时如何避免macOS上的“不允许操作”的主要内容,如果未能解决你的问题,请参考以下文章

将 sed 的输出重定向到文件时,sudo 不起作用[重复]

当我将它与 sudo 一起使用时,python 2.7 不起作用 [关闭]

在 Chrome 中调试时避免不相关的文件不起作用

在我的本机代码中,键盘避免视图不起作用

在 Tailwind 中调整窗口大小时如何避免 div 混乱?

Ansible sudo 不起作用