|
楼主 |
发表于 2003-1-10 19:21:02
|
显示全部楼层
autofs自学教程
几点说明
什么是autofs?autofs让你能够在UNIX环境下方便地使用软驱和光驱。在微软的系统里,你如果想用软驱,直接转到“a:”就行了。在Linux或Unix世界里,我们也试图将这种便捷的方法移植过来,这样你就可以方便地使用一个自动装载程序把某个设备(像软驱、光驱)与计算机的一个目录连接起来。
那么在通常情况下,没有这种自动装载程序,你想在UNIX环境下使用软驱或其他什么设备时,该如何做呢?这时,你必须用“mount”和“umount”命令手工把一个设备与一个目录连接起来。例如要把软驱和“/mnt/floppy”目录连接起来,比如说,可用
mount /dev/fd0 /mnt/floppy
如果你需要指定软驱的格式,可以使用如下命令
mount -t msdos /dev/fd0 /mnt/floppy ## 用于按msdos方式格式化的软盘
mount -t ext2 /dev/fd0 /mnt/floppy ## 用于按“Linux”方式格式化的软盘
此外,你还需要确保“/mnt/floppy”这个目录已经存在在你机器的硬盘上。(创建这个目录的命令是
mkdir -p /mnt/floppy)
而下面这个命令可以卸载或释放所使用的软驱:
umount /dev/fd0
另外,更麻烦的是,如果你使用X桌面环境KDE和GNOME,你还需要知道其使用软驱的独特方法。而且还有个问题,如果你是通过telnet或ssh与你的计算机连接,那么你就无法使用这些特性。可以想见,这是多么讨厌的事情。
如果使用了autofs,则任何程序或用户在进入一个指定给某种设备(像软驱)目录时就可以将该设备与这个目录连接起来。这是发生在系统层的操作而不是在GUI层。它能做的不仅仅是自动装载软驱和光驱,autofs还可以用来支持nfs站点(及其他东西),把它与一个目录连接起来。
如果你想对上面讲到的东西进行更深入的研究,你可在你的计算机上试试这些网址(URL)或命令:
man automount
man autofs
man /usr/man/man5/auto.master.5
more /usr/doc/autofs-3.1.3/README
Automount howto
注:你还应该考虑使用autofs可能带来的安全问题。
安装autofs
如何安装autofs呢?尽管我讨厌专为特定版本的Linux作演示(我变得非常喜欢Debian),这里的演示是针对RedHat 6.0的。
这里假设“/dev/cdrom”是你的光驱,“dev/fd0”是你的软驱。并且假设你会备份“/etc/auto.master”这个文件。你需要使用下面这个脚本并重新启动autofs。以“root”身份登录,转到你的起始目录,把下面两横线之间的东西复制到一个叫“CreateAutofs.script”的文件中,并用这个命令执行这个脚本:
source CreateAutofs.script
mkdir -p /root/Drives
cd /root/Drives
### Let us make sure the two directories exist, ignore errors
mkdir -p /mnt/Drives/floppy
mkdir /mnt/Drives/cdrom
### Let us backup the auto files in case they haven't
mv -f /etc/auto.master /etc/auto.master_old
mv -f /etc/auto.floppy /etc/auto.floppy_old
mv -f /etc/auto.cdrom /etc/auto.cdrom_old
### Create the files for autofs
echo "/mnt/Drives/cdrom /etc/auto.cdrom --timeout 10" > /etc/auto.master
echo "/mnt/Drives/floppy /etc/auto.floppy --timeout 3" >> /etc/auto.master
echo "floppy -fstype=auto :/dev/fd0" > /etc/auto.floppy
echo "cdrom -fstype=iso9660,ro :/dev/cdrom" > /etc/auto.cdrom
### Create the links to the floppy drive and cdrom drive
ln -s /mnt/Drives/floppy/floppy a:
ln -s /mnt/Drives/floppy/floppy floppy
ln -s /mnt/Drives/cdrom/cdrom d:
ln -s /mnt/Drives/cdrom/cdrom cdrom
### Lets retstart autofs
/etc/rc.d/init.d/autofs stop
/etc/rc.d/init.d/autofs start
### If it didn't work, you might have to reboot
cd /root/Drives
解释一下这个脚本
现在把一张以MSDOS方式格式化的软盘和一张光驱插入,执行如下命令看盘上有什么东西:
ls /root/Drives/a:
ls /root/Drives/d:
但愿你不会看到什么出错信息。
我自己的“/etc/auto.floppy”文件是这样的:
floppy -fstype=auto,defaults,user,suid :/dev/fd0
而我的“/etc/auto.cdrom”文件是这样的:
cdrom -fstype=iso9660,user,suid :/dev/cdrom
我之所以在脚本中使用了比较保守的值,是因为这些值使用不当可能会引起系统故障。但是既然只有我一个人使用我的计算机,我想还是要确保我的个人帐号有对软驱和光驱的完全访问权限。以前的“-fstype=auto”对大多数msdos磁盘来说并不是很适合,但在我把超时增加到3秒后,似乎效果还不错。我把光驱的超时设为10秒,因为设为1秒时工作的不好,我猜想这是因为光驱还没有足够的时间“预热”就被关闭了。你可以测试一下你的光驱的超时值应该是多少。
“/etc/rc.d/init.d/autofs”脚本在执行时首先查看“/etc/auto.master”。这个文件每行有三项内容。它包含所有装载设备所联接的目录。这个值的旁边是含有配置你想装载的设备的配置文件名称。我们把这些文件称为“补充”文件。在这个值之后是你想在设备经过多少秒处于不活动状态后返回超时信息。如果设备不活动时间达到了超时设置的时间,则系统将释放或卸载该设备。
补充文件时可有不只一个条目的,不过我不需要那样做。继续看下面的解释你就明白了。你可以给补充文件任意命令,每个条目也是有三个值。第一个值是“虚拟”目录,后面我会再解释。第二个值包含装载选项。第三个值是设备名(像“/dev/fd0”,代表软驱),“虚拟”目录与它相连。
“虚拟”目录包含在“/etc/auto.master”中指定的目录中。人们访问这个“虚拟”目录时,他们将被转到你指定的设备。例如上面的脚本将产生一个叫“a:”的连接,如果你用命令“ls a:”来查看目录,你将看到软驱中文件的清单。相似的命令是“ls /mnt/Drives/floppy/floppy”,但如果你用命令“ls /mnt/Drives/floppy”将什么都看不到。这是因为“/mnt/Drives/floppy/floppy” 不是作为一个文件或目录而存在的,系统只在你提出请求要访问“/mnt/Drives/floppy/floppy”时,才会安排你访问软驱。
现在来解释我为什么不把软驱和光驱合并到同一个补充文件。“/etc/auto.master”文件中的每个指定项目都有自己的“自动装载”程序来运行它。如果你有几个设备运行在同一个自动装载程序,要是其中一个失败了,可能会引起其他的也无法正常工作。这就是我为什么想要每个设备都运行在它自己的自动装载程序上,这意味着“/etc/auto.master”文件中的每一条目与一个补充文件、一个设备一一对应。
另外要注意,我使用链接指向“虚拟”目录“。如果谁试图手工使用这些“虚拟”目录就会被搞糊涂。所谓“虚拟”目录,基本上是直到你试图使用这些目录时才存在的目录。我喜欢使用联接去访问这些“虚拟”目录,因为这样用户就会一直看到并可以使用指向“虚拟”目录的链接。他们感到满意的是链接一直就在那儿,这与“虚拟”目录不一样,因为虚拟目录只有你需要时才会出现。
给新用户安装
怎么给新用户安装呢?首先你应明白,你在 autofs 配置文件中给出的装载选项极大的决定了一个用户能使用软驱、光驱或其他类型的设备的程度。你也应该意识到使用 autofs可能带来的安全漏洞。你需要按如下操作:
mkdir -p /etc/skel/Drives
ln -s /mnt/Drives/floppy/floppy /etc/skel/Drives/floppy ## link to floppy
ln -s /mnt/Drives/floppy/floppy /etc/skel/Drives/a:
ln -s /mnt/Drives/cdrom/cdrom /etc/skel/Drives/cdrom ## link to cdrom
ln -s /mnt/Drives/cdrom/cdrom /etc/skel/Drives/d:
如何给名叫“frank”的用户安装了?
假设Frank的起始目录是“/home/frank”,
mkdir -p /home/frank/Drives ## make a path for frank
chown frank /home/frank/Drives ## Let frank own the directory
ln -s /mnt/Drives/floppy/floppy /home/frank/Drives/a: ## link to floppy
ln -s /mnt/Drives/floppy/floppy /home/frank/Drives/floppy
ln -s /mnt/Drives/cdrom/cdrom /home/frank/Drives/d: ## link to cdrom
ln -s /mnt/Drives/cdrom/cdrom /home/frank/Drives/cdrom
chown frank /home/frank/Drives/* ### Let frank own the contents of directory
注意,如果是使用下面的命令来给新用户安装autofs就真的很危险:
### DO NOT DO THIS UNLESS YOU LIKE RISK
mkdir -p /home/frank/Drives
if [ -d /etc/skel/Drives ]; then
tar -C /etc/skel -c Drives | tar -C /home/frank -xv Drives
chown -R frank /home/frank/Drives
else
echo "Dude, like try to make a /etc/skel/Drives directory first."
fi
安装zip驱动器或其他资源
好了,现在来点更时髦的东西。 我将用另一个配置文件来自动装载zip驱动器和一个nfs站点。首先,我假设zip驱动器是连接到计算机上主IDE控制器上的从动设备。 实际上我曾尝试通过nfs来连接到这个英文站点,不过没有成功。在本地的几台计算机上试验,还行。
echo "/mnt/Drives/zip /etc/auto.zip --timeout 10 --timeout 5" >> /etc/auto.master
echo "kernel -ro,soft,intr ftp.kernel.org:/pub/linux" > /etc/auto.zip
echo "zip1 -fstype=auto,rw :/dev/hdb1 " >> /etc/auto.zip
echo "zip2 -fstype=auto,rw :/dev/hdb2 " >> /etc/auto.zip
echo "zip3 -fstype=auto,rw :/dev/hdb3 " >> /etc/auto.zip
echo "zip4 -fstype=auto,rw :/dev/hdb4 " >> /etc/auto.zip
ln -s /mnt/Drives/zip/kernel /etc/skel/Drives/kernel
ln -s /mnt/Drives/zip/zip4 /etc/skel/Drives/zip ## link to cdrom
Mark在The Computer Underground工作,任JALG。在业余时间他做一些志愿工作。 Mark积极参与 位于俄亥俄州哥伦布市 COLUG 的活动。 |
|