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,可能需要另行安装。

 

### AutoFS 自动挂载服务配置 #### 配置基础环境 为了使 `autofs` 正常工作,需确认已安装该软件包。通常情况下,在大多数 Linux 发行版中可通过包管理器完成此操作。 对于基于 Red Hat 的系统: ```bash yum install autofs ``` 对于 Debian 或 Ubuntu 系统,则应使用 apt-get 安装工具来获取并设置 `autafs`[^1]。 #### 编辑主配置文件 `/etc/auto.master` 这是定义所有自动装载点的主要位置。每条记录指定了一个或多个子映射的位置以及它们对应的路径。例如: ```bash /misc /etc/auto.misc /net -hosts ``` 上述命令表示将读取位于 `/etc/auto.misc` 文件中的额外映射信息用于 `/misc` 路径下的资源;而 `-hosts` 则意味着会利用网络上的主机名作为键去查找相应的 NFS 导出目录。 #### 创建特定于需求的地图文件 假设要创建名为 `auto.mydata` 的新地图文件,其中包含指向远程服务器上共享的数据集链接。编辑后的文件可能如下所示: ```bash /data1 server:/exported/path/to/data1 /data2 server:/another/exported/path/ ``` 这里每一项都代表了一个可由客户端请求访问的具体目标地址。 #### 更新 master map 并重启服务 当完成了对自定义地图文件的编写之后,记得将其加入到 `/etc/auto.master` 中,并通过下面这条指令让更改生效: ```bash service autofs restart ``` 这一步骤确保了最新的配置能够立即应用至整个系统当中。 --- ### 故障排查指南 如果遇到无法正常工作的状况,可以按照以下方法尝试解决问题: - **日志审查**: 查看 `/var/log/messages` 或者专门的日志文件(取决于发行版本),寻找有关错误的信息提示。 - **验证权限**: 确认用户具有足够的权利执行必要的动作,比如读写指定的目标文件夹等。 - **测试连接性**: 对于涉及网络资源的情况,请先单独检验能否顺利连通远端机器及其所提供的服务接口。 - **简化配置**: 尝试移除复杂的选项设定,回到最简单的状态重新评估问题所在之处。 - **查阅手册页**: 使用 man 命令查看官方文档获得更详细的说明和支持建议,如 `man 5 auto.master` 和 `man 8 automount`.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值