一、NFS服务介绍

network file system 网络文件系统

  • 主要用于linux系统上实现文件共享的一种协议
  • 没有用户认证机制,且数据在网络上传送的时候是明文传送,一般只在局域网中使用
  • 支持多节点同时挂载及并发写入

企业应用:为集群中的web server提供后端存储
RPC: 远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务

  • rpcbind 负责NFS的数据传输,远程过程调用 tcp协议 端口111
  • nfs-utils 控制共享哪些文件,权限管理

    二、NFS服务器搭建

  • rpm -q rpcbind rpm -qa | grep ^nfs 发现有了,系统默认是已经装好了

  • 相关配置信息其实在redhat认证那里已有介绍
  • netstat -ntlp | grep rpcbind 检查服务是否已启动
  • echo "/share/nfs *(rw)" >> /etc/exports ,重启rpcbind,nfs
  • mount.nfs 10.1.1.1:/share/nfs /u01 手动将服务端的文件夹挂载到本地
    • 提示权限拒绝,那么就给共享目录添加权限,chmod o+w /share/nfs

      示例1:NFS自动挂载家目录

      A主机的/home/ 家目录的存储空间很小,或将要被占满,可以使B主机的某个路径挂载到 /home/$user1下,懂
      A主机上(FTP-SERVER)10.1.1.1:
  1. 需要创建相应的用户user1~user3 eg: user1—> /user1指定用户家目录(挂载点)
  2. useradd -d /rhome/user1 -M user1

B主机上(NFS-SERVER)10.1.1.2:

  1. 搭建NFS服务,将/data 共享出来
  2. echo "/data 10.1.1.10(rw)" >> /etc/exports
  3. service nfs restart

A:

  1. 挂载B主机上的共享目录到指定挂载点上
    1. mkdir /rhome/user{1..3}
    2. mount.nfs 10.1.1.2:/data/user1 /rhome/user1
    3. df -h

测试验证:

  1. 在客户端,使用user1 登录FTP-SERVER端,进入到/rhome/user1 目录下
  2. 在NFS-SERVER端,在/data/user1/ 目录下创建文件。返回客户端测试
    1. 补充高级权限,chmod 1777 /data/user1 粘滞位 —-一般作用在公共目录上(777)
    2. 只能自己管理自己,在该目录下只有root和文件的创建者可以删除,其他人不可以删除不属于自己的文件
  3. 正常情况下,user1 只能访问ftp服务器,不能够上传文件,原因是nfs-server的共享目录没有权限。所以有上面的授权操作

  • 方法二,将NFS-SERVER:/data 挂载到 FTP-SERVER:/home ,然后创建用户,默认家目录,此时亦达到目的

  • 方法三。

A主机上(FTP-SERVER)10.1.1.1:

  • 创建用户

B主机上(NFS-SERVER)10.1.1.2:

  • 创建目录,mkdir -p /data/user1
  • 给共享目录设置权限,chmod 1777 -R /data
  • 共享目录,echo "/data 10.1.1.10(rw)" >> /etc/exports
  • service nfs restart

A:

  • mount.nfs 10.1.1.2:/data/user1 /home/user1

    服务端的用户会影响客户端用户上传的文件(uid,gid) 用户的家目录不完整: cp -a .bash* /home/user1/ 将文件拷贝到用户家目录中去

示例2:实现web集群后端存储

  • NFS-SERVER端:共享目录,并创建一个首页文件
    ```powershell
  1. mkdir -p /share/web
  2. echo “hello world!!!!!” > /share/web/index.html
  3. echo “/share/web 10.1.1.3(ro) 10.1.1.4(ro)” >> /etc/exports
  4. service nfs restart 或 exportfs -ra ```
  • WEB1服务端:
    ```powershell
  1. yum -y install httpd
  2. 挂载nfs-server端的共享目录到/var/www/html/ mount.nfs 10.1.1.1:/share/web /var/www/html/
  3. 启动服务 service httpd restart 问题:httpd服务启动不了,提示 DocumentRoot must be a directory setenforce 0 设置selinux,安全上下文的影响 测试验证:能看到相同的页面 ```

SABMA 服务

  • 用于windows和类unix系统之间共享文件的一种协议
    1. samba服务默认是基于用户和密码认证的服务
    2. samba服务的用户必须是samba服务器上存在的用户,密码必须是samba数据库里的密码
    3. 对于发布的共享资源,默认情况是本地用户可以访问的,匿名用户是否访问看是否打开 public=yes

案例:
公司itcast,有三个部门cw,rs,sc和一个公共区pub,每个部门的资料根据如下需求进行共享:

  1. 财务部门 /samba/itcast_cw,cw01 财务总监有可读可写权限,财务部门员工可读,boss01对其有管理权限
  2. 市场部门 /samba/itcast_sc,市场部门员工可读可写,公司员工可以查询资料,boss02 对其有管理权限
  3. HR部门 /samba/itcast_rs,rs01 HR总监可读写,HR部门员工可以对财务部查询,VIP用户可查询
  4. 休息区 /samba/itcast_pub 自己管理自己的文件

步骤:

  1. 在服务器上创建相应目录,保存不同部门的资料
    mkdir -p /smb/{cw,rs,sc,pub}
  2. 创建相应的用户组,方便管理
    groupadd itcast
    groupadd cw
    groupadd rs
    groupadd sc
    useradd cw01 -g cw -G itcast
    useradd rs01 -g rs -G itcast
    useradd sc01 -g sc -G itcast
    useradd boss01 -g itcast
    useradd vip
  3. 修改相应目录的权限
  4. 搭建samba服务,共享不同部门的资料

    1. vim /etc/samba/smb.conf

    [cw] path = /smb/cw valid users = boss01,@cw write list = cw01,boss01 [rs] path = /smb/rs valid users = vip,@rs write list = rs01 [sc] path = /smb/sc valid users = @itcast write list = @sc,boss02 [pub] path = /smb/pub valid users = @itcast writable = yes ```

  5. smbpasswd -a cw01 将用户添加到samba数据库里

  6. 测试验证

总结:

  1. ftp
  2. nfs 局域网, 挂载方式访问 mount.nfs
  3. samba 局域网 直接访问(smbclient) 挂载的方式