美文网首页
网络文件共享

网络文件共享

作者: 一桥长书 | 来源:发表于2017-10-29 19:26 被阅读0次

    1 存储方式

    DAS: Direct Attach Storage 直接附件存储
    SAN: Storage Area Network 存储区域网络
    NAS: Network Attach Storage 网络附件存储
    

    2 文件共享服务

    应用层 ftp 可以实现跨平台
    内核级 nfs 不能实现跨平台
    window linux 共享服务 samba
    在linux实现CIFS(SMB)协议 通用网络文件系统

    3 FTP

    File Transfer Protocol 早期的三个应用程序之一

    ftp是C/S架构的文件共享服务
      连接的方式:
        命令连接 文件管理类命令 持久性的连接
        数据连接 ftp数据传输 按照需求创建及关闭连接
           数据传输的格式
             文本: 在传输的过程可能进行格式转换
             二进制传输: 不进行格式转换(尽量使用此方法)
          主动 有服务器发起数据连接
             命令
               client: port --> server:21
             数据连接
               server 20/tcp --> client port
          被动 由客户端创建连接
             命令
               client: port --> server:21
               服务器传过来两个数字 n,m 让客户端连接服务器n*256+m的端口,进行数据连接
             数据连接
               client port --> server n*256+m
    
    • FTP用户认证
    虚拟用户: 仅用于特定服务的资源,也是转化为系统用户
      nsswitch: network server switch 名称解析框架
        配置文件 /etc/nsswitch.conf
        模块: /lib64/libnss*,/usr/lib64/libnss*
      pam pluggable authentication module 可插拔认证模块 /lib64/security
        配置文件 /etc/pam.conf  /etc/pam.d/*
    系统用户: 默认使用系统账号进行认证,不可以修改,以虚拟用户进行认证,需要开启
        guest_enable=yes
        guest_username=username #系统账号
    匿名用户: 也是映射为系统用户ftp
    
    • 实现将虚拟用户存于MySQL数据库中
    1 因为在centos7中不直接提供pam_mysql的rpm包,所以需要编译安装pam_mysql的包,如果是在centos6,可以直接安装 pam_mysql
      yum install mysql_server mysql_devel pam_devel
      yum groupinstall "Development tools"
      编译安装pam_mysql
        a tar xf pam_mysql-0.7RC1.tar.gz
        b cd pam_mysql-0.7RC1
        c ./configure --with-mysql=/usr --with-pam=/usr --with-openssl --with-pam-mods-dir=/lib64/security
        d make && make install
    2 创建数据库,授权,创建表,插入用户
      a: create database vsftpd;
      b: grant select on vsftpd.* to vsftpd@'172.18.%.%' identified by 'vsftpd'
      c: create table users(id int unsigned not null auto_increment primary key,
    name varchar(50) binary not null,password char(48) binary not null);
      d: insert into users values ('tom',password('tom')),('jerry',password('jerry'));
    3 创建编辑pam的配置 /etc/pam.d/vsftpd.mysql
      auth required /lib64/security/pam_mysql.so user=vsftpd passwd=vsftpd host=IP db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
      account required /lib64/security/pam_mysql.so user=vsftpd passwd=vsftpd host=IP db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
    4 创建虚拟用户对应的系统账户
      useradd -r -s /sbin/nologin -d /ftpserver/pub vuser 可以设置vuser的家目录
    5 编辑vsftp的配置文件/etc/vsftpd/vsftpd.conf
      anonymous_enable =yes  虚拟用户是通过匿名用户登陆的
      local_enable=yes   # 即便开启系统用户也不能登录
      write_enable=yes 本地用户可以上传,删除目录或文件
      anon_upload_enable=no 全局设置匿名用户是否可以上传文件
      anon_mkdir_write_enable=no 全局设置匿名用户不能创建目录
      guest_enable=yes
      guest_username=vuser
      pam_service_name=vsftpd.mysql
    6 可以设置不同的用户有不同的权限
      1 在/etc/vsftpd/vsftpd.conf 文件添加
        user_config_dir=/etc/vsftpd/vuser_config/
      2 创建vuser_config 文件夹
        mkdir /etc/vsftpd/vuser_config/
        touch tom jerry
      3 在每个文件中自己定义权限访问控制
        anon_upload_enable=yes|not允许匿名用户上传文件
        anon_mkdir_write_enable=yes|no 具有创建文件夹的权限
        anon_other_write_enable=yes|no 具有删除权限
    

    2 NFS

    NFS: Network File System,在linux的内核实现

    RPC: Remote Process Call 远程过程调用,函数调用
      一部分功能由本地完成,一部分功能由远程主机完成,返回给本机
    
    CentOS 6 NFS的配置
      NFS的进程:
        nfsd nfs的守护进程,监听在2049/tcp,2049/dup
        mount 验证远程的有效性 随机端口
        idmapd 用户的请求 文件 属主 属组的映射关系 也监听在随机端口上
        portmapper 需要启动 不是nfs自带的,系统所有,报告rpc的信息 111/tcp,111/udp,可以使用此服务,进行端口的访问
       quota 磁盘配额的相关进程
       注意可以在nfs的配置文件设置nfs的一些工作特性/etc/sysconfig/nfs
    
    CentOS6和CentOS7
      CentOS6 的安装
        a yum install nfs-utils
        b 编辑/etc/exports 文件
        c 启动服务,需要先启动rpcbind,然后再启动nfs
           注意,在/etc/sysconfig/network中需要有NETWORKING=yes的配置,否则nfs不能启动
      CentOS7 的安装
        a yum install nfs-server
        b 编辑/etc/exports 文件
        c 直接可以启动nfs,因为systemd的特性,会将依赖到的服务启动
    
    /etc/exports 的格式:
      directory  client1(option...) client2(option)
      client: IP FQDN Domain Network
      options
       secure 安全
        rw 读写
        async 异步
        root_squash 挤压管理员权限
        no_root_squash 不挤压管理员的权限
        all_squash 全部挤压
        no_all_squash 全部不压榨
        anonuid=id_num 将用户压榨成某个用户
        anongid=id_num 将组压榨成某个组
        anonuid和anongid 这两个匿名uid和gid修改特定用户和组账号
        fsid: 定义根
        crossmnt: 允许跨主机挂载
    
    showmount 查看nfs文件共享的工具
      -e host 查看对应主机的所有共享的nfs文件系统  本机或非本机都可以使用
      -a host 查看哪个文件系统被别人挂载
      -d host 查看哪个文件系统被共享
    exports
      -a 所有
      -r 重新读取配置文件
      -u 关闭所有的共享
    

    3 samba

    smb Service Message Blocl 基于CIFS(common internet file system)协议
    监听端口 137/udp 138/udp 139/tcp 445/tcp
    
    1 安装 yum install samba
    2 启动脚本/etc/init.d/nmb(名称解析),/etc/init.d/smb(smaba的主服务)
    3 编辑配置文件/etc/samba/smb.conf
    4 添加系统账号到samba的账号 smbpasswd -a username
    
    smbclient的客户端工具:
      smbclient -L IP
      smbclient -L IP -U username%password
    基于挂载的方式访问
      mount -t cifs //server/share_name /mount_point -o username=USERNAME,password=PASSWORD
    

    相关文章

      网友评论

          本文标题:网络文件共享

          本文链接:https://www.haomeiwen.com/subject/gpvypxtx.html