我有一个运行 RHEL 5.5 的系统,我正在尝试使用 在服务器上安装 Windows 共享autofs
。(由于启动时网络尚未准备好,我不想使用fstab
。)我可以手动安装共享,但autofs
就是无法安装它们。
以下是我正在处理的文件:
在结束时/etc/auto.master
,我有:
## Mount this test share:
/test /etc/auto.test --timeout=60
在 中/etc/auto.test
,我有:
test -fstype=cifs,username=testuser,domain=domain.com,password=password ://server/test
然后我重新启动该autofs
服务。
但是,这不起作用。 ls
目录不会返回任何结果。我已经按照网络上的所有这些指南操作,但我要么不理解它们,要么它们根本不起作用。
谢谢
答案1
应该已经有一个 /etc/auto.smb,使用它,并将以下行添加到 /etc/auto.master:
/cifs /etc/auto.smb --timeout=60
现在所有 cifs 共享将显示在 /cifs 下:
ls /cifs/<server>
将显示所有可用的共享。您可能希望在 /etc/auto.smb 中放入一些选项,以便使用特定模式进行挂载。我有一个 auto.smb,我在某处找到并修改了它以执行此操作:
#!/bin/bash
# $Id: auto.smb,v 1.3 2005/04/05 13:02:09 raven Exp $
# This file must be executable to work! chmod 755!
key="$1"
credfile="/etc/auto.smb.$key"
opts="-fstype=cifs,file_mode=0644,dir_mode=0755,uid=eng,gid=eng"
smbclientopts=""
for P in /bin /sbin /usr/bin /usr/sbin
do
if [ -x $P/smbclient ]
then
SMBCLIENT=$P/smbclient
break
fi
done
[ -x $SMBCLIENT ] || exit 1
if [ -e "$credfile" ]
then
opts=$opts",credentials=$credfile"
smbclientopts="-A "$credfile
else
smbclientopts="-N"
fi
$SMBCLIENT $smbclientopts -gNL $key 2>/dev/null| awk -v key="$key" -v opts="$opts" -F'|' -- '
BEGIN { ORS=""; first=1 }
/Disk/ {
if (first)
print opts; first=0
dir = $2
loc = $2
# Enclose mount dir and location in quotes
# Double quote "$" in location as it is special
gsub(/\$$/, "\\$", loc);
print " \\\n\t \"/" dir "\"", "\"://" key "/" loc "\""
}
END { if (!first) print "\n"; else exit 1 }
'
这个可以满足你的要求。我自己用过。
答案2
因为我刚刚花了一上午的时间调试同一个问题。让我解释一下上面发生的事情。
自动主机管理工具
## Mount this test share:
/test /etc/auto.test --timeout=60
这意味着我想安装一些东西/test
,详情请阅读/etc/auto.test
/etc/auto.test
test -fstype=cifs,username=testuser,domain=domain.com,password=password ://server/test
这意味着作为 auto.master 中指定的子文件夹,请使用以下信息安装测试。(即安装将是/test/test
正如 slm 正确指出的那样)。
这意味着ls /test/test
将显示的内容//server/test
为了实现 /test -> //server/test 的最初目标,您需要执行以下操作:
自动主机管理工具
## Mount this test share:
/ /etc/auto.test --timeout=60
还有一些其他注意事项。我发现以下安装选项很有用。
rw
- 以读/写方式安装
noserverino
- 删除有关 inode 编号支持的错误消息
credentials=[credential file]
- 这允许您创建一个包含凭据的单独文件。其格式如下:
username=[windows username, domain can be included as well]
password=[windows password]
编辑--2013-06-17 13:28PM GMT-8
评论中的 slm 指出,挂载到文件系统的根目录可能会很危险。评论中的 lsd 提出了一种解决方法,即从文件系统的根目录创建一个符号链接,指向您要挂载的不同位置,并且不会与某些常见位置重叠。例如,如果您希望将 /test 作为挂载点,那么您实际上会将内容挂载到 /net/the_test_mount,然后创建一个指向 /net/the_test_mount 的符号链接 /test
答案3
我刚刚在 CentOS 5.6 机器上执行了此操作,我认为您的问题部分可能出在您的 auto.test 文件上。在当前形式下,您将创建一个 /test 挂载点,然后在其下创建一个单独的测试挂载点,即 /test/test。此外,您可能希望将 --ghost 开关添加到您的 auto.master 行,如下所示:
/test /etc/auto.test --timeout=60 --ghost
即使给定的共享未被主动挂载,--ghost 开关也会创建挂载点的存根。
看看这个CentOS wiki 技巧和窍门页面关于如何安装 SMB/CIFS 共享。
安装提示
- Windows 共享 = \mysmb\share1
- Unix 目录 = /test/dir1
想法#1
# /etc/auto.master
/test /etc/auto.test --timeout=600 --ghost
# /etc/auto.test
dir1 -fstype=cifs,rw,noperm,netbiosname=${HOST},credentials=/etc/creds.txt ://mysmb/test/dir1
dir2 -fstype=cifs,rw,noperm,netbiosname=${HOST},credentials=/etc/creds.txt ://mysmb/test/dir2
想法 #2
# /etc/auto.master
/test /etc/auto.test --timeout=600 --ghost
# /etc/auto.test
* -fstype=cifs,rw,noperm,netbiosname=${HOST},credentials=/etc/creds.txt ://mysmb/test/&
答案4
如果您使用 cifs,建议也使用_netdev
参数。
_netdev
这是因为文件系统驻留在需要网络访问的设备上,这用于防止系统尝试挂载这些文件系统,直到主机系统上启用网络。