网络文件共享

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容