总结:网络文件共享服务:FTP、NFS、SAMBA

  • DAS:直接存储(本地硬盘)
  • NAS:网络连接存储(局域网)
    • FTP
    • NFS
    • SAMBA
  • SAN:存储区域网络(跨网络)

在这里插入图片描述

FTP协议

  • 双通道协议:数据和命令连接
  • 两种模式:服务器角度
    • 主动(PORT style):服务器主动连接
      • 命令(控制):客户端:随机port —> 服务器:tcp21
      • 数据:客户端:随机port <—服务器:tcp20
    • 被动(PASV style):客户端主动连接
      • 命令(控制):客户端:随机port —> 服务器:tcp21
      • 数据:客户端:随机port —>服务器:随机port

主动模式下,服务器开启20端口主动连接客户端
被动模式下,客户端连接服务器,服务器开启一个随机端口响应,通过命令控制客户端和服务器可以知道开启的随机端口

[root@Web /var/www/html/loges]# ftp 192.168.8.7
Name (192.168.8.7:root): ftp             #匿名用户
Password:                                #密码随便输
ftp> ls
227 Entering Passive Mode (192,168,8,7,141,130).    #被动模式,服务器数据端口为141*256+130

  • FTP服务器
    • vsftpd:Very Secure FTP Daemon,CentOS默认FTP服务器
  • 客户端软件
    • ftp -A ftpserver port -A主动模式 –p 被动模式
    • lftp –u username ftpserver
  • 状态码:
    • 1XX:信息 125:数据连接打开
    • 2XX:成功类状态 200:命令OK 230:登录成功
    • 3XX:补充类 331:用户名OK
    • 4XX:客户端错误 425:不能打开数据连接
    • 5XX:服务器错误 530:不能登录
  • 用户认证:
    • 匿名用户:ftp,anonymous,对应Linux用户ftp
    • 系统用户:Linux用户,用户/etc/passwd,密码/etc/shadow
    • 虚拟用户:特定服务的专用用户,独立的用户/密码文件
  • nsswitch:network service switch名称解析框架
    • pam:pluggable authentication module 用户认证
    • /lib64/security /etc/pam.d/ /etc/pam.conf

vsftpd

  • 用户认证配置文件:/etc/pam.d/vsftpd
  • 服务脚本:
    /usr/lib/systemd/system/vsftpd.service
    /etc/rc.d/init.d/vsftpd
  • 配置文件:/etc/vsftpd/vsftpd.conf
    man 5 vsftpd.conf
    格式:option=value
    注意:= 前后不要有空格
  • 匿名用户(映射为系统用户ftp )共享文件位置:/var/ftp
  • 系统用户共享文件位置:用户家目录
  • 虚拟用户共享文件位置:为其映射的系统用户的家目录
[root@rsyslog ~]# rpm -ql vsftpd 
/etc/logrotate.d/vsftpd             日志滚动
/etc/pam.d/vsftpd                   用户认证
/etc/vsftpd/vsftpd.conf              配置文件
/usr/lib/systemd/system/vsftpd.service    	      服务
/usr/sbin/vsftpd                           	      命令
/var/ftp                                         文件路径
/var/ftp/pub                             	     共享目录

1、命令端口

[root@rsyslog ~]# vim /etc/vsftpd/vsftpd.conf
listen_port=21

2、主动模式端口

[root@rsyslog ~]# vim /etc/vsftpd/vsftpd.conf
connect_from_port_20=YES                               主动模式端口为20
ftp_data_port=20                                       指定主动模式的端口(没有这条时默认为20)

3、被动模式端口范围

[root@rsyslog ~]# vim /etc/vsftpd/vsftpd.conf
linux                                    客户端默认使用被动模式
windows                                  客户端默认使用主动模式
pasv_min_port=6000                       0为随机分配
pasv_max_port=6010                       范围指定需大一些
匿名用户

1、启用匿名用户

[root@rsyslog ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES                 支持匿名用户

2、centos登录时不输入口令

[root@rsyslog ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES                       支持匿名用户
no_anon_password=YES(默认NO)               匿名用户略过口令检查

3、匿名上传文件及目录

[root@rsyslog ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES                 支持匿名用户
anon_upload_enable=YES               匿名上传,注意:文件系统权限
anon_mkdir_write_enable=YES          匿名建目录

只能上传不能下载

  • 默认只能下载所有组全有读权限的文件
    • 一、修改下载读权限的配置为所有权限都可下载
    • 二、上传文件默认都有读权限

4、实现下载(一)

[root@rsyslog ~]# vim /etc/vsftpd/vsftpd.conf
anon_world_readable_only=no          (默认YES)只能下载全部读的文件

5、实现下载(二)
默认上传文件权限600

anon_umask=0222                     指定匿名上传文件的umask,默认077

以上配置不能删除及修改文件

6、删除和修改上传的文件

anon_other_write_enable=YES         可删除和修改上传的文件

7、指定上传文件的默认的所有者和权限

chown_uploads=YES(默认NO)
chown_username=wang
chown_upload_mode=0644
系统用户

1、允许系统用户登录

local_enable=YES 是否允许linux用户登录
write_enable=YES 允许linux用户上传文件
local_umask=022 指定系统用户上传文件的默认权限

2、允许系统用户上传文件

local_enable=YES                              是否允许linux用户登录
write_enable=YES                              允许linux用户上传文件

默认上传到家目录

3、指定上传文件的权限

local_enable=YES                              是否允许linux用户登录
write_enable=YES                              允许linux用户上传文件
local_umask=022                               指定系统用户上传文件的默认权限

4、所有系统用户上传到指定目录

guest_enable=YES                          所有系统用户都映射成guest用户
guest_username=ftp                        配合上面选项才生效,指定guest用户
local_root=/ftproot                       guest用户登录所在目录(没有时为guest家目录)

系统默认当根目录有写权限时拒绝登录,指定目录是要注意该目录权限
当不映射到guest用户时,可以配置只能登录自己的家目录,不能访问其他

5、禁锢所有系统用户在家目录中

chroot_local_user=YES(默认NO,不禁锢)      禁锢系统用户

6、禁锢时,部分用户可以列外
禁锢用户时实际是系统认为的根目录有写权限

chroot_local_user=YES(默认NO,不禁锢)      禁锢系统用户
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

当chroot_local_user=YES时,则chroot_list中用户不禁锢
当chroot_local_user=NO时,则chroot_list中用户禁锢

启用禁锢,magedu例外,magedu能够登录及切换到其他目录,wang用户登录拒绝,是因为有写权限

[root@rsyslog ~]# vim /etc/vsftpd/vsftpd.conf
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list 

[root@rsyslog ~]# vim /etc/vsftpd/chroot_list 
magedu

[root@Web /var/www/html/loges]# ftp 192.168.8.7
Name (192.168.8.7:root): wang
Password:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()       登录报错

[root@rsyslog ~]# chmod 500 /home/wang         修改权限

[root@Web /var/www/html/loges]# ftp 192.168.8.7
Name (192.168.8.7:root): wang
ftp> cd /etc
550 Failed to change directory.                       不能切换目录
 
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

chroot_local_user=YES去掉时magedu用户不能登录,改变家目录权限后可以

日志

1、wu-ftp日志:默认启用

xferlog_enable=YES (默认) 启用记录上传下载日志
xferlog_std_format=YES (默认) 使用wu-ftp日志格式
xferlog_file=/var/log/xferlog (默认)可自动生成

2、vsftpd日志:默认不启用

dual_log_enable=YES 使用vsftpd日志格式,默认不启用
vsftpd_log_file=/var/log/vsftpd.log(默认路径)可自动生成     #可不写
提示信息

1、登录提示信息

ftpd_banner=“welcome to mage ftp server"
banner_file=/etc/vsftpd/ftpbanner.txt

banner_file优先级更高

2、目录访问提示信息

dirmessage_enable=YES (默认)
message_file=.message(默认) 信息存放在指定目录下.message

.message放在共享目录文件下,对该文件说明

用户控制

1、使用pam(Pluggable Authentication Modules)完成用户认证

[root@CentOS7 ~]# vim /etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd

[root@CentOS7 ~]# vim /etc/pam.d/vsftpd
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
####/etc/vsftpd/ftpusers的用户拒绝登录当sense=allow时,该文件用户允许登录,其他用户不能登录


[root@CentOS7 ~]# cat /etc/vsftpd/ftpusers
# Users that are not allowed to login via ftp    默认文件中用户拒绝登录
root
bin
daemon

2、是否启用控制用户登录的列表文件

userlist_enable=YES 默认有此设置
userlist_deny=YES(默认值) 黑名单,不提示口令,NO为白名单
userlist_file=/etc/vsftpd/users_list 此为默认值

userlist_enable=YES时users_list拒绝登录,但当userlist_deny=NO时只能是users_list登录

3、vsftpd服务指定用户身份运行

nopriv_user=nobody (默认值)   指定第二层nobody用户

[root@CentOS7 ~]# ps auxf

root       2185  0.0  0.0  53288   704 ?        Ss   03:17   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
nobody     2557  0.0  0.1  55412  1488 ?        Ss   03:38   0:00  \_ /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
ftp        2559  0.0  0.1  57520  1452 ?        S    03:38   0:00      \_ /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

4、连接数限制

max_clients=0     最大并发连接数
max_per_ip=0      每个IP同时发起的最大连接数(一般设置为1或2)     

5、传输速率:字节/秒

anon_max_rate=0 匿名用户的最大传输速率
local_max_rate=0 本地用户的最大传输速率

6、连接时间:秒为单位

connect_timeout=60 主动模式数据连接超时时长
accept_timeout=60 被动模式数据连接超时时长
data_connection_timeout=300 数据连接无数据输超时时长
idle_session_timeout=60 无命令操作超时时长

7、优先以文本方式传输

ascii_upload_enable=YES
ascii_download_enable=YES

默认以二进制传输(不需更改,文本传输时,win端容易出现问题)

实现基于SSL的FTPS

实现SSL需要自签名证书,进入/etc/pki/tls/certs/目录使用make 跟带.key .csr .crt .pem后缀的文件可以生成各种该后缀的文件,因为Makefile脚本

创建自签名证书

[root@CentOS7 ~]# cd /etc/pki/tls/certs/
[root@CentOS7 /etc/pki/tls/certs]# make vsftpd.pem
[root@CentOS7 /etc/pki/tls/certs]# openssl x509 -in vsftpd.pem -noout -text     #查看内容

配置vsftpd服务支持SSL:/etc/vsftpd/vsftpd.conf

[root@CentOS7 ~]# /etc/vsftpd/vsftpd.conf
ssl_enable=YES                                  启用SSL
allow_anon_ssl=NO                               匿名不支持SSL
force_local_logins_ssl=YES                      本地用户登录加密
force_local_data_ssl=YES                        本地用户数据传输加密
rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem   
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值