如何阻止 MacOS 更新覆盖我的 auto_master 文件?

Den*_*son 5 macos nfs updates

如何阻止 MacOS 更新覆盖我的 auto_master 文件?每次重大的 MacOS 更新都会删除我的自定义 auto_master 并放入默认的 auto_master。实际上,我只在文件末尾添加一行,甚至不修改现有行,因为它们与我无关。

Yas*_*oda -1

我花了相当多的时间来弄清楚 OS X 中 NFS 共享的自动挂载...

在此过程中,Apple 决定不允许直接挂载到 /Volumes 中:

/etc/auto_master (参见最后一行)

#
# Automounter master map
#
+auto_master        # Use directory service
/net            -hosts      -nobrowse,hidefromfinder,nosuid
/home           auto_home   -nobrowse,hidefromfinder
/Network/Servers    -fstab
/-          -static
/-          auto_nfs    -nobrowse,nosuid
Run Code Online (Sandbox Code Playgroud)

/etc/auto_nfs (这都是一行)

/Volumes/my_mount    -fstype=nfs,noowners,nolockd,noresvport,hard,bg,intr,rw,tcp,nfc nfs://192.168.1.1:/exports/my_share
    
Run Code Online (Sandbox Code Playgroud)

确保你:

sudo chmod 644 /etc/auto_nfs
Run Code Online (Sandbox Code Playgroud)

否则,自动安装程序将无法读取配置并失败并 ... parse_entry: getmapent for map failed...出现错误/var/log/messages

尽管它“应该”,但这将不再起作用!

$ sudo automount -cv
...
automount: /Volumes/my_mount: mountpoint unavailable
Run Code Online (Sandbox Code Playgroud)

请注意,如果您使用 手动创建挂载点mkdir,它将挂载。但是,重新启动后,OS X 会删除挂载点,并且自动挂载将失败。

解决办法是什么?

当我弄清楚的时候,这太容易了,我的下巴都惊掉了。基本上,我们是在欺骗 OS X 让它认为我们正在安装在其他地方。

当您谈论几乎任何环境中的路径时,根文件夹是您可以到达的最高路径,无论是C:\(windows) 还是/(*nix)

当您位于此路径时,尝试到达父路径时,via..将使您保持在根路径。

例如:/../../../../仍然只是/

到现在为止,你们中的一些人已经明白了。

TL;DR/解决方案:

更改您的/etc/auto_nfs配置(这都是一行)

/Volumes/my_mount    -fstype=nfs,noowners,nolockd,noresvport,hard,bg,intr,rw,tcp,nfc nfs://192.168.1.1:/exports/my_share
Run Code Online (Sandbox Code Playgroud)

对于 Catalina 之前的版本:To (这都是一行)

/../Volumes/my_mount    -fstype=nfs,noowners,nolockd,noresvport,hard,bg,intr,rw,tcp,nfc nfs://192.168.1.1:/exports/my_share
Run Code Online (Sandbox Code Playgroud)

对于 Catalina 及以上:To (这都是一行)

/System/Volumes/Data/../Data/Volumes/my_mount    -fstype=nfs,noowners,nolockd,noresvport,hard,bg,intr,rw,tcp,nfc nfs://192.168.1.1:/exports/my_share
Run Code Online (Sandbox Code Playgroud)

并重新运行自动安装程序:

$ sudo automount -cv
...
automount: /Volumes/my_mount: mounted
Run Code Online (Sandbox Code Playgroud)

..... 就这样吧!从技术上讲/../Volumes仍然如此/Volumes,但自动安装程序不会那样看事情;)

此配置在重新启动后保留挂载,并自动创建挂载点。

来源github: https: //gist.github.com/L422Y/8697518