"restricted" folder/files 在 OS X El Capitan

"restricted" folder/files in OS X El Capitan

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

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

这是 OS X El Capitan 的新内容吗?我如何编辑 files/folders 即 "restricted"?


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

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

不幸的是,没有人提出一种编辑 "restricted" files/folders 的方法,而无需实际禁用 SIP。

直到 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

您也可以通过以下方式暂时关闭SIP

  1. 重启
  2. 听到灰色屏幕上的 "Mac sound" 后,立即按 Cmd+R 进入恢复模式
  3. 打开实用程序->终端
  4. 运行命令csrutil disable
  5. 重新启动,您将进入正常 OS 并禁用 SIP
  6. 做所有你想做的改变
  7. 再次重启
  8. 听到灰色屏幕上的 "Mac sound" 后,立即按 Cmd+R 进入恢复模式
  9. 使用 csrutil enable
  10. 启用 SIP
  11. 再次重启
  12. 完成

我建议您尝试向 /Library/Preferences/ 中的 plist 添加您需要的任何参数。例如,在我的例子中,我需要对 mDNSResponder 稍作改动以添加 AlwaysAppendSearchDomains 标志。正如 "bwells" 在 Apple 开发者论坛上所建议的那样,我只需要做

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 的新功能。

您可以"by pass"通过系统组的Finder应用程序修改文件权限来"by pass" SIP保护。

modifying permissions

即使在重新启动后它对我来说也能正常工作,我是 运行

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

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

csrutil enable --without fs

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

我使用 carbon copy cloner 制作可克隆的备份...并且轮流使用多个。

据 bombich 的迈克说 "SIP only applies to the volume you're currently booted from, so [one can] boot from the backup volume to delete [files]"。

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

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

  1. 重启时按 "CMD+R" 即可进入 "Recovery" 模式。
  2. 打开终端
  3. 您的磁盘将安装在 /Volumes/Macintosh HD
  4. 通过 "rm" 删除文件:您对该终端拥有绝对控制权。