我想,标题已经说明了一切。
事情是这样的:
MacOS 将我的 /data/db 文件夹(MongoDB 使用该文件夹来完成大量工作)切换为只读文件系统。基本上是在一夜之间发生的。
运行ls -lO /data
返回以下内容:
drwxr-xr-x 182 root admin - 5824 Jul 11 17:33 db
尝试运行sudo chmod -R 777 $USER /data
将返回以下内容:
chmod: Unable to change file mode on /data/db/index-32-577782821146278306.wt: Read-only file system
总共有很多条目。
我推测是 SIP 导致了这个问题。我尝试在恢复模式下通过运行 来禁用它csrutil disable
。这确实禁用了它,但仍然不允许我更改权限。
我不知道到底发生了什么。也许我的账户坏了?
答案1
我找到了造成这种荒唐现象的原因。是苹果。
基本上,这里发生的事情是,新版本的 MacOS(即 Catalina)现在将系统根文件夹设为只读。因此,任何因某种原因需要使用根文件夹的软件都会被搞砸。
我的解决方案如下:
- 关闭机器,然后通过以下方式启动进入恢复模式
Cmd + R + Boot
- 进入恢复状态后打开终端
- 使用以下方式禁用 SIP
csrutil disable
- 重启机器
- 启动 MacOS Catalina 后打开终端
- 跑步
sudo mount -uw /
这将授予您当前会话的 root 访问权限。下次启动时它将被重置。不过现在您可以在根文件夹中做很多事情,比如将您的内容移到其他地方。
所以我所做的是使用此命令将整个/data
文件夹移动到:/System/Volumes/Data
sudo mv /data /System/Volumes/Data
显然,这是放置所有数据的首选位置。根据根文件夹的新工作方式,您可以为这些文件夹添加链接,这样它们就会像根文件夹的一部分一样运行。这显然对我来说不起作用。但是,我仍然可以运行并进行如下mongod
设置:dbpath
sudo mongod --dbpath /System/Volumes/Data/data/db
希望这能帮助到所有遇到苹果这个愚蠢决定的人。整个 Catalina 更新简直是一团糟。