我正在尝试在 OS X El Capitan 上编辑/System/Library/LaunchDaemons/com.apple.taskgated.plist
。文件权限为
-rw-r--r-- 1 root wheel 601 17 Nov 2015 com.apple.taskgated.plist
我的第一次尝试是编辑后sudo vi (filename)
使用w!
,但 vi 仍然报告只读状态。
我第二次尝试是使用 nano 和 sudo - 同样的问题。
我第三次尝试sudo su
编辑文件——同样的问题。
我的第四次尝试是vi (filename)
,将其写入临时文件,然后sudo cp (temp file) (filename)
- 操作不允许。
我想知道 a) 如何修复该问题以及 b) 我误解了什么 - 我以为我通过sudo
或拥有完全的 root 访问权限sudo su
,并且 root 对此文件拥有写权限...
答案1
除非你已经禁用系统完整性保护,/System
即使是 root 也无法写入目录树。
问题ls -lO /System
(大写字母‘oh’,不是零);如果您看到restricted
,则 SIP 正在保护该目录树。
解决方案(来自链接的答案):
- 首次启动进入恢复模式(启动时按 Command-R)
- 在终端中输入
csrutil disable
- 重新启动到正常模式。您应该看到 SIP 不再阻止写入访问。
如果您稍后想要恢复 SIP,只需csrutil enable
在恢复模式下使用。
答案2
我猜你是在 Mac 上使用 vim 编辑系统文件。请尝试使用 nano。对我来说,它有效。
答案3
确保该文件没有被可能阻止它的其他进程打开。
lsof +D /System/Library/LaunchDaemons/
答案4
检查指向您要编辑的文件的所有文件夹是否存在!这就是我遇到的情况 :)
vim ~/some_folder/some_non_existing_folder/file.txt