【问题标题】:"restricted" folder/files in OS X El CapitanOS X El Capitan 中的“受限”文件夹/文件
【发布时间】:2015-08-26 09:34:12
【问题描述】:

从 OS X Yosemite 升级到 OS X El Capitan Developer Preview 后,我尝试编辑 /System/Library/LaunchDaemons/ssh.plist 以将默认 SSH 端口更改为自定义端口。这是我几年来一直在使用的过程。

问题是 El Capitan 不允许我更改此文件夹中的任何内容(即使使用“sudo”也不行)。当我使用 "ls -lO" 列出内容时,该文件夹及其文件被标记为 "restricted"。以前版本的 OS X 中的相同文件夹列表不会显示“受限”。

这是 OS X El Capitan 的新功能吗?如何编辑“受限”的文件/文件夹?


我发现这是由于 El Capitan 中引入了一项名为 “SIP”(系统完整性保护) 的新功能。

在此处阅读更多信息:https://forums.developer.apple.com/thread/4731?q=SIP

不幸的是,没有人建议在不实际禁用 SIP 的情况下编辑“受限”文件/文件夹的方法。

【问题讨论】:

  • 没有 El Capitan Beta。 Apple 已经发布了操作系统的开发者预览版,您应该将问题提交给Apple Forums
  • @TheDarkKnight,是的,我知道并且已经在 Apple 论坛上发布了这个问题。

标签: macos file permissions osx-elcapitan


【解决方案1】:

您也可以通过以下方式暂时禁用 SIP

  1. 重启
  2. 一听到灰屏“Mac声音”,按Cmd+R进入Recovery模式
  3. 打开实用程序->终端
  4. 运行命令csrutil disable
  5. 重新启动,您将进入正常操作系统并禁用 SIP
  6. 做所有你想做的改变
  7. 再次重启
  8. 一听到灰屏“Mac声音”,按Cmd+R进入Recovery模式
  9. 使用csrutil enable 启用 SIP
  10. 再次重启
  11. 完成

【讨论】:

  • 为我工作 - 我必须 chmod u+s /usr/sbin/pppd 让 SonicWall NetExtender 重新开始在 El-Capitan 上工作,上面的说明使这成为可能。
  • @Johannes Weiß 是否可以为卷上的特定文件夹禁用 SIP?
  • 使用垃圾箱中的“车轮受限”文件为我工作
【解决方案2】:

直到 10.11 取消保护 /System/Library 中的某些文件或允许您自己执行此操作,不禁用 SIP 的唯一方法是通过将文件复制到其他位置来提供不同的服务,例如:

sudo cp /System/Library/LaunchDaemons/ssh.plist /Library/LaunchDaemons/ssh.plist

然后,您可以自己管理服务,而不是使用系统偏好设置中的共享面板:

sudo launchctl unload /Library/LaunchDaemons/ssh.plist
sudo launchctl load -w /Library/LaunchDaemons/ssh.plist

【讨论】:

  • 请务必更改文件名和文件内的Label键,以免与原始启动项冲突。
  • 我认为这是最好的答案。您可能需要编辑并添加一个提醒,提醒您需要重新启动或sudo launchctl start com.openssh.sshd(或您提供的任何Label)才能真正开始工作。
  • 帮助 org.apache.httpd.plist 。很好的建议,应该被接受为更“正确”的方式。
  • 直到 10.11 什么 取消保护某些文件?这个答案中有一些奇怪的措辞。
  • @BradleagheJohnson empedocle 的意思是“直到 10.11 的修订版取消保护...”
【解决方案3】:

我建议您尝试将所需的任何参数添加到 /Library/Preferences/ 中的 plist。例如,在我的例子中,我需要对 mDNSResponder 做一点改动以添加 AlwaysAppendSearchDomains 标志。正如苹果开发者论坛上的“bwells”所建议的那样,我只需要这样做

sudo launchctl unload /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
sudo defaults write /Library/Preferences/com.apple.mDNSResponder.plist AlwaysAppendSearchDomains -bool YES
sudo launchctl load /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

这是一种更简洁的方法,并且在重新启动后仍然存在,并且还应该在升级后继续存在(至少在测试期间,我在禁用 SIP 后的手动更改被覆盖)。请注意,据我所知,这对 El Capitan 来说是新的。

【讨论】:

  • Here's the relevant thread。似乎无法使用自定义 SSH 端口,例如sudo defaults write /Library/Preferences/ssh.plist SockServiceName -string $PORT
【解决方案4】:

您也可以在禁用文件系统管理的同时启用 SIP。以恢复模式重新启动并运行:

csrutil enable --without fs

这将允许您根据需要更改权限。

【讨论】:

  • 谢谢。这不会破坏这个新功能的安全目的吗?
  • @Amos SIP 有很多组件。文件系统保护只是其中一个组成部分。是的,禁用它确实会破坏安全性,但仅限于该特定功能,而不是完全 SIP。
【解决方案5】:
  1. 只需在重启时按“CMD+R”即可进入“恢复”模式。
  2. 打开终端
  3. 您的磁盘将安装在 /Volumes/Macintosh HD 中
  4. 通过“rm”删除文件:您对该终端拥有绝对控制权。

【讨论】:

  • 我只在/Volumes/ 中看到指向/ 的符号链接。您如何安装实时系统?接受答案的过程确实有效,我只是好奇下次。
  • 在打开终端之前,您需要在恢复模式下挂载卷。或者,您可以从终端使用“diskutil mountDisk ”。
  • 如果您对学习diskutil 命令行不感兴趣,可以在恢复模式下使用“磁盘工具”图形界面来挂载(加密)硬盘。
【解决方案6】:

我使用复写克隆器来制作可克隆的备份......并且有几个轮换。

bombich 的 mike 说“SIP 仅适用于您当前启动的卷,因此 [one can] 从备份卷启动以删除 [files]”。

我确实使用了 johannes 的答案(恢复驱动器,csrutil 启用/禁用),但这需要重新启动 —> 恢复驱动器 —> 关闭 sip —> 重新启动 —> 删除废话 —> 重新启动 —> 恢复驱动器 —> 打开 sip重新启动 —> 重新启动...四次重新启动。

但是从克隆启动并将原始驱动器视为辅助驱动器将允许您在两次重新启动时删除有问题的文件...是吗?

【讨论】:

    【解决方案7】:

    您可以通过 Finder 应用程序为系统组修改文件权限,从而“绕过”SIP 保护。

    modifying permissions

    即使重启后它对我来说也很好,我正在运行

    ProductName: Mac OS X ProductVersion: 10.11 BuildVersion: 15A284

    【讨论】:

    • 我没有让这个工作——我有系统的 R+W 权限,就像你展示的那样,我是管理员,但我仍然不能sudo vim(权限不足) 或在 Finder 中添加写入权限。我认为系统权限不足以允许用户(甚至是 root)写入此文件。
    猜你喜欢
    • 2016-03-28
    • 2016-01-27
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-29
    相关资源
    最近更新 更多