先说下 linux 下的三大网络文件服务:
NFS:network file servers (主要应用环境:UNIX、LINUX)
SAMBA: (适合LINUX、WINDOWS、或者苹果的系统)
FTP:File Transfer Protocol (同时适合在局域网和网络环境上使用)
如果是在纯UNIX或者LINUX系统的环境下建议使用NFS网络文件系统做网络文件共享,如果是在公司内网的系统就不光光是UNIX&LINUX了还有windiws和其他的系统这个情况下最好使用SAMBA网络文件服务,如果是想提供内网和外网提供文件共享建议使用FTP网络文件共享服务
NFS文件服务
这个服务必须依赖与远程过程调用这个协议所以这个NFS还必须安装一个软件包:portmap。所以要安装2个软件包nfs-utils&protmap 2个软件包
同样首先检查一下这两个软件包是否安装
[root@LinuxServer2 ~]# rpm -qa | grep nfs
nfs-utils-1.0.9-16.el5
nfs-utils-lib-1.0.8-7.2
[root@LinuxServer2 ~]# rpm -qa | grep portmap
portmap-4.0-65.2.2.1
Redhat 默认已经安装了这两个软件包,咱们直接配置就可以
注:不管那个文件系统他们都有一个共同点就是:服务端如何去共享 客户端如何去访问
#nfs 网络文件系统配置文件是在:/etc/exports 直接编辑即可,当我们编辑这个文件的时候就相当于配置这个NFS文件共享的过程
为了更方便咱们做实验首先建立一个文件夹作为共享文件夹:
[root@LinuxServer2 ~]# mkdir /share 建立文件夹,并创建几个文件防止用户访问时看不到文件一位是共享问题
[root@LinuxServer2 /]# cd /share/
[root@LinuxServer2 share]# touch test1.txt
[root@LinuxServer2 share]# touch test2.jpg
检查一下NFS和exportmap 服务是否正在启动,如果没有启动,启动并设置为开机启动
-----------------------------------------------------------------------------------------------------------------------------------
[root@LinuxServer2 share]# service nfs status
rpc.mountd is stopped
nfsd is stopped
rpc.rquotad is stopped
[root@LinuxServer2 share]# service nfs start
Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS daemon: [ OK ]
Starting NFS mountd: [ OK ]
[root@LinuxServer2 share]# chkconfig nfs on
[root@LinuxServer2 share]# chkconfig nfs --list
nfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@LinuxServer2 share]#
———————————————————————————————————————
[root@LinuxServer2 share]# service portmap status
portmap (pid 2430) is running…
[root@LinuxServer2 share]# chkconfig portmap --list
portmap 0:off 1:off 2:off 3:on 4:on 5:on 6:off
[root@LinuxServer2 share]#
--------------------------------------------------------------------------------------------------------------------------------------
OK 测试环境准备好了直接编辑NFS配置文件
咱们做这几个实验
1、允许任何人读取
/share *(ro) -------------->/share 共享的文件夹这个需要输入绝对路径 *代表任何人(ro)read only 只读
直接保存就可以,然后重新启动一下nfs服务
然后在客户端的计算机上首先查看一下:NFS文件服务器是否共享
可以通过命令:
[root@luotianshuai ~]# showmount -e 192.168.1.101
Export list for 192.168.1.101:
/share *
OK 可以看到NFS文件服务器已经共享了一个文件夹/share 并且权限是Everyone
客户端怎么访问呢?挂载外置设备大家应该都会,对就是使用mount这个命令来把/share 这个共享文件夹挂载到客户端即可
首先咱们建立一个挂载点(共享文件夹的挂载点)
[root@luotianshuai tmp]# mkdir share
[root@luotianshuai tmp]# ls
7245b70b mapping-root share
直接挂载即可
[root@luotianshuai tmp]# mount 192.168.1.101:/share /tmp/share/
查看挂载
[root@luotianshuai tmp]# mount
/dev/sda2 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda3 on /home type ext3 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/hdc on /media type iso9660 (ro)
192.168.1.101:/share on /tmp/share type nfs (rw,addr=192.168.1.101)
[root@luotianshuai tmp]#
当我们访问本地的/tmp/share 的时候就是访问网络上的文件
[root@luotianshuai tmp]# cd /tmp/share/
[root@luotianshuai share]# ls
test1.txt test2.jpg
[root@luotianshuai share]#
测试一下,我们复制下文件
[root@luotianshuai share]# cp /tmp/share/test1.txt /
[root@luotianshuai share]# ls /
bin dev home lost+found misc net proc sbin share sys tmp var
boot etc lib media mnt opt root selinux srv test1.txt usr
没有问题,我们尝试把文件复制到/tmp/share 下看看是否可以
anaconda-ks.cfg install.log install.log.syslog test.sh
[root@luotianshuai ~]# cp test.sh /tmp/share/
cp: cannot create regular file `/tmp/share/test.sh': Read-only file system 会提示这个文件是只读的!!!!
[root@luotianshuai ~]#
如何卸载:和卸载外置设备和文件是一样的umount 挂载点即可
2、共享允许写入
为了区分和上一个实验新建立一个文件夹
注意一点:在windows下需要设置共享权限和文件取现所以我们在给客户端访问的时候需要给客户端文件的写入权限!!!!这里windows和linux是一样的
首先更改文件的权限:chmod 777 /sharerw
[root@LinuxServer2 /]# chmod 777 sharerw
drwxrwxrwx 2 root root 4096 Nov 25 12:09 sharerw
然后修改NFS配置文件
[root@LinuxServer2 ~]# vim /etc/exports
/share *(ro)
/sharerw *(rw) -------read/write
更改完成之后保存并重启NFS服务
然后在客户端访问查看一下是否共享成功
[root@luotianshuai ~]# showmount -e 192.168.1.101
Export list for 192.168.1.101:
/share *
/sharerw *
[root@luotianshuai ~]#
OK 没有问题挂载,同样和上一个实验首先创建一个挂载点并访问
[root@luotianshuai ~]# mkdir -p /tmp/sharerw
[root@luotianshuai ~]# mount 192.168.1.101:/sharerw /tmp/sharerw
然后通过输入mount 来查看是否挂载成功
192.168.1.101:/sharerw on /tmp/sharerw type nfs (rw,addr=192.168.1.101) OK 挂载成功
测试删除里面创建和删除文件
[root@luotianshuai ~]# cd /tmp/sharerw/
[root@luotianshuai sharerw]# mkdir test
[root@luotianshuai sharerw]# ls
test
可以创建,删除试试
[root@luotianshuai sharerw]# rm -rf test/
[root@luotianshuai sharerw]# ls
[root@luotianshuai sharerw]#
OK 删除也没有问题,实验成功
3、为特定主机做共享
例如我指向让192.168.1.123 这个IP地址能访问特停的共享怎么做?
为了省事情我就直接使用share 这个共享文件夹来举例子
直接修改配置文件:
[root@LinuxServer2 ~]# vim /etc/exports
/share 192.168.1.123(ro) 这里只有192.168.1.123可以去只读这个文件
/sharerw *(rw)
重启nfs服务
比如有有一个客户端是192.168.1.121 我尝试去挂载访问这个共享文件夹
[root@luotianshuai ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:DB:EE:7A
inet addr:192.168.1.121 Bcast:192.168.1.255 Mask:255.255.255.0
首先查看一下NFS是否有共享文件:
[root@luotianshuai ~]# showmount -e 192.168.1.101
Export list for 192.168.1.101:
/sharerw *
/share 192.168.1.123 这里看一下只允许是192.168.1.123这个客户端访问
[root@luotianshuai ~]#
我在192.168.1.121这个客户端尝试一下挂载
[root@luotianshuai ~]# mount 192.168.1.101:/share /tmp/share
mount: 192.168.1.101:/share failed, reason given by server: Permission denied 访问被拒绝了
那我在使用192.168.1.123这个客户端访问
[root@luotianshuai ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:DB:EE:7A
inet addr:192.168.1.123 Bcast:192.168.1.255 Mask:255.255.255.0
查看挂载,然后尝试挂载
[root@luotianshuai ~]# showmount -e 192.168.1.101
Export list for 192.168.1.101:
/sharerw *
/share 192.168.1.123
[root@luotianshuai ~]# mount 192.168.1.101:/share /tmp/share
挂载成功:192.168.1.101:/share on /tmp/share type nfs (rw,addr=192.168.1.101)
如果我想给多个用户并不是所有的用户可以访问,并允许有制度权限访问NFS服务器下的共享文件/share 怎么设置?
直接修改配置文件如下:
[root@LinuxServer2 ~]# cat /etc/exports
/share 192.168.1.123(ro) 192.168.1.133(ro) 192.168.1.222(ro) 按照这个格式书写即可
NFS 完成!