我可以在 macOS Monterey 中将根(系统)文件系统挂载为可写吗?

问题描述 投票:0回答:2

我试图让我的Python代码在系统根目录下读取和写入文件,因此我按照这些步骤禁用了系统完整性保护。但是当我运行命令

sudo mount -uw /
时,我收到此错误:

mount_apfs: volume could not be mounted: Permission denied mount: / failed with 66

我现在应该做什么?

python file-access macos-monterey root-access
2个回答
4
投票

在蒙特利,需要一些额外的步骤,下面列出了一些重要的注意事项。

首先,这需要禁用 FileVault(在系统偏好设置 → 安全和隐私 → FileVault 中)。这意味着您硬盘上的数据将不再加密,即任何对您的系统有物理访问权限的人都能够完全访问您的数据。

除了禁用系统完整性保护 (SIP) 之外,您还需要禁用 签名系统卷 (SSV),这是一种在运行时检查系统卷并拒绝任何没有签名的数据的机制。加密有效的 Apple 签名。 这意味着您将无法重新打开 SSV(或 SIP)而不丢失对根驱动器所做的更改。

要禁用 SIP 和 SSV,请在恢复模式下重新启动(按住 +r)。在恢复模式下,打开终端并执行:

csrutil disable                     # disable System Integrity Protection (SIP)
csrutil authenticated-root disable  # disable Signed System Volume (SSV)
reboot

重新启动回到标准模式后,在用户具有写访问权限的位置创建一个新目录,例如

$HOME
。我认为它需要有完全开放的权限。所以,如果新创建的文件夹名为
rootmount
:

mkdir -m777 ~/rootmount 

然后您需要将根设备挂载到该目录。根设备将在

mount
的输出中列出,并带有类似
/dev/disk1s5s1 on / (apfs, sealed, local, read-only, journaled)
的内容。安装列出的设备而不最后一个
s1
— 例如:

cd ~
sudo mount -o nobrowse -t apfs /dev/disk1s5 rootmount
cd rootmount
## whatever changes you want to make

完成后

cd rootmount
,您就位于根驱动器的可写副本中。在那里进行您想做的任何更改。之后,您必须告诉系统使用新版本作为根设备。这样做:

sudo bless -folder /Users/<your-username>/rootmount/System/Library/CoreServices -bootefi -create-snapshot

重新启动后,您所做的更改应保留在根驱动器上。

重要的重申警告:如果您重新启用 SIP 和/或 SSV,您的根驱动器将恢复到 Apple 批准的状态,从而恢复您所做的所有更改。此外,更新操作系统也会导致更改恢复。

显然苹果公司不够信任他们的用户,不允许他们以任何重大方式改变自己的电脑。幸好苹果能够保护我们免受自身伤害。如果没有他们的监督,我们竟然能够不把一切搞砸,这真是一个奇迹。


0
投票

很好,但不起作用。还是说只读文件系统

© www.soinside.com 2019 - 2024. All rights reserved.