文件服务器——NFS
一 常见文件服务器
NFS:局域网共享数据(Linux Unix之间)
NFS是Network File System的简写,即网络文件系统.
网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS. NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。
Samba:不同的平台之间
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。
SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
FTP:互联网中使用,安全
FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。
二 NFS相关知识
组成
NFS至少有两个主要部分:一台服务器和一台(或者更多)客户机。客户机远程访问存放在服务器上的数据。为了正常工作,一些进程需要被配置并运行。
应用
NFS 有很多实际应用。下面是比较常见的一些:
1.多个机器共享一台CDROM或者其他设备。这对于在多台机器中安装软件来说更加便宜跟方便。
2.在大型网络中,配置一台中心 NFS 服务器用来放置所有用户的home目录可能会带来便利。这些目录能被输出到网络以便用户不管在哪台工作站上登录,总能得到相同的home目录。
3.几台机器可以有通用的/usr/ports/distfiles 目录。这样的话,当您需要在几台机器上安装port时,您可以无需在每台设备上下载而快速访问源码。
三 NFS简单应用
[sql]
--第一步,安装软件
[root@serv01 ~]# yum install nfs* -y
--第二步,修改配置文件
[root@serv01 ~]# vim /etc/exports
[root@serv01 ~]# cat /etc/exports
/share *(ro)
#共享目录 共享IP地址或者网段 共享参数
[root@serv01 ~]# mkdir /share
--第三步,重启服务
[root@serv01 ~]# /etc/init.d/rpcbind restart
Stopping rpcbind: [ OK ]
Starting rpcbind: [ OK ]
[root@serv01 ~]# /etc/init.d/nfs restart
Shutting down NFS mountd: [ OK ]
Shutting down NFS daemon: [ OK ]
Shutting down NFS services: [ OK ]
Starting NFS services: [ OK ]
Starting NFS daemon: [ OK ]
Starting NFS mountd: [ OK ]
[root@serv01 ~]# exportfs -v
/share <world>(ro,wdelay,root_squash,no_subtree_check)
--第四步,serv02挂载
#serv02
[root@serv02 ~]# mount192.168.1.11:/share /mnt
mount: wrong fs type, bad option, badsuperblock on 192.168.1.11:/share,
missing codepage or helper program, or other error
(for several filesystems (e.g. nfs, cifs) you might
need a /sbin/mount.<type> helper program)
In some cases useful info is found in syslog - try
dmesg | tail or so
#出现这个错误,安装nfs相关的包
[root@serv02 ~]# yum install nfs* -y
[root@serv02 ~]# mount 192.168.1.11:/share/mnt
[root@serv02 ~]# cd /mnt
[root@serv02 /]# umount /mnt
[root@serv02 /]# mkdir /data
[root@serv02 /]# mount 192.168.1.11:/share/data
[root@serv02 /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 9.7G 1.1G 8.1G 12% /
tmpfs 188M 0 188M 0% /dev/shm
/dev/sda1 194M 25M 160M 14% /boot
/dev/sda5 4.0G 137M 3.7G 4% /opt
/dev/sr0 3.4G 3.4G 0 100% /iso
192.168.1.11:/share 9.7G 1.1G 8.1G 12% /data
--第五步,拷贝文件
#serv01
[root@serv01 share]# cp /boot/* . -rvf
[root@serv02 /]# cd /data
[root@serv02 data]# ll
total 18592
-rw-r--r--. 1 4294967294 4294967294 100182 Aug 12 21:45config-2.6.32-131.0.15.el6.x86_64
drwxr-xr-x. 3 4294967294 4294967294 4096Aug 12 21:45 efi
drwxr-xr-x. 2 4294967294 4294967294 4096 Aug 12 21:45 grub
-rw-r--r--. 1 4294967294 4294967294 12587318Aug 12 21:45 initramfs-2.6.32-131.0.15.el6.x86_64.img
drwx------. 2 4294967294 4294967294 4096 Aug 12 21:45 lost+found
-rw-r--r--. 1 4294967294 4294967294 165812 Aug 12 21:45symvers-2.6.32-131.0.15.el6.x86_64.gz
-rw-r--r--. 1 4294967294 4294967294 2278446 Aug 12 21:45System.map-2.6.32-131.0.15.el6.x86_64
-rwxr-xr-x. 1 4294967294 4294967294 3881120 Aug 12 21:45 vmlinuz-2.6.32-131.0.15.el6.x86_64
[root@serv02 data]# cpvmlinuz-2.6.32-131.0.15.el6.x86_64 /root -rvf
`vmlinuz-2.6.32-131.0.15.el6.x86_64' ->`/root/vmlinuz-2.6.32-131.0.15.el6.x86_64'
#不能创建文件,修改配置文件
[root@serv02 data]# touch aa01.txt
touch: cannot touch `aa01.txt': Read-onlyfile system
[root@serv01 share]# vim /etc/exports
[root@serv01 share]# cat /etc/exports
/share *(rw)
#重启服务
[root@serv01 share]# /etc/init.d/nfs restart
Shutting down NFS mountd: [ OK ]
Shutting down NFS daemon: [ OK ]
Shutting down NFS services: [ OK ]
Starting NFS services: [ OK ]
Starting NFS daemon: [ OK ]
Starting NFS mountd: [ OK ]
#没有权限解决
[root@serv02 data]# touch aa01.txt
touch: cannot touch `aa01.txt': Permissiondenied
[root@serv01 share]# ls -l /share/ -d
drwxr-xr-x. 5 root root 4096 Aug 12 21:45/share/
[root@serv01 share]# chmod 777 /share
[root@serv01 share]# ls -l /share/ -d
drwxrwxrwx. 5 root root 4096 Aug 12 21:45/share/
[root@serv02 data]# touch aa01.txt
[root@serv02 data]# ll aa01.txt
-rw-r--r—. 1 4294967294 4294967294 0 Aug 1221:50 aa01.txt
#mount过去后不再是root用户
[root@serv01 share]# ll aa01.txtconfig-2.6.32-131.0.15.el6.x86_64
-rw-r--r--. 1 nfsnobody nfsnobody 0 Aug 12 21:50 aa01.txt
-rw-r--r—. 1 root root 100182 Aug 12 21:45 config-2.6.32-131.0.15.el6.x86_64
#普通用户默认不切换身份
#添加用户
[root@serv02 data]# useradd zhink
#切换到普通用户
[root@serv02 data]# su - zhink
[zhink@serv02 ~]$ cd /data
#创建文件
[zhink@serv02 data]$ touch aa02.txt
[zhink@serv02 data]$ ll aa02.txt
-rw-rw-r—. 1 4294967294 4294967294 0 Aug 1221:57 aa02.txt
#共享目录里查看文件权限
[root@serv01 share]# useradd zhink
[root@serv01 share]# ll aa02.txt
-rw-rw-r—. 1 zhink zhink 0 Aug 12 21:57aa02.txt
#serv02删除用户,发现用户变成编号了
[root@serv01 share]# userdel zhink -rf
[root@serv01 share]# ll aa02.txt
-rw-rw-r—. 1 500 500 0 Aug 12 21:57 aa02.txt
#添加新用户,发现文件的拥有者和组又变成新添加的用户,也就是没法区分
[root@serv01 share]# useradd larry
[root@serv01 share]# ll aa02.txt
-rw-rw-r—. 1 larry larry 0 Aug 12 21:57aa02.txt
[root@serv02 ~]# cd /data
[root@serv02 data]# touch aa03.txt
[zhink@serv02 data]$ su -
Password:
[root@serv02 ~]# userdel -rf zhink
[root@serv01 share]# ll aa03.txt
-rw-r--r—. 1 nfsnobody nfsnobody 0 Aug 1222:00 aa03.txt
#root用户不转换
[root@serv01 share]# vim /etc/exports
[root@serv01 share]# cat /etc/exports
/share *(rw,no_root_squash)
[root@serv01 share]# /etc/init.d/nfs restart
Shutting down NFS mountd: [ OK ]
Shutting down NFS daemon: [ OK ]
Shutting down NFS services: [ OK ]
Starting NFS services: [ OK ]
Starting NFS daemon: [ OK ]
Starting NFS mountd: [ OK ]
#重新挂载
[root@serv02 data]# cd /
[root@serv02 data]# umount /data
[root@serv02 data]# mount 192.168.1.11:/share/data
#创建文件
[root@serv02 data]# touch aa04.txt
#查看文件属性,发现变化成root用户
[root@serv01 share]# ll aa04.txt
-rw-r--r--. 1 root root 0 Aug 12 22:03 aa04.txt
#查看帮助文件
[root@serv01 share]# man exports
#远程接口调用,NFS借助此服务
[root@serv01 share]# /etc/init.d/rpcbindrestart
#映射成其他用户
[root@serv01 share]# useradd linux
[root@serv01 share]# id linux
uid=501(linux) gid=501(linux)groups=501(linux)
[root@serv01 share]# vim /etc/exports
[root@serv01 share]# cat /etc/exports
/share*(rw,all_squash,anonuid=501,anongid=501)
[root@serv01 share]# /etc/init.d/nfs restart
Shutting down NFS mountd: [ OK ]
Shutting down NFS daemon: [ OK ]
Starting NFS services: [ OK ]
Starting NFS daemon: [ OK ]
Starting NFS mountd: [ OK ]
[root@serv02 /]# umount /data
[root@serv02 /]# mount 192.168.1.11:/share/data
[root@serv02 /]# cd /data
[root@serv02 data]# ll
[root@serv01 share]# ll aa05.txt
-rw-r--r--. 1 linux linux 0 Aug 12 22:14aa05.txt
[root@serv02 data]# useradd larry
[root@serv02 data]# su - larry
[larry@serv02 ~]$ cd /data
[larry@serv02 data]$ touch aa06.txt
[root@serv01 share]# ll aa06.txt
-rw-rw-r--. 1 linux linux 0 Aug 12 22:15aa06.txt
四 NFS——指定某一个IP地址访问
[sql]
--第一步,修改配置文件
[root@serv01 share]# vim /etc/exports
[root@serv01 share]# cat /etc/exports
/share192.168.1.12(rw,all_squash,anonuid=501,anongid=501)
--第二步,重启服务
[root@serv01 share]# /etc/init.d/nfs restart
Shutting down NFS mountd: [ OK ]
Shutting down NFS daemon: [ OK ]
Shutting down NFS services: [ OK ]
Starting NFS services: [ OK ]
Starting NFS daemon: [ OK ]
Starting NFS mountd: [ OK ]
--第三步,测试
[root@serv02 data]# cd /
[root@serv02 /]# umount /data
[root@serv02 /]# mount 192.168.1.11:/share/data
[root@serv02 /]# cd /data
五 NFS——指定网段访问
[sql]
--第一步,修改配置文件
[root@serv01 share]# vim /etc/exports
[root@serv01 share]# cat /etc/exports
/share 192.168.1.0/255.255.255.0(rw,all_squash,anonuid=501,anongid=501)
#/share192.168.1.0/24(rw,all_squash,anonuid=501,anongid=501)
--第二步,重启服务
[root@serv01 share]# /etc/init.d/nfs restart
Shutting down NFS mountd: [ OK ]
Shutting down NFS daemon: [ OK ]
Shutting down NFS services: [ OK ]
Starting NFS services: [ OK ]
Starting NFS daemon: [ OK ]
Starting NFS mountd: [ OK ]
--第三步,测试
[root@serv02 data]# cd /
[root@serv02 /]# umount /data
[root@serv02 /]# mount 192.168.1.11:/share/data
六 NFS——指定多个网段访问
[sql]
--第一步,修改配置文件
[root@serv01 share]# vim /etc/exports
[root@serv01 share]# cat /etc/exports
/share 192.168.1.0/255.255.255.0(rw,all_squash,anonuid=501,anongid=501)172.16.1.0/255.255.255.0(rw)
#/share192.168.1.0/24(rw,all_squash,anonuid=501,anongid=501)
--第二步,重启服务
[root@serv01 share]# /etc/init.d/nfs restart
Shutting down NFS mountd: [ OK ]
Shutting down NFS daemon: [ OK ]
Shutting down NFS services: [ OK ]
Starting NFS services: [ OK ]
Starting NFS daemon: [ OK ]
Starting NFS mountd: [ OK ]
--第三步,测试
#真实机挂载
[root@larrywen 0812]# mount192.168.1.11:/share /mnt
[root@larrywen 0812]# mount |grep share
192.168.1.11:/share on /mnt type nfs(rw,vers=4,addr=192.168.1.11,clientaddr=192.168.1.1)
#serv01添加网卡,真实机使用其他网段挂载
[root@serv01 share]# ifconfig eth1 172.16.1.11netmask 255.255.255.0
[root@larrywen 0812]# umount /mnt
[root@larrywen 0812]# mount172.16.1.11:/share /mnt
#永久挂载
[root@serv02~]# tail -n1 /etc/fstab
192.168.1.11:/share /data nfs defaults 00
#读取fstab文件
[root@serv02 ~]# mount -a
[root@serv02 ~]# mount
/dev/sda2 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts(rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs(rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
/dev/sda5 on /opt type ext4 (rw)
none on /proc/sys/fs/binfmt_misc typebinfmt_misc (rw)
/dev/sr0 on /iso type iso9660 (ro)
192.168.1.11:/share on /data type nfs(rw,vers=4,addr=192.168.1.11,clientaddr=192.168.1.12)
#查看有哪些用户挂载到本机?
[root@serv01 ~]# netstat -langput | grep nfs
[root@serv01 ~]# ps -ef|grep nfs
root 1246 2 0 22:29 ? 00:00:00 [nfsiod]
root 1323 2 0 22:35 ? 00:00:00 [nfsd4]
root 1324 2 0 22:35 ? 00:00:00 [nfsd4_callbacks]
root 1325 2 0 22:35 ? 00:00:00 [nfsd]
root 1326 2 0 22:35 ? 00:00:00 [nfsd]
root 1327 2 0 22:35 ? 00:00:00 [nfsd]
root 1328 2 0 22:35 ? 00:00:00 [nfsd]
root 1329 2 0 22:35 ? 00:00:00 [nfsd]
root 1330 2 0 22:35 ? 00:00:00 [nfsd]
root 1331 2 0 22:35 ? 00:00:00 [nfsd]
root 1332 2 0 22:35 ? 00:00:00 [nfsd]
root 1360 1219 0 22:36 pts/0 00:00:00 grep nfs
[root@serv01 ~]# ps -aux|grep nfs
Warning: bad syntax, perhaps a bogus '-'? See/usr/share/doc/procps-3.2.8/FAQ
root 1246 0.0 0.0 0 0 ? S 22:29 0:00 [nfsiod]
root 1323 0.0 0.0 0 0 ? S 22:35 0:00 [nfsd4]
root 1324 0.0 0.0 0 0 ? S 22:35 0:00 [nfsd4_callbacks]
root 1325 0.0 0.0 0 0 ? S 22:35 0:00 [nfsd]
root 1326 0.0 0.0 0 0 ? S 22:35 0:00 [nfsd]
root 1327 0.0 0.0 0 0 ? S 22:35 0:00 [nfsd]
root 1328 0.0 0.0 0 0 ? S 22:35 0:00 [nfsd]
root 1329 0.0 0.0 0 0 ? S 22:35 0:00 [nfsd]
root 1330 0.0 0.0 0 0 ? S 22:35 0:00 [nfsd]
root 1331 0.0 0.0 0 0 ? S 22:35 0:00 [nfsd]
root 1332 0.0 0.0 0 0 ? S 22:35 0:00 [nfsd]
root 1362 0.0 0.2 103228 868 pts/0 S+ 22:36 0:00 grep nfs
[root@serv01 ~]# netstat -langput | grep192.168.1.12
tcp 0 0 192.168.1.11:2049 192.168.1.12:906 ESTABLISHED -