我按照本页上的指南通过 autofs 获取 samba 共享:
http://www.howtoforge.com/accessing_windows_or_samba_shares_using_autofs
服务器和配置
我的 Samba 服务器(远程)位于名为“mattserver”(这是其 Windows 服务器名称)的服务器上。它有四个共享,称为“backup”、“matt”、“print”和“web”。 Samba 客户端(本地)名为“bird”。
我的设置与上述教程中的示例非常相似,但有一些差异:
/cifs /etc/auto.cifs --ghost
而不是/cifs /etc/auto.cifs --timeout=60
在/etc/auto.master
uid=1000,gid=1000
而不是uid=user,gid=users
在/etc/auto.cifs
这是我的/etc/auto.master
:
matt@bird:~ $ cat /etc/auto.master
/cifs /etc/auto.cifs --ghost
这是我的/etc/auto.cifs
:
matt@bird:~ $ cat /etc/auto.cifs
#!/bin/bash
key="$1"
credfile="/etc/auto.smb.$key"
mountopts="-fstype=cifs,file_mode=0644,dir_mode=0755,uid=1000,gid=1000"
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
mountopts=$mountopts",credentials=$credfile"
smbclientopts="-A "$credfile
else
smbclientopts="-N"
fi
$SMBCLIENT $smbclientopts -gL $key 2>/dev/null \
| awk -v key="$key" -v opts="$mountopts" -F'|' -- '
BEGIN { ORS=""; first=1 }
/Disk/ { if (first) { print opts; first=0 };
gsub(/ /, "\\ ", $2);
sub(/\$/, "\\$", $2);
print " \\\n\t /" $2, "://" key "/" $2 }
END { if (!first) print "\n"; else exit 1 }
'
这是我直接打电话时得到的结果/etc/auto.cifs
:
matt@bird:~ $ sudo bash /etc/auto.cifs mattserver
-fstype=cifs,file_mode=0644,dir_mode=0755,uid=1000,gid=1000,credentials=/etc/auto.smb.mattserver \
/print\$ ://mattserver/print\$ \
/matt ://mattserver/matt \
/web ://mattserver/web \
/backup ://mattserver/backup
到目前为止,我认为一切都很好。
测试
当我尝试访问该/cifs
目录时,我应该得到一个名为 的目录mattserver
,对吗?我确实把--ghost
选项放在那里了。但我什么也没得到:
matt@bird:~ $ ls -l /cifs
total 0
当我访问服务器目录时,我得到了共享列表,但它搞砸了:
matt@bird:~ $ ls -l /cifs/mattserver
ls: cannot access /cifs/mattserver/web: No such file or directory
ls: cannot access /cifs/mattserver/print$: No such file or directory
ls: cannot access /cifs/mattserver/matt: No such file or directory
ls: cannot access /cifs/mattserver/backup: No such file or directory
total 0
d????????? ? ? ? ? ? backup
d????????? ? ? ? ? ? matt
d????????? ? ? ? ? ? print$
d????????? ? ? ? ? ? web
当我尝试访问实际共享时,我什么也得不到:
matt@bird:~ $ ls -l /cifs/mattserver/web
ls: cannot access /cifs/mattserver/web: No such file or directory
作为测试,我向/etc/hosts
for添加了一行mattserver
。
仍然没有重影:
matt@bird:~ $ ls -l /cifs
total 0
当我再次尝试访问服务器目录时,我不再获得共享列表:
matt@bird:~ $ ls -l /cifs/mattserver
ls: cannot access /cifs/mattserver: No such file or directory
但是当我访问实际共享时,我获得完全访问权限:
matt@bird:~ $ ls -l /cifs/mattserver/web
[correct listing of files -- removed]
我应该能够依赖广播,并且不需要在 /etc/hosts 中包含任何内容(对吗?)。广播正在运行:
matt@bird:~ $ nmblookup mattserver
querying mattserver on 192.168.0.255
192.168.0.2 mattserver<00>
问题
- 当我尝试通过调用访问服务器列表时
ls -l /cifs
,我什么也没得到。 - 当我尝试通过调用 访问共享列表时
ls -l /cifs/mattserver
,我得到了一个搞砸的列表(见上文)。 - 如果不添加服务器名称条目,我将无法安装共享
/etc/hosts
。我不想依赖于/etc/hosts
.
我在这里有什么选择?