首页 > 代码库 > NFS,Samba,ftp,http——NFS

NFS,Samba,ftp,http——NFS

NFS

NFS(Network File System)是Linux文件共享的一种基于RPC协议实现

当客户端想要访问本地挂载NFS时他先要房屋nfs文件系统,然后由nfs调用nfsd进程

NFS只认证主机,不认证用户。只要客户端与服务端具有相同用户ID的用户才能有权限访问(此用户对挂载的文件目录具有权限),默认root用户的权限映射为nfsnobady

 

NFS启动过程

[root@CentOS /]# service nfsstart

Starting NFS services:                                     [  OK  ]

Starting NFS quotas:                                       [  OK  ]

Starting NFS mountd:                                       [  OK  ]  主机认证

Stopping RPC idmapd:                                       [  OK  ]  对比并映射User ID

Starting RPC idmapd:                                       [  OK  ]

Starting NFS daemon:                                       [  OK  ]

 

NFS监听在tcp/udp:2049

RPC监听在tcp/udp:111

netstat –tuanlp | grep “rpc”查看相关进程的端口

[root@CentOS ~]# rpcinfo -p192.168.1.113 在客户端查看服务端的RPC端口信息,

[root@CentOS ~]# rpcinfo -p192.168.1.113
   program vers proto   port service
    100000   4   tcp    111 portmapper
    100000   3   tcp    111 portmapper
    100000   2   tcp    111 portmapper
    100000   4   udp    111 portmapper
    100000   3   udp    111 portmapper
    100000   2   udp    111 portmapper
    100024   1   udp  52347 status
    100024   1   tcp  45325 status
    100011   1   udp    875 rquotad
    100011   2   udp    875 rquotad
    100011   1   tcp    875 rquotad
    100011   2   tcp    875 rquotad
    100005   1   udp  44829 mountd
    100005   1   tcp  53454 mountd
    100005   2   udp  44720 mountd
    100005   2   tcp  46711 mountd
    100005   3   udp  35786 mountd
    100005   3   tcp  51132 mountd
    100003   2   tcp   2049 nfs
    100003   3   tcp   2049 nfs
    100003   4   tcp   2049 nfs
    100227   2   tcp   2049 nfs_acl
    100227   3   tcp   2049 nfs_acl
    100003   2   udp   2049 nfs
    100003   3   udp   2049 nfs
    100003   4   udp   2049 nfs
    100227   2   udp   2049 nfs_acl
    100227   3   udp   2049 nfs_acl
    100021   1   udp  48701 nlockmgr
    100021   3   udp  48701 nlockmgr
    100021   4   udp  48701 nlockmgr
    100021   1   tcp  41514 nlockmgr
    100021   3   tcp  41514 nlockmgr
100021    4   tcp 41514  nlockmgr

[root@CentOS /]# rpcinfo 或者 rpcinfo -p 查看自己的RPC服务端口

[root@CentOS /]# rpcinfo 
   program versionnetid     address                service    owner
    100000    4   tcp6      ::.0.111               portmapper superuser
    100000    3    tcp6     ::.0.111               portmappersuperuser
    100000    4   udp6      ::.0.111               portmapper superuser
    100000    3   udp6      ::.0.111               portmapper superuser
    100000    4   tcp       0.0.0.0.0.111          portmapper superuser
    100000    3   tcp       0.0.0.0.0.111          portmapper superuser
    100000    2   tcp       0.0.0.0.0.111          portmapper superuser
    100000    4   udp       0.0.0.0.0.111          portmapper superuser
    100000    3    udp      0.0.0.0.0.111          portmappersuperuser
    100000    2   udp       0.0.0.0.0.111          portmapper superuser
    100000    4   local    /var/run/rpcbind.sock  portmappersuperuser
    100000    3   local    /var/run/rpcbind.sock  portmappersuperuser
    100024    1   udp       0.0.0.0.204.123        status     29
    100024    1   tcp       0.0.0.0.177.13         status     29
    100024    1   udp6      ::.188.32              status     29
    100024    1   tcp6      ::.193.29              status     29
    100011    1   udp       0.0.0.0.3.107          rquotad    superuser
    100011    2   udp       0.0.0.0.3.107          rquotad    superuser
    100011    1   tcp       0.0.0.0.3.107          rquotad    superuser
    100011    2   tcp       0.0.0.0.3.107          rquotad    superuser
    100005    1   udp       0.0.0.0.175.29         mountd     superuser
    100005    1   tcp       0.0.0.0.208.206        mountd     superuser
    100005    1   udp6      ::.195.129             mountd    superuser
    100005    1   tcp6      ::.197.121             mountd     superuser
    100005    2   udp       0.0.0.0.174.176        mountd     superuser
    100005    2   tcp       0.0.0.0.182.119        mountd     superuser
    100005    2   udp6      ::.207.17              mountd     superuser
    100005    2   tcp6      ::.219.19              mountd     superuser
    100005    3   udp       0.0.0.0.139.202        mountd     superuser
    100005    3   tcp       0.0.0.0.199.188        mountd     superuser
    100005    3   udp6      ::.131.233             mountd     superuser
    100005    3   tcp6      ::.154.184             mountd     superuser
    100003    2   tcp       0.0.0.0.8.1            nfs        superuser
    100003   3    tcp       0.0.0.0.8.1            nfs        superuser
    100003    4   tcp       0.0.0.0.8.1            nfs        superuser
    100227    2   tcp       0.0.0.0.8.1            nfs_acl    superuser
    100227    3   tcp       0.0.0.0.8.1            nfs_acl    superuser
    100003    2   udp       0.0.0.0.8.1            nfs        superuser
    100003    3   udp       0.0.0.0.8.1            nfs        superuser
    100003    4   udp       0.0.0.0.8.1            nfs        superuser
    100227   2    udp       0.0.0.0.8.1            nfs_acl    superuser
    100227    3   udp       0.0.0.0.8.1            nfs_acl    superuser
    100003    2   tcp6      ::.8.1                 nfs        superuser
    100003    3   tcp6      ::.8.1                 nfs        superuser
    100003    4   tcp6      ::.8.1                 nfs        superuser
    100227    2   tcp6      ::.8.1                 nfs_acl    superuser
    100227    3   tcp6      ::.8.1                 nfs_acl    superuser
    100003   2    udp6      ::.8.1                 nfs        superuser
    100003    3   udp6      ::.8.1                 nfs        superuser
    100003    4   udp6      ::.8.1                 nfs        superuser
    100227    2   udp6      ::.8.1                 nfs_acl    superuser
    100227    3   udp6      ::.8.1                 nfs_acl    superuser
    100021    1   udp       0.0.0.0.190.61         nlockmgr   superuser
    100021    3   udp       0.0.0.0.190.61         nlockmgr   superuser
    100021    4   udp       0.0.0.0.190.61         nlockmgr   superuser
    100021    1   tcp       0.0.0.0.162.42         nlockmgr   superuser
    100021    3   tcp       0.0.0.0.162.42         nlockmgr   superuser
    100021    4   tcp       0.0.0.0.162.42         nlockmgr   superuser
    100021    1   udp6      ::.140.240             nlockmgr   superuser
    100021    3   udp6      ::.140.240             nlockmgr   superuser
    100021    4   udp6      ::.140.240             nlockmgr   superuser
    100021   1    tcp6      ::.220.177             nlockmgr   superuser
    100021    3   tcp6      ::.220.177             nlockmgr   superuser
    100021    4   tcp6      ::.220.177             nlockmgr   superuser

从这些端口信息可以看出RPC某些相关进程是使用的随机端口,比如mountd进程启动他会向rpcbind进程申请没有没被其他进程使用的端口号。

查看nfs挂载详情

[root@CentOS ~]# showmount -e192.168.1.113  显示服务器上共享的NFS文件系统列表

Export list for192.168.1.113:

/web 192.168.1.0/24

showmount  -d: 显示当前主机所共享的NFS文件系统中,有哪些已经被客户端挂载

showmount  -a: 显示当前主机所共享的NFS文件系统中,每个挂载连接;

 

NFS 配置

1)vim /etc/exportfs

文件目录   主机(权限)

/web    192.168.1.0/24(rw) nfs共享选项:

    rw: 读写

    ro:

    secure: 默认已经启用;限制客户端只能使用小于1024的端口访问请求;若不加限制,则使用insecure

    async: 异步写入,性能好,数据可靠性差;

    sync: 同步写入,性能差,数据可靠性高;

    wdelay: 写入延迟;no_wdelay

    nohide: 不隐藏要导出的目录中挂载的其它nfs;

    no_acl: 关闭nfs的acl功能;

    root_squash: 压缩root权限, nfsnobody

    no_root_squash: 不压缩root权限

    all_squash:所有用户都压缩

    anonuid=nfsuser,anongid=nfsgroup:使用指定的用户帐号做匿名用户帐号;

 

2)挂载nfs文件系统

[root@CentOS ~]#mount -t nfs 192.168.1.113:/web /mnt

[root@CentOS ~]#mount

/dev/mapper/vg_centos-lv_rooton / type ext4 (rw)

proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)

devpts on /dev/pts typedevpts (rw,gid=5,mode=620)

tmpfs on /dev/shm type tmpfs(rw)

/dev/sda1 on /boot type ext4(rw)

none on /proc/sys/fs/binfmt_misctype binfmt_misc (rw)

sunrpc on/var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

192.168.1.113:/webon /mnt type nfs (rw,vers=4,addr=192.168.1.113,clientaddr=192.168.1.112)

 

3) 用户访问权限的设定

nfs只做主机 认证不做用户认证。

服务端的设置

[root@CentOS /]# setfacl -mmictiger:rwx /web

[root@CentOS /]# getfacl/web/

getfacl: Removing leading ‘/‘from absolute path names

# file: web/

# owner: root

# group: root

user::rwx

user:mictiger:rwx

group::r-x

mask::rwx

other::r-x

 

[root@CentOS /]# id mictiger

uid=501(mictiger)gid=501(mictiger) groups=501(mictiger)

客户端设置:准备一个和服务端mictiger ID号一样的用户

[root@CentOS ~]# useradd -u501 tom

[root@CentOS ~]# id tom

uid=501(tom) gid=501(tom) 组=501(tom)

[root@CentOS ~]# echo"pwd@123" | passwd --stdin tom

更改用户 tom 的密码 。

passwd: 所有的身份验证令牌已经成功更新。

4)用户访问

以root用户访问

[root@CentOS mnt]# ll

总用量 12

-rw-r--r-- 1 nobody nobody781 10月 21 15:34 fstab

-rw-r--r-- 1 root   root   15 6月  14 14:16 index.html

-rw-r--r-- 1 root   root   21 6月  12 03:35 index.php

[root@CentOS mnt]# cp/etc/inittab ./

cp: 无法创建普通文件"./inittab": 权限不够

没有操作权限,这是因为此时root用户的权限变成了nfsnobady用户的权限

[root@CentOS web]# grep"^nfs" /etc/passwd

nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

以与服务端用户ID号相同的用户访问

[tom@CentOS mnt]$ cp/etc/fstab ./

[tom@CentOS mnt]$ ll

总用量 12

-rw-r--r-- 1 nobody nobody781 10月 21 2014 fstab

-rw-r--r-- 1 root   root   15 6月  14 14:16 index.html

-rw-r--r-- 1 root   root   21 6月  12 03:35 index.php

在服务端查看刚刚被复制的文件fstab

[root@CentOS web]# ll

total 12

-rw-r--r--. 1 mictiger mictiger 781 Oct 21 15:34 fstab

-rw-r--r--. 1 root     root     15 Jun 14 14:16 index.html

-rw-r--r--. 1 root     root     21 Jun 12 03:35 index.php

服务端idmapd进程将用户tom映射为mictiger。

 

本文出自 “LoveFish” 博客,请务必保留此出处http://mictiger.blog.51cto.com/4854014/1566340

NFS,Samba,ftp,http——NFS