30. 文件共享服务

Date:

2018-09-02

常见的文件共享服务有ftp,nfs,samba这三种,其中ftp是一种应用层的服务,nfs是基于 内核来实现的网络文件共享服务,samba是在linux上实现cifs协议来解决扩平台的文件共享 服务。

网络集中式存储模型
DAS:

直接附加存储,也就是直接附加在主板上的存储设备。

NAS:

网络附加存储,通过网络文件服务的形式来提供文件共享存储。

SAN:

存储区域网络,通过块儿级别协议来实现将数据存储在远程主机上的共享存储模式

一些区别:

nas是文件系统级别的,san是块级别的,nas工作在应用层空间上,san工作在内核模式的, nas拿过来就是文件系统,直接可以存储,而san拿过来相当一块新的磁盘,自己格式化才能存储。

30.1. ftp

ftp数据传输模式:

主动模式:
  1. 客户端先随机一个端口如5000去连接服务器的21端口来建立命令传输连接

  2. 服务器以20端口来主动连接客户端的5001(5000+1)端口,来进行数据传输

被动模式:
  1. 客户端先随机一个端口如5000去连接服务器的21端口来建立命令传输连接

  2. 服务器通过命令传输连接告诉客户端自己的监听端口如6000

  3. 服务器就以5001(5000+1)去连接服务器的6000端口来进行数据传输

提供ftp的软件:
  • wu-ftpd

  • proftpd

  • pureftp

  • vsftp

  • ServU

客户端工具:
  • ftp

  • lftp

  • lftpget

  • wget

  • curl

  • filezilla

  • gftp

  • flashfxp

  • cuteftp

ftp用户分类:

实体账号:

取到的权限比较完整

匿名用户:

取到的权限很小,通常只是一些公共下载资源

30.1.1. vsftpd的安装

1[root@centos-155 ~]# yum install vsftpd

30.1.2. 常见配置项

 11、 匿名用户的配置
 2    anonymouns_enable=YES 是否启用匿名
 3    anon_upload_enable=YES
 4    anon_mkdir_write_enable=YES
 5    anon_other_write_enable=YES
 6
 72、 系统用户的配置
 8    local_enable=YES
 9    write_enable=YES
10    local_umask=022
113、 禁锢所有的本地用户访问自己的家目录
12    chroot_local_user=YES
134、 禁锢文件中指定的用户在其家目录
14    chroot_list_enable=YES
15    chroot_list_file=/etc/vsftpd/chroot_list
165、 日志
17    xferlog_enable=YES
18    xferlog_std_format=YES
19    xferlog_file=/var/log/xferlog
20    dual_log_enable=YES
21    vsftpd_log_file=/var/log/vsftpd.log
226、 改变上传文件的属主
23    chown_uploads=YES
24    chown_usernmae=root
257、 vsftpd使用pam完整用户身份认证
26    pam_service_name=vsftpd
278、 是否启用控制用户登陆的列表
28    userlist_enable=YES
29    userlist_deny=YES
309、 连接限制
31    max_clients
32    max_per_ip
3310、传输速率
34    anon_max_rate
35    local_max_rate
3611、ssl
37    ssl_enable=YES
38    allow_anon_ssl=NO
39    force_local_data_ssl=YES
40    force_local_login_ssl=YES
41    ssl_tlsv1=YES
42    ssl_tlsv2=YES
43    ssl_tlsv3=YES
44    rsa_cert_file=/etc/vsftpd/vsftpd.pem
45
4612、其他相关设置
47    connect_from_port_20
48    listen_port
49    listen
50    pasv_enable=YES
51    connect_timeout=60
52    accept_timeout=60
53    data_connection_timeout=300
54    pasv_min_port
55    pasv_max_port
56    tcp_wrappers

30.1.3. 基于虚拟用户的vsftpd

主要步骤:
  1. 创建虚拟用户账户和密码文件,并使用db_load转化

  2. 创建本地账户,修改权限

  3. 添加pam文件

  4. 配置文件添加guest相关项目,pam_service_name,user_config_dir

  5. 创建user_config_dir目录,在目录下创建虚拟用户同名的文件,添加配置项

  6. 重启服务,测试。

详细步骤参考:

30.1.4. lftp

命令样例

 1# 直接输入用户密码和端口等详细信息的方式
 2[root@centos-155 virtualftp]# lftp -p 21 -u user1:user1 192.168.46.155
 3lftp user1@192.168.46.155:~> ls
 4drwxr-xr-x    3 1017     1020           15 Feb 12 08:34 pub
 5lftp user1@192.168.46.155:/> help
 6    !<shell-command>                     (commands)                           alias [<name> [<value>]]             attach [PID]                         bookmark [SUBCMD]
 7    cache [SUBCMD]                       cat [-b] <files>                     cd <rdir>                            chmod [OPTS] mode file...            close [-a]
 8    [re]cls [opts] [path/][pattern]      debug [<level>|off] [-o <file>]      du [options] <dirs>                  exit [<code>|bg]
 9    get [OPTS] <rfile> [-o <lfile>]      glob [OPTS] <cmd> <args>             help [<cmd>]                         history -w file|-r file|-c|-l [cnt]
10    jobs [-v] [<job_no...>]              kill all|<job_no>                    lcd <ldir>                           lftp [OPTS] <site>
11    ln [-s] <file1> <file2>              ls [<args>]                          mget [OPTS] <files>                  mirror [OPTS] [remote [local]]       mkdir [-p] <dirs>
12    module name [args]                   more <files>                         mput [OPTS] <files>                  mrm <files>                          mv <file1> <file2>
13    [re]nlist [<args>]                   open [OPTS] <site>                   pget [OPTS] <rfile> [-o <lfile>]     put [OPTS] <lfile> [-o <rfile>]      pwd [-p]
14    queue [OPTS] [<cmd>]                 quote <cmd>                          repeat [OPTS] [delay] [command]      rm [-r] [-f] <files>                 rmdir [-f] <dirs>
15    scache [<session_no>]                set [OPT] [<var> [<val>]]            site <site-cmd>                      source <file>
16    torrent [-O <dir>] <file|URL>...     user <user|URL> [<pass>]             wait [<jobno>]                       zcat <files>                         zmore <files>
17lftp user1@192.168.46.155:/> quit
18
19# 后输入用户和密码方式
20[root@centos-155 virtualftp]# lftp localhost
21lftp localhost:~> user user1
22Password:
23lftp user1@localhost:~> ls
24drwxr-xr-x    3 1017     1020           28 Feb 12 08:44 pub
25lftp user1@localhost:/> cd pub/
26lftp user1@localhost:/pub> ls
27drwx------    2 1017     1020            6 Feb 12 08:34 a
28-rw-r--r--    1 0        0               0 Feb 12 08:44 a.txt
29lftp user1@localhost:/pub> get a.txt

30.1.5. wget

wget是gpl许可的一个文件下载软件包,支持http,https,ftp协议,支持代理服务器和断点续传功能。

主要常用选项:
-r

递归下载

-b

后台下载

-m

镜像

-c

断点续传

-I

指定下载目录列表

-A

指定接受和拒绝下载列表

--proxy

代理

-t

重试次数

-nc

不覆盖原有的

-N

只下载新的文件

-nd

不进行目录结构创建

-x

强制创建目录结构

-nH

不继承主机主机目录结构

-P

设置目录前缀

30.2. nfs

nfs是network filesystem的缩写,能通过网络在不同主机之间彼此实现资源共享。

nfs是通过rpc调用来实现文件共享的,先启动rpc服务,在启动nfs服务,这样nfs的端口就被注册到 了rpc了,用户使用网络文件系统先通过rpc获取nfs的监听端口,然后在给监听的端口通信,来获取数据。

nfs的配置比较简单

 1[root@centos-155 ~]# vim /etc/exports
 2# 添加如下行
 3/data 192.168.46.7/24(rw,sync,no_root_squash)
 4
 5# 格式就是  数据 限定ip(选项)
 6#启动服务
 7[root@centos-155 ~]# systemctl restart rpcbind nfs
 8
 9#查看共享出来的信息
10[root@centos-155 ~]# showmount -e 192.168.46.155
11Export list for 192.168.46.155:
12/data/nfs 192.168.46.0/24
13# 创建目录
14[root@centos-155 ~]# mkdir /mnt/nfs
15[root@centos-155 ~]# mkdir /data/nfs
16# 挂载
17[root@centos-155 ~]# mount 192.168.46.155:/data/nfs /mnt/nfs
18
19# 开机自动挂载
20[root@centos-155 ~]# tail -n 1 /etc/mtab  >> /etc/fstab

一个简单的nfs配置就是这么简答,有些命令比较实用

export -ar   重新导入所有的文件系统
export -au   关闭导出的所有文件系统
export -u FS 关闭指定的文件系统

30.3. samba

samba是为window和linux之间共享文件而生的。

安装

1[root@centos-155 ~]# yum install samba

创建密码使用smbpasswd命令就可以了,不过要本地有这个用户。