autofs用户指南

autofs用户指南 (by hanlray(at)gmail.com)

autofs能自动mount你的各种文件系统,包括cdrom、samba、nfs等,它在你以任意方式访问该文件系统时自动mount,然后当一段时间没有使用的时候自动umount,所以对那种可能变化的文件系统如cdrom、usb和samba特别有用。

autofs的主配置文件是auto.master,格式类似:

 /var/autofs/misc /etc/autofs/auto.misc  /var/smb /etc/autofs/auto.smb 
前面是mount point,后面是其对应的map文件,map文件可以是一个文本文件,格式为

key [-options] location

如:
 removable -fstype=vfat :/dev/hdd  cd -fstype=iso9660,ro :/dev/hdc 
key可被认为是mount point下的子目录,location指定的要被mount的文件系统将在/<mount point>/<key>下可访问,options是mount使用的option。location可以指定多项,如:

/share1://host/share1 /share2://host/share2

冒号前的路径可以看作时/mount point/key下的子目录,冒号后面是要mount的文件系统;这样可以用相同的mount参数mount多个文件系统,对samba很有用。

当以任意方式访问形如/var/smb/<key>[/<path>]的路径时,autofs从map文件找到对应<key>的那一项,按照指定的参数用automount进行mount,然后就可以访问该文件系统了。

map文件还可以是一个可执行文件,这时autofs将把<key>作为第一个参数执行该文件,期望得到形如[-options] location的输出,然后用输出的内容mount。

一般autofs package会带一个auto.smb文件,是一个可执行的map文件,只要在auto.master里使之对应到一个mount point即可;不过该目前map文件还不是很完善:

  • 不能指定username/password,这对需要认证的服务器就无法访问
  • mount后不能供所有用户访问

     

可以修改为:

key="$1"  credfile="/etc/auto.smb.$key" mountopts="-fstype=smbfs,file_mode=0644,dir_mode=0755,uid=user,gid=users,credentials=$credfile"  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 $SMBCLIENT -gNL $key 2>/dev/null| awk -v key="$key" -v opts="$mountopts" -F'|' -- '         BEGIN   { ORS=""; first=1 }         /Disk/  { if (first) { print opts; first=0 }; print " ///n/t /" $2, "://" key "/" $2 }         END     { if (!first) print "/n"; else exit 1 }         '  
auto.smb的主要原理就是用smbclient -L列出机器名(通过key传入)上的service,然后用awk分析,输出location信息供mount。这里只是修改了mount option使普通用户也可以访问,并且可以通过/etc/auto.smb.<host>为要访问的host指定username/password。 这样,要用samba访问一台机器foo,只要在/etc目录下新建一个文件auto.smb.foo,写入:
username=guest password=guest 
不过要记住用chmod 600 auto.smb.foo修改file mode使之只能被root读写。

 

auto.smb利用smbclient输出到标准输出的内容来得到目标机器上的共享名,因此依赖smbclient的输出格式,如果是下面的格式,上面的script就无能为力了:

Disk|E$|默认共享 IPC|IPC$|远程 IPC Disk|D$|默认共享 
我把上面script的最后一句修改为:
$SMBCLIENT -gNL $key 2>/dev/null /     | awk -v key="$key" -v opts="$mountopts" -v RS="|" -- ' 	BEGIN { ORS=""; first=1 } 	/Disk/ { P=1 } 	{ if (0==P--) { 	    if (first) { print opts; first=0 }; 	    gsub(/ /, "// ", $0); 	    sub(//$/, "//___FCKpd___5quot;, $0); 	    print " ///n/t /" $0, "://" key "/" $0     	  }   	} 	END { if (!first) print "/n"; else exit 1 }      '  
值得注意的是,系统必须支持-fstype指定的文件系统,对smbfs/cifs,可能需要另行安装。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值