配置/etc/exports文件
2012-04-18 10:44:07| 分类: Linux 字号
一、搭建NFS服务


# /etc/init.d/nfs-kernel-server stop
# /etc/init.d/nfs-kernel-server restart


创建或修改/etc/exports文件这个文件的内容非常简单,每一行由抛出路径,客户名列表以及每个客户名后紧跟的访问选项构成:[共享的目录] [主机名或IP(参数,参数)]其中参数是可选的,当不指定参数时,nfs将使用默认选项。默认的共享选项是 sync,ro,root_squash,no_delay。当主机名或IP地址为空时,则代表共享给任意客户机提供服务。当将同一目录共享给多个客户机,但对每个客户机提供的权限不同时,可以这样:[共享的目录] [主机名1或IP1(参数1,参数2)] [主机名2或IP2(参数3,参数4)] 下面是一些NFS共享的常用参数:ro 只读访问 rw 读写访问 sync 所有数据在请求时写入共享 async NFS在写入数据前可以相应请求 secure NFS通过1024以下的安全TCP/IP端口发送 insecure NFS通过1024以上的端口发送 wdelay 如果多个用户要写入NFS目录,则归组写入(默认) no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。 hide 在NFS共享目录中不共享其子目录 no_hide 共享NFS目录的子目录 subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认) no_subtree_check 和上面相对,不检查父目录权限 all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。 no_all_squash 保留共享文件的UID和GID(默认) root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认) no_root_squas root用户具有根目录的完全管理访问权限 anonuid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的UID anongid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的GID



重启NFS服务# / etc / init.d / nfs - kernel - server restart
在客户机上查看NFS的资源共享情况# showmount - e 192.168 . 102.47
Export list for 192.168 . 102.47 : / home / share (everyone)
使用mount命令即可挂栽共享资源在客户机 192.168.102.15 上加载共享资源二、搭建tftp服务器
1、安装服务器端#aptitude install tftpd
安装完后,/etc/inetd.conf 档会有一行是tftpd的invoke 命令。最后一个argument是tftp 的export 目录。debian default是 /boot,一般是用/tftpboot,所以要修改一下tftp dgram udp wait nobody / usr / sbin / tcpd / usr / sbin / in .tftpd / tftpboot
修改后要reoad一下inetd,即执行# / etc / init.d / inetd reload
客户端安装#aptitude install tftp
测试将一些file放到 /tftpboot测试传送$tftp 10.3 . 7 .xxx
tftp > get xxxxxxx
tftp 是一个很简单的file transfer protocol,他使用udp,并且没有很多handshaking,authorization的机制,Client 所需要的code比较检单,所以常常用在许多resource limited 的embedded system 中,或是用在开机的时候。
因为tftp 不是一个常常会使用的服务,所以以standalone dameon的方式执行会一直站住内存,所以建议使用inetd的方式来安装。
# mount 192.168 . 102.47 : / home / share / mnt
# cd / mnt
# echo ' 12345 ' > 123
即可发现对服务器共享目录可写# umount /mnt在客户机 192.168.102.61 上加载共享资源# mount 192.168.102.47:/home/share /mnt # cd /mnt # ls 123 # touch 321 touch: cannot touch `321': Permission denied # echo '123455' >123 -bash: 123: Permission denied即可发现对服务器共享目录只有读取权限,这与我们在服务器端的权限设置是相符的。是不是我们每次修改了配置文件都需要重启nfs服务呢? 这个时候我们就可以用exportfs命令重新扫描/etc/exports文件,来使改动立刻生效。比如:# exportfs -au 卸载所有共享目录 # exportfs -rv 重新共享所有目录并输出详细信息exportfs 命令有软件包 nfs-kernel-server 提供,详细的 exportfs 命令说明请查看:
man exportfs
7.2.2 配置/etc/exports文件
用户可以把需要共享的文件系统直接编辑到/etc/exports文件中,这样当NFS服务器重新启动时系统就会自动读取/etc/exports 文件,从而告诉内核要输出的文件系统和相关的存取权限。在下面的例子中显示了/etc/exports文件中几个条目项的内容,被挂载在/pub目录下的 文件系统具有只读访问权限,所有的计算机在访问文件系统的时候不必经过安全检查。编辑/etc/exports文件:
# vi /etc/exports /usr/sys/src -maproot=daemon host2 /usr/ports -ro -network 192.168.1.0 |
从上面这个例子中可以看出exports文件的格式,首先是定义要共享的文件目录。必须使用绝对路径,而不能使用符号链接。然后设置对这个目录进行 访问限制的参数,用于保证安全性。在第1行设置中,将/usr/sys/src目录共享出去。但限制客户机上的root用户等价于本机上的daemon用 户,以避免客户机上的root用户拥有这个服务器上的root权限进行非法操作。此后的host2参数是主机名,从而限制只有host2才能共享这个 /usr/sys/src目录;第2行设置共享/usr/ports目录,但限制为只允许读取,并且也只有网络上的192.168.1.0计算机才能访问 这个共享目录。
(1)rw:可读写权限。
(2)ro:只读权限。
(3)no_root_squash:当登录NFS主机使用共享目录的使用者是root时,其权限将被转换成为匿名使用者,通常它的UID与GID都会变成nobody身份。
(4)root_squash;如果登录NFS主机使用共享目录的使用者是root,那么对于这个共享的目录来说,它具有root的权限。
(5)all_squash:忽略登录NFS使用者的身份,其身份都会被转换为匿名使用者,通常即nobody。
(6)anonuid:通常为nobody,也可以自行设定这个UID的值,UID必须存在于/etc/passwd中。
(7)anongid:同anonuid,但是变为Group ID。
(8)sync:同步写入资料到内存与硬盘中。
(9)async:资料会先暂存于内存中,而非直接写入硬盘。
主机可以使用以下格式。
(1)单个机器:一个全限定域名(能够被服务器解析)、主机名(能够被服务器解析)或IP地址。
(2)使用通配符来指定的机器系列,使用 * 或 ?字符来指定一个字符串匹配。IP地址中不使用通配符。如果反向DNS查询失败,它们可能会碰巧有用。在完整域名中指定通配符时,点(.)不包括在通配符 中。例如,*.example.com包括one.example.com,但不包括one.two.example.com.。
(3)IP网络:使用a.b.c.d/z,a.b.c.d是网络,z是子网掩码中的位数(如192.168.0.0/24)。另一种可以接受的格式 是a.b.c.d/netmask,a.b.c.d是网络,netmask是子网掩码(如192.168.70.8/255.255.255.0)。