两天以来我在使用 autofs 时遇到了麻烦。我有一台 Solaris 11 服务器。我使用以下命令共享文件夹 /export/home:
共享 -o rw -d “Freigabe von /export/home” /export/home
我的客户端是 Fedora 17。在 Fedora 上,我创建了文件夹 /ahome,其中所有主文件夹都应使用 autofs 挂载。我给了 /ahome 权限 777。
之后我配置了 /etc/auto.master 并添加
/ahome auto.homes
比我创建文件 /etc/auto.homes
read1 192.168.0.3:/export/home/read1
read2 192.168.0.3:/export/home/read2
之后我重新启动 autofs
systemctl restart autofs.service
两个用户(read1 和 read2)在两个系统上都存在,具有相同的 UID 和 GID。但是当我 cd 到 /ahome/read1 并在 Fedora 上执行 ls 时,出现以下错误。
ls: cannot open directory .: Permission denied
在 /var/log/messages 中
Mar 30 23:43:34 fe-19 pulseaudio[1474]: [alsa-sink] alsa-sink.c: We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() returned 0 or another value < min_avail.
Mar 30 23:43:49 fe-19 dbus-daemon[582]: ** Message: No devices in use, exit
Mar 30 23:45:31 fe-19 systemd[1]: Cannot add dependency job for unit mdmonitor-takeover.service, ignoring: Unit mdmonitor-takeover.service failed to load: No such file or directory. See system logs and 'systemctl status mdmonitor-takeover.service' for details.
Mar 30 23:45:32 fe-19 automount[1100]: umount_autofs_indirect: ask umount returned busy /ahome
Mar 30 23:47:49 fe-19 dbus-daemon[582]: (packagekitd:1508): GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed
Mar 30 23:55:03 fe-19 systemd[1]: Cannot add dependency job for unit mdmonitor-takeover.service, ignoring: Unit mdmonitor-takeover.service failed to load: No such file or directory. See system logs and 'systemctl status mdmonitor-takeover.service' for details.
Mar 30 23:55:03 fe-19 automount[1933]: umount_autofs_indirect: ask umount returned busy /ahome
请问,有人可以帮助我吗?我开始讨厌 autofs
答案1
Solaris 基本上假设客户端和服务器对于每个用户都具有相同的 UID/GID。可能发生的情况是 Solaris 服务器上不存在您的“read1”和“read2”用户,因此 NFS 请求以 NFS 匿名用户身份发生。有两种方法可以修复它。
在 Linux 主机上查找 read1 和 read2 用户的数字 UID,例如,如果 read1 是 UID 101,read2 是 UID 102,您可以:
您可以在 Solaris 服务器上通过以下方式将 /export/home/read1 和 /export/home/read2 用户 chown 到其各自的 UID:
chown -R 101 /export/home/read1
chown -R 102 /export/home/read2
或者,您可以将 NFS 匿名用户设置为每个用户的 UID,并单独共享每个目录。
share -o rw -o anon=101 -d „Freigabe von /export/home“ /export/home/read1
share -o rw -o anon=102 -d „Freigabe von /export/home“ /export/home/read2
但是,如果您在 Solaris 11 上使用 ZFS(您可能就是这样),则可以直接在 ZFS 中共享这些内容:
适合所有人的单一共享
zfs set share=name=homedirs,path=/export/home,prot=nfs,sec=sys,rw rpool/export/home
个人股
zfs set share=name=read1-homedir,path=/export/home/read1,prot=nfs,sec=sys,rw rpool/export/home/read1
zfs set share=name=read2-homedir,path=/export/home/read2,prot=nfs,sec=sys,rw rpool/export/home/read2
这样做会将 NFS 共享保存在 zpool 的元数据中,并且 zfs 将在安装池时随时共享这些共享。也许在 rpool 上并不完全有用,但是您有由外部磁盘制成的池,它可以很方便,特别是当您需要将磁盘移动到新主机时。
答案2
假设使用 NFS v3,/export/home/read1 必须属于 read1,/export/home/read2 必须属于 read2。
如果您使用 NFSv4,则需要额外配置才能在用户 ID 之间进行正确映射。