设为首页 收藏本站
查看: 1329|回复: 0

[经验分享] 网络共享(Ftp,NFS,Samba)-------NFS

[复制链接]

尚未签到

发表于 2016-6-9 13:00:20 | 显示全部楼层 |阅读模式
网络共享(FtpNFSSamba-------NFS
1.NFS的由来:NFS(Network File System)是一种分布式文件系统,允许网络中的安装不同操作系统(LinuxUnix)的计算机间共享文件和外设,所以它的通讯协定设计与主机及操作系统无关.它是由SUN公司于1984年推出,使得可以本地机一样的使用另一台联网计算机的文件和外设。NFS在文件传送或信息传送过程中依赖于RPC协议
功能:当我们的NFS Server设定好共享目录后,其他的NFSClient端就可以将这个目录挂载到自己系统上面的某个挂载点(挂载点可以自定义),进入这个挂载点即可查看共享的文件。
缺陷:a.明文传输
b.只能用于LinuxUnix间操作系统中
c.新版的NFS服务是置于系统内核中的。
2.RPCRPC,远程过程调用 (remote procedure call)是能使客户端执行其他系统中程序的一种机制。由于使用RPC 的程序不必了解支持通信的网络协议的情况,因此 RPC提高了程序的互操作性。常用于分布式C/S模型,发出请求的程序是客户程序,而提供服务的程序是服务器。
功能:NFS支持的功能相当的多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输文件,因此, NFS的功能所对应的端口不固定,而是采用随机取用一些未被使用的小于 1024的端口来使用,但客户端又不知道服务器端的相关端口,所以需要远程过程调用(RPC)的服务,RPC最主要的功能就是在指定每个 NFS功能所对应的 port number,并且返回给客户端,让客户端可以连结到正确的端口上去。当服务器在启动 NFS时会随机取用数个端口,并主动的向 RPC注册,因此 RPC可以知道每个端口对应的 NFS功能,然后 RPC又是固定使用 port 111来监听客户端的需求并返回客户端正确的端口。
可以指定的静态端口:MOUNT_PORT=”4002”
STATD_PORT=”4003”
LOCKD_TCPPORT=”4004”
LOCKD_UDPPORT=”4004”
ROUOTAD_PORT=”4005”
STATD_OUTGOING_PORT=”4006”
3.NFS包:nfs-utils-1.0.6-65.EL4
脚本nfsnfslock
端口2049Tcp/Udpnfsd其他半随机111Tcp/Udp,及其他的小于1024的随机端口。
配置文件:/etc/exports,/etc/sysconfig/nfs
进程:rpc.mountedß-------mount
lockdß--------NLM
rpc.statdß------NLM
NFS主程序:nfs-utils
RPC
主程序:portmap
/var/lib/nfs/*tab
  在NFS服务器的登录档都放置到/var/lib/nfs/目录里面,在该目录下有两个比较重要的登录档,一个是etab,主要记录了 NFS所分享出来的目录的完整权限设定值;另一个xtab则记录曾经连结到此NFS主机的相关客户端资料。

 /var/lib/nfs/rmtab
 状态文件,列出了挂接导出文件的远程客户机清单。
  
4.服务器端得应用及其规则
A安装nfs软件包yumlist all|grep nfs
yum install nfs-utils.i386
B.启动RPC服务:serviceportmap startportmap不需要设定,只要直接启动就行,启动之后,会出现一个port111sunrpc的服务
查看RPC服务的状态serviceportmap status
rpcinfo -p localhost(查看当前主机的RPC状态)
启动nfs服务servicenfs restart(开启nfs服务)
chkconfig nfs on(将其加入开机自启行列)
C编辑nfs的配置文件vi/etc/exports(默认为空)
假设为下面所示:
/var/guest 192.168.1.0/24(rw,async)
/var/ftp 192.168.0.0/24(rw,no_root_squash,sync)
保存退出!
注意下面是一些NFS共享的常用参数
 
ro: read-only
,只读访问权限

rw: read-write
,可读写的权限

sync:
资料同步写入到内存与硬盘

async:
资料会先暂存于内存中,而非直接写入硬盘(异步)

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:
和上面相对,不检查父目录权限

no_all_squash:
保留共享文件的UIDGID(默认)
   
all_squash
  不论登入 NFS的使用者身份为何,他的UIDGID映射匿名客户anonymous(通常也就是nobody(nfsnobody)),适合公用目录。

root_squash
  在登入NFS主机使用共享之目录的使用者如果是root时,那么这个使用者的权限将被映射成为匿名使用者,通常他的UID GID都会变成nobody(nfsnobody)那个系统帐号的身份的权限;uidgid0变为65534.

no_root_squash
  登入NFS主机使用共享目录的使用者,如果是root的话,那么对于这个共享的目录来说,他就具有root的权限!这个项目『极不安全』,不建议使用!

anonuid=xxx:
指定NFS服务器/etc/passwd文件中匿名客户的UID

anongid=xxx:
指定NFS服务器/etc/passwd文件中匿名客户的GID
D.此时我们不需重启服务,可以使用命令将其重新读取:
exportfs –a
注意-a:全部挂载(或卸载和-u连用时)/etc/exports文件内的设置
-r
:重新挂载/etc/exports里面的设置,此外,亦同步更新/etc/exports/var/lib/nfs/xtab的内容!
-u
:卸载某一目录
-v
:在export的时候,将分享的目录显示到屏幕上

exportfs -arv重新挂载一次/etc/exports的设置
exportfs –auv全部卸载
E此时我们可以自己先检查一下NFS服务器是否可以连接
showmount –e localhost
showmount-a localhost
注意:showmount [-ae] [hostname|IP]
-p:显示出所有的 port porgram的信息;

参数:
-a
:这个参数是一般在NFS服务器上使用,是用来显示已经挂载上本机nfs目录的客户机
-d:查看哪个目录已被挂载到NFS服务器上。(一般也在NFS服务器上使用)
-e
:显示主机的 /etc/exports所共享的目录

5.客户端的配置及规则:
A当客户端访问服务器时我们需要首先建立挂载点
Egmkdirmnt
B.挂载共享目录
mount -tnfs 192.168.1.0:/var/ftp mnt/
C.此时我们可以切换到挂载目录中查看共享目录
showmount –e IP(服务器的ip地址)
cd mnt
ls
如果是root用户,即可查看里面的文件,但是只读权限(规定为可读可写,为何为只读呢?
Reason:因为root_squash参数,没有规定时,都将root用户映射为匿名用户,将其uidgid0变为65534,权限缩减。除非声明声明no_root_squashroot用户登录时才可以保持共享目录中规定的权限。修改如下:
/var/guest192.168.1.0/24(rw,no_root_squashasync)
6.案例:
1.假如说服务器上有个用户natasha,并且他是/var/guest目录的所有者,即将目录的用户和组都改为natasha,假如natashauid2001,在客户机上有个natashamary两个用户,但natashauid2000maryuid2001,此时natasha将无法登录,而mary却可以查看(原因很简单,NFS是靠uidgid来识别用户的身份的。)
2.同一目录针对不同范围开放不同权限
# vi /etc/exports
/home/public 192.168.0.0/24(rw) *(ro)

即将主机与网域分为两段(用空格隔开),此时当客户机处于192.168.0.0/24这个网段中时,针对这个被挂在的目录就具有可读可写的权限;而其他网段的客户机挂载目录后就只有可读权限。
3.开放匿名登入的情况
# vi /etc/exports
/home/linux*.linux.org(rw,all_squash,anonuid=40,anongid=40)
#
如果要开放匿名,那么重点是all_squash,并且要配合anonuid

test.linux.org登入这部 NFS主机,并且在 /home/linux写入文件时,该文件的所有人与所有群组,就会变成/etc/passwd里面对应的UID40的那个身份的使用者

总结:/etc/exportsclient的书写规则

  (1)单个主机
  可以用短名及完全限定名(QFDN),或者用IP地址,例如student1student1.test.com.cn或者192.168.10.1


  (2)Net-Group
  可以列出/etc/netgroup文件中或NFS网组映射中定义的整组主机。网组名以@开头。

  (3)通配符主机(*,?)
  .discuz.net *.*.comsenz.com

*:匹配零个或多个
?:只匹配一个
  (4)掩码
  192.168.1.0/255.255.255.0


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-228283-1-1.html 上篇帖子: Java通过apache的common包操作ftp 下篇帖子: 读取配置文件连接ftp代码实现本地下载
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表