分类: LINUX
2014-02-15 19:58:57
RPC 是基于TCP的端口 111
NFS:网络文件系统
主要用于类unix系统上进行文件共享服务
基于RPC才能提供网络共享服务
portmap软件包
提供了运行portmap服务所需的文件。portmap服务为NFS等服务器程序提供RPC服务的支持
nfs-utils软件包
提供了NFS服务器的启动脚本和管理维护工具
可知nfs不受wrap限制
redhat6的启动顺序
[root@localhost pam.d]#service rpcbind restart
[root@localhost pam.d]# service nfs restart
Shutting down NFS daemon: [FAILED]
Shutting down NFS mountd: [FAILED]
Shutting down NFS quotas: [FAILED]
Starting NFS services:
redhat5的启动顺序
[root@localhost pam.d]#service portmap restart
[root@localhost pam.d]# service nfs restart
[root@localhost pam.d]# netstat -ntpl |grep 111通过端口号查看服务是否开启
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1615/rpcbind
tcp 0 0 :::111 :::*
LISTEN 1615/rpcbind
要在客户端使用服务器端的nfs服务,客户端也要安装nfs软件,并启动相应服务
redhat5: service portmap restart
redhat6:service prcbind restart
NFS与RPC的关系
NFS的不同功能由不同的守护进程提供。
NFS的每个功能就会由RPC固定或随机分配的端口进行监听。
portmap :主要负责端口的映射工作
rpc.nfsd:主要负责登录权限检测。
rpc.mountd:负责管理NFS的文件系统,检测权限
rpc.rquotad:负责远程磁盘限额服务
rpc.lockd:负责管理文件的锁定,防止同时写入
rpc.statd:负责检查共享目录的一致性
在NFS服务器主机中进行设置
安装NFS服务器软件包
启动NFS服务器程序
设置NFS共享目录输出
在NFS客户机中进行设置
使用mount命令挂载NFS服务器中的NFS共享目录到文件系统中
通过NFS文件系统的挂载点目录访问NFS服务器中的共享内容
正常情况“nfs-utils”和“portmap”两个软件包在RHEL5系统中是默认安装的
/etc/exports:NFS主配置文件
默认存在,但无内容
/etc/init.d/nfs:NFS脚本文件
service nfs restart
/etc/init.d/portmap:portmap脚本文件
/etc/exports文件配置NFS服务器中输出的共享目录
/home/share *(sync,ro)
exports文件中“客户端主机地址”字段可以使用多种形式表示主机地址
exports文件中的“配置选项”字段放置在括号对(“( )”)中 ,多个选项间用逗号分隔
sync:设置NFS服务器同步写磁盘,这样不会轻易丢失数据,建议所有的NFS共享目录都使用该选项
ro:设置输出的共享目录只读,与rw不能共同使用
rw:设置输出的共享目录可读写,与ro不能共同使用
root_squash:root用户访问共享目录的身份会自动变成nobody的身份
no_root_squash:root用户会以自己的真实身份去访问共享目录,不安全不建议使用
rpcinfo命令
-p 显示出所有端口与进程信息
[root@emily mnt]# rpcinfo -p (ip)
program vers proto port service
100000 2 udp 111 portmapper
100011 1 udp 875 rquotad
100005 1 udp 41799 mountd
100227 2 tcp 2049 nfs_acl
100003 4 udp 2049 nfs
100021 4 tcp 35362 nlockmgr
修改/etc/sysconfig/nfs文件,使rquotad,mountd, statd 和 lockd 可以被强制使用一个大于1024的静态端口
exportfs命令
重新共享/etc/exports更改的目录资源
-a:全部mount或者umount
-r:重新输出mount
-u:卸载umount
-v :显示详细共享目录信息
重新输出共享目录,使nfs服务器重新读取exports文件中的设置
exportfs -rv
停止输出所有目录,停止当前主机中NFS服务器的所有目录输出
exportfs -auv
[root@emily share]# exportfs -av
exporting *:/share
[root@emily share]# exportfs -v 查看详细信息
/share
[root@emily share]# exportfs -arv 不要刷新服务,重新加载/etc/exports文件
exporting *:/lianxi
exporting *:/share
showmount命令
显示服务器共享了哪些目录以及目录的权限
-e 显示NFS服务器的共享目录信息
-d 仅显示被客户端挂载的目录名
显示当前本机中NFS服务器的输出列表
showmount -e
显示指定NFS服务器中的共享目录列表
showmount -e 192.168.152.131
客户机显示NFS服务器的输出
showmount -e 192.168.152.131
挂载NFS服务器中的共享目录
mount -t nfs 192.168.152.131:/home/share/ /mnt/
显示当前主机挂载的NFS共享目录,使用mount命令查看
192.168.152.131:/home/share/ on /mnt type nfs (rw,addr=192.168.152.131)
卸载系统中已挂载的NFS共享目录 ,使用umount命令卸载NFS文件系统
umount /mnt/
windows系统挂载nfs的步骤:
启用nfs服务
查看服务器共享信息
挂载为windows系统未使用的盘符,它地址的使用\\是与linux系统是相反的
查看共享磁盘t
软NFS挂载、硬NFS挂载、可中断NFS挂载
现在默认使用的是可中断NFS硬挂载
如果NFS服务器死机,那客户端访问共享文件夹的进程将会死等待直到服务器响应,但可以切换终端,用kill -9杀死相应进程号
使用soft选项软NFS挂载
如果NFS服务器死机,那客户端访问共享文件夹的进程将会死等待直到服务器响应,但等待一段时间后自动中断,并显示输入输出错误
[root@emily ~]# mount -o soft,timeo=2 10.0.1.63:/share /mnt 软中断,超时2秒自动退出
[root@emily ~]# cd /mnt
[root@emily mnt]# ls
passwd YY
[root@emily mnt]# service rpcbind stop中止服务
[root@emily mnt]# service nfs stop
[root@emily mnt]# ls
ls: cannot open directory .: Input/output error
NFS常见错误提示
nfs服务没有启动
解决方法:先启动rpcrind服务,再启动nfs服务
protmap服务没有启动
没有权限挂载共享目录
nfs试验总结:
ntf挂载后,客户机的挂载点inode是服务器的共享目录的inode号
普通用户一般不能挂载nfs,除非root下放权限,同时普通用户可以在在挂载点删除文件,新建文件,
为了防止别人修改你的文件,可以在共享目录加t权限,当客户机的普通用户uid和服务器uid相同,则会在
客户机新建的文件,在服务器上显示的属主和属组为服务器uid的名字
[root@emily /]# showmount -e 10.0.63.88 当出现这条错误时,应该是客户端是redhat5,没有重启服务
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
服务器间配置
[root pam.d]# vim /etc/exports 在/etc/exports 下写入共享目录及配置
/share 10.0.1.63(sync,rw)
配置文件的要求:
客户端:
[root@emily Desktop]# showmount -e 10.0.63.4 (前提安装nfs软件)
Export list for 10.0.63.4:
/share 10.0.1.63
[root@emily Desktop]# mount 10.0.63.4:/share /mnt
[root@emily Desktop]# cd /mnt
[root@emily mnt]# ll
total 4
-rw-r--r-- 1 nobody nobody 0 Jul 31 20:33 ff
drwxr-xr-x 2 nobody nobody 4096 Jul 31 20:33 tt
[root@emily mnt]# touch gg(不能新建文件,给服务器端/share目录o+w权限)
touch: cannot touch `gg': Permission denied
[root@emily mnt]# touch gg
touch: cannot touch `gg': Permission denied
[root@emily mnt]# touch gg
[root@emily mnt]# mkdir fff
[root@emily mnt]# ll
total 8
-rw-r--r-- 1 nobody nobody 0 Jul 31 20:33 ff
drwxr-xr-x 2 nobody nobody 4096 Jul 31 20:34 fff
-rw-r--r-- 1 nobody nobody 0 Jul 31 20:34 gg
drwxr-xr-x 2 nobody nobody 4096 Jul 31 20:33 tt
[root@emily mnt]# rm -ff
[root@emily mnt]# rm -rf ffgg 当服务器共享目录加o+t权限,则不能删除别人的文件
rm: cannot remove `ffgg': Operation not permitted
[haha@emily mnt]$ ll切换用户,因为是redhat6,所以效果没出来
total 8
-rw-r--r-- 1 nobody nobody 0 Jul 31 20:36 ff
drwxr-xr-x 2 nobody nobody 4096 Jul 31 20:34 fff
-rw-r--r-- 1 nobody nobody 0 Jul 31 20:36 ffgg
-rw-r--r-- 1 nobody nobody 0 Jul 31 20:34 gg
-rw-rw-r-- 1 nobody nobody 0 Jul 31 20:38 haha
drwxr-xr-x 2 nobody nobody 4096 Jul 31 20:33 tt
redhat5做服务器
客户机的显示:
[ff@emily lianxi]$ ll 文件ff的拥有者到了服务器端却变成了hahaw用户,这是因为linux系统只认uid号,(ff用户和hahawuid相同)
total 4
-rw-rw-r-- 1 ff ff 0 Aug 1 09:47 ff
-rw-r--r-- 1 root root 1593 Aug 1 08:13 passwd
-rw-r--r-- 1 nfsnobody nfsnobody 0 Aug 1 09:33 tt
服务器端的显示:
=======================================================================
自动挂载器
当需要访问某个分区或者共享目录中的文件时,可以自动挂载这个分区或共享目录
当不再需要这个文件时,可以自动卸载这个分区或共享目录
会自动监控某个神奇的目录,一旦你访问这个目录下某个挂载点里的对象时,就会自动挂载
自动挂载器配置
软件包:autofs
/etc/auto.master主配置文件,设置神奇目录
TCP Wrappers实现访问控制
主要配置文件
/etc/hosts.allow
/etc/hosts.deny
保护机制的实现方式
方式1:通过tcpd主程序对其他服务程序进行包装
方式2:由其他服务程序调用libwrap.so.*链接库
TCP Wrappers的访问控制原则
首先检查 hosts.allow 文件,若找到相匹配的策略,则允许访问
否则继续检查 hosts.deny 文件,若找到相匹配的策略,则拒绝访问
如果两个文件中都没有相匹配的策略,则允许访问
应用示例:
仅允许地址为 61.63.65.67 以及 192.168.2.0/24 网段的客户机访问sshd服务
[root@localhost ~]# vi /etc/hosts.allow
sshd:61.63.65.67,192.168.2.*
[root@localhost ~]# vi /etc/hosts.deny
sshd:ALL