说明:
在Linux系统中提供了两种设置文件共享的方法:NFS和Samba。利用NFS服务实现的文件共享只能用于Linux系统之间,而利用Samba服务则可以实现Windows和Linux系统之间的互访。NFS(网络文件系统),采用客户机/服务器工作模式,在NFS服务器上将某个目录设置为共享目录,然后在客户端可以将这个目录挂载到本地使用
一、启动NFS服务
[root@justin ~]# rpm -qa|grep nfs nfs-utils-lib-1.1.5-4.el6.i686 nfs4-acl-tools-0.3.3-6.el6.i686 nfs-utils-1.2.3-26.el6.i686 #CentOS系统默认安装了nfs,未安装使用“yum install nfs-utils”命令安装nfs服务 [root@justin ~]# service nfs status rpc.svcgssd is stopped rpc.mountd is stopped nfsd is stopped rpc.rquotad is stopped [root@justin ~]# service nfs start Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS mountd: [ OK ] Stopping RPC idmapd: [ OK ] Starting RPC idmapd: [ OK ] Starting NFS daemon: [ OK ] [root@justin ~]# chkconfig --level 345 nfs on [root@justin ~]# chkconfig --list|grep nfs nfs 0:off 1:off 2:off 3:on 4:on 5:on 6:off nfslock 0:off 1:off 2:off 3:on 4:on 5:on 6:off [root@justin ~]#
二、配置nfs
NFS服务的配置文件是/etc/exports,可以设置NFS的共享目录、访问权限和允许访问的主机等参数,在默认情况下,这个文件是个空文件,没有配置任何共享目录,这是基于安全性的考虑,即使系统启动NFS服务也不会共享任何资源。
[root@justin ~]# mkdir /nfs ;NFS共享文件夹 [root@justin ~]# touch /nfs/nfs.txt ;NFS共享文件 [root@justin ~]# vim /etc/exports #/nfs 10.15.72.0/24(ro,sync) /nfs 10.15.72.0/255.255.255.0(ro,sync,c,no_subtree_check,anonuid=501,anongid=501) [root@justin ~]# /etc/init.d/nfs restart Shutting down NFS daemon: [ OK ] Shutting down NFS mountd: [ OK ] Shutting down NFS quotas: [ OK ] Shutting down NFS services: [ OK ] Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS mountd: [ OK ] Stopping RPC idmapd: [ OK ] Starting RPC idmapd: [ OK ] Starting NFS daemon: [ OK ] [root@justin ~]#
/nfs 指定要共享的目录
10.15.72.0/24 允许访问共享的网段,如果允许所有客户端访问,可以用通配符“*”
ro 客户端访问共享目录时的权限,ro表示只读,rw表示可读可写
sync 设置NFS服务器同步写磁盘,这样不会轻易丢失数据,建议所有的NFS共享目录都使用该选项
no_subtree_check 不检查目录权限,提高目录读取速率
anonuid anongid 共享目录所有者、组ID
三、测试NFS
在NFS服务端测试共享,命令:showmount 参数: -e 显示指定的NFS服务器上所有输出的共享目录
[root@justin ~]# showmount -e 10.15.72.166 Export list for 10.15.72.166: /nfs 10.15.72.0/255.255.255.0 [root@justin ~]#
四、客户端访问NFS共享
1.关闭服务端的SELINUX
[root@justin ~]# vim /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. #SELINUXTYPE=targeted
2.防火墙中开启相应端口
[root@justin ~]# vim /etc/sysconfig/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT #portmap或者rpcbind(CentOS 6.x)使用:tcp/udp 111 -A INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT #nfs使用:tcp/udp 2049 -A INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 2049 -j ACCEPT #rquotad使用:tcp/udp 875 -A INPUT -m state --state NEW -m tcp -p tcp --dport 875 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 875 -j ACCEPT #mountd使用: TCP/UDP 892 -A INPUT -m state --state NEW -m tcp -p tcp --dport 892 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 892 -j ACCEPT #nlockmgr使用:TCP/32803端口 UDP/32769端口 -A INPUT -m state --state NEW -m tcp -p tcp --dport 32803 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 32769 -j ACCEPT #status使用: TCP/UDP 1001-1004共四个端口 -A INPUT -m state --state NEW -m tcp -p tcp --dport 1001 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 1001 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 1002 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 1002 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 1003 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 1003 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 1004 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 1004 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
3.在客户端查看NFS服务器共享信息
使用showmount查看信息客户端也需要安装NFS服务
[root@justin ~]# showmount -e 10.15.72.166 Export list for 10.15.72.166: /nfs 10.15.72.0/255.255.255.0 [root@justin ~]# mkdir /nfs [root@justin ~]# mount 10.15.72.166:/nfs /nfs [root@justin ~]# cd /nfs && ll total 0 -rw-r--r-- 1 root root 0 Sep 2 14:02 nfs.txt [root@justin nfs]# vim /etc/fstab ;文末添加以下 10.15.72.166:/nfs /nfs nfs defaults 0 0
通过以上挂载后就可以使用NFS共享内容,如果被挂在可以通过autofs服务来访问共享信息
[root@justin ~]# cd /net/ [root@justin net]# ll total 0 [root@justin net]# cd 10.15.72.166 [root@justin 10.15.72.166]# ls nfs [root@justin 10.15.72.166]# ll nfs total 0 -rw-r--r-- 1 root root 0 Sep 2 14:02 nfs.txt
autofs 自动挂载服务,
如果它检测到用户正试图访问一个尚未挂载的文件系统,它就会自动检测该文件系统,如果存在,那么autofs会自动将其挂载。另一方面,如果它检测到某个已挂载的文件系统在一段时间内没有被使用(默认是5分钟),那么autofs会自动将其卸载。所以autofs特别适合于挂载使用光盘、优盘这类移动存储设备,以及像NFS这类共享目录。
[root@justin 10.15.72.166]# rpm -qa|grep autofs ;yum install autofs autofs-5.0.5-54.el6.i686 [root@justin 10.15.72.166]# /etc/init.d/autofs status automount (pid 1650) is running... [root@justin 10.15.72.166]# vim /etc/auto.master /misc /etc/auto.misc #自动挂载在/etc/auto.misc这个配置文件中具体定义的 /net -hosts #专用于自动挂载远程主机上的NFS共享目录,只要进入该挂载点,执行“cd IP”或“cd 计算机名”,就可以自动挂载远程主机上的NFS共享目录 /server /etc/auto.server #自己添加的,挂载点配置文件的名称都统一为auto,扩展名则应与挂载点名称相同