OS X El Capitan中的“受限制的”文件夹/文件


70

从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的情况下编辑“受限”文件/文件夹的方法。


2
没有El Capitan Beta。苹果已经发布了该操作系统的开发人员预览版,您应该将问题定向到苹果论坛
TheDarkKnight

1
@TheDarkKnight,是的,我知道,并且已经在Apple论坛中发布了此问题。
SpencerMüllerDiniz 2015年

Answers:


75

您还可以通过以下方式临时禁用SIP

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

为我工作-我不得不chmod u+s /usr/sbin/pppd让SonicWall NetExtender在El-Capitan上再次开始工作,并且上述说明使这成为可能。
阿莫斯·夏皮拉

1
@JohannesWeiß是否可以为卷上的特定文件夹禁用SIP?
Ashutosh Dave

为我工作时在“垃圾箱”中使用了“车轮受限制”文件
-Bisca

27

在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

1
确保更改文件名和Label文件内的键,以避免与原始启动的项目冲突。
高登·戴维森

我认为这是最好的答案。您可能需要编辑并添加一条提醒,您需要重新启动或sudo launchctl start com.openssh.sshd(或提供的所有信息Label)才能真正开始工作。
n8henrie

帮助org.apache.httpd.plist。伟大的建议,应被视为更“正确”的方式imo。
lifecoder

直到10.11,什么才能保护某些文件?这个答案有些奇怪的措词。
布拉德·约翰逊

@BradleagheJohnson empedocle的意思是“直到10.11的修订版取消保护...”
jhfrontz

4

我建议您尝试将所需的任何参数添加到/ Library / Preferences /中的plist。例如,在我的情况下,我需要对mDNSResponder进行一些更改以添加AlwaysAppendSearchDomains标志。正如Apple开发者论坛上“ 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

这是一种更干净的方法,在重新启动后仍然有效,并且在升级后也应保持生存(至少在Beta中,禁用SIP后我的手动更改被覆盖)。请注意,据我所知,这对El Capitan来说是新的。


1
这是相关的线程。似乎无法使用自定义SSH端口,例如sudo defaults write /Library/Preferences/ssh.plist SockServiceName -string $PORT
n8henrie 2015年

3

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

csrutil enable --without fs

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


谢谢。这不会破坏此新功能的安全性目的吗?
阿莫斯·夏皮拉

@Amos SIP具有许多组件。文件系统保护只是组件之一。是的,禁用它确实会破坏安全性,但只会破坏该特定功能的安全性,而不会完全破坏SIP。
grg

2
  1. 只需在重新引导时按“ CMD + R”即可引导到“恢复”模式。
  2. 开放终端
  3. 您的磁盘将安装在/ Volumes / Macintosh HD中
  4. 通过“ rm”删除文件:您对该终端拥有绝对控制权。

我只看到到/中的符号链接/Volumes/。如何安装实时系统?接受的答案的程序确实起作用了,下一次我很好奇。
吸血鬼

打开终端之前,您需要以恢复模式挂载该卷。或者,您可以从终端使用“ diskutil mountDisk <设备>”。
user2892047

如果您对学习diskutil命令行不感兴趣,则可以在恢复模式下使用“磁盘工具”图形界面来安装(加密的)硬盘驱动器。
MarcH

1

我使用复本复制器进行可复制的备份...并且有多个轮换。

根据mike at bombich的说法,“ SIP仅适用于当前从中引导的卷,因此[一个可以]从备份卷引导以删除[文件]”。

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

但是从克隆引导并把原始驱动器看作是辅助驱动器,将允许您在两次重新引导中删除有问题的文件...是吗?


-1

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

修改权限

即使重新启动后,它对我也能正常运行

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


我无法正常工作-就像您显示的那样,我具有对System的R + W权限,并且是管理员,但是我仍然不能sudo vim(权限不足)或在Finder中添加写入权限。我认为系统权限不足以允许用户(甚至root用户)写入此文件。
n8henrie
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.