我正在尝试在 Mac OS X 上自动安装 Windows SMB 共享。
我尝试做的第一件事是只将条目放入/etc/fstab
:
$ dgrant$ cat /etc/fstab
//darrengrant@d-grant/share /pc/share smbfs nodev,nosuid
使用 可以正常工作mount -a
。
但我希望每次打开计算机时都能安装驱动器。但当我重新启动计算机时,驱动器没有安装。我检查控制台,看到以下内容:
3/24/11 2:09:32 PM com.apple.launchd[1] *** launchd[1] has started up. ***
3/24/11 2:09:48 PM com.apple.autofsd[50] automount: Mount for //darrengrant@d-grant/share has no path for the directory to mount
我可以简单地使用 来在命令行上重现此错误消息sudo automount
。我认为launchd
调用automountd
,它将所有内容都挂载在 中/etc/fstab
。该文件/etc/auto_master
包含对 fstab 的一两个引用,因此这似乎是合理的。
我在实际源代码中发现了“没有要挂载的目录路径”错误automountd
,似乎原因是fstab
机器名称和挂载目录名称之间的行中缺少冒号。我通过添加冒号来消除错误,如下fstab
所示:
//darrengrant@mypc:/share /pc/share smbfs nodev,nosuid
但重新启动后,automount
无法正常工作,并出现一组完全不同的错误:
$ sudo automount -v
automount: /net updated
automount: /home updated
[ pauses here for a couple of seconds ]
automount: /pc/share updated
automount: no unmounts # looks good so far ...
$ mount
....
map -static on /pc/share (autofs, automounted, nobrowse) # OK, a little different..
$ ls /pc/share
ls: share: Host is down # fail.
这真的没什么意义……为什么 fstab 不需要冒号而 automount 需要?“主机已关闭”部分到底是什么意思?也许是网络和本地驱动器之间有些混淆?
答案1
这里有一点令人困惑。 mount
读取/etc/fstab
,并用于系统启动时应挂载的东西。
automount
读作/etc/auto_master
,并且只在目录使用时挂载东西,而不是在使用之前。它通常用于 NFS 主目录之类的东西,只有当用户真正需要它们时才应该挂载它们。您也可以这样做,但不是/etc/fstab
在哪里做。
如果您只想在机器启动时安装 smb 共享,那么您所需要的就是 /etc/fstab 中已有的内容,同时还需要注意一些陷阱。
- 使用该
soft
选项 - 否则,如果您没有联网,安装将挂起并阻止您的系统正确启动 - 看起来您是在没有凭据的情况下进行连接的。如果您确实需要在 fstab 条目中使用凭据,请小心,因为 /etc/fstab 通常可由系统上的任何人读取,因此您用于 smb 系统的用户名和密码将会暴露。可以通过编辑
~/Library/Preferences/nsmb.conf
答案2
malcolmpdx。您说的在理论上是正确的,对于所有以前的 OS-X 版本,在实践中也是如此。不幸的是,Catalina 似乎已停止处理 fstab。我希望得到原因解释,或者更好的解决方案。
我已经管理各种不同风格的 unix 机器 30 多年了,这种变化至少可以说令人失望。就我而言,我试图在启动时安装一堆 NFS 共享,因为我需要它们被后台任务访问 - 对于来自 Sun 世界的任何人来说,这是一种非常常见的配置。
我们将非常感谢您的任何指导。