1 Star 0 Fork 91

wudong / Linux学完就忘系列

forked from baoke / Linux学完就忘系列 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
53.文件共享服务、ftp、vsftp.md 5.51 KB
一键复制 编辑 原始数据 按行查看 历史
baoke 提交于 2019-09-16 18:05 . 53.文件共享服务、ftp、vsftp.md

IO:网络、存储

存储:
DAS:Direct Attached Storage
接口类型:"block"
设备:SATA,SAS,IDE,SCSI,USB;

NAS:Network Attached Storage
接口类型:"file"
协议:CIFS(samba),NFS(Network File System)
RPC:Remote Procedure Call

SAN:Storage Area Network
接口类型:"block"
协议:ISCSI(IP-SAN),FCSAN,FCoE,...

应用层:
ftp,...

文件服务:ftp,cifs/nfs

ftp:

ftp:file transfer protocol,文件传输协议;
两类连接:
命令连接:传输命令
数据连接:传输数据
两种模式:
主动模式:PORT
Server:20/tcp连接客户端的命令连接使用的端口向后的第一个可用端口;
被动模式:PASV
Server:打开一个随机端口,并等待客户端连接

PAM:Pluggable Authenticate Module
认证框架:库,高度模块化;

协议:C/S
Server:
Windows:Serv-U,IIS,Filezilla
开源:wuftpd,proftpd,pureftpd,vsftpd(Very Secure FTP daemon),...
Client:
Windows:ftp,Filezilla,CuteFTP,FlashFXP,...
开源:lftp,ftp,Filezilla,gftp,...

vsftpd

vsftpd is a Very Secure FTP daemon. It was written completely from scratch.

URL:
SCHEME://username:password@HOST:PORT/PATH/TO/FILE

路径映射:
用户家目录:每个用户的URL的'/'映射到当前用户的家目录;

vsftpd以ftp用户的身份运行进程,默认用户即为ftp用户,匿名用户的默认路径即ftp用户的家目录/var/ftp
ftp,anonymous

#查看默认用户
grep ^ftp /etc/passwd
yum install -y vsftpd
systemctl start vsftpd
#查看21端口
ss -tnlp
#配置文件权限访问权限
cd /etc/vsftpd/
cp vsftpd.conf{,.bak}

另起一台主机

#默认用户,默认没有密码,提示输入口径的话直接回车
lftp  192.168.147.153 -uftp
ls
#匿名用户登录
lftp  192.168.147.153 anonymous

示例:

cp /etc/issue /var/ftp/pub
cd /var/ftp/pub
#将属主属组改为ftp用户
chown ftp.ftp issue
ll


拥有Linux系统的权限并不代表就拥有了对ftp的操作的权限.还需额外配置vsftpd相关配置文件.
一个用户通过文件共享服务访问文件系统上的文件的生效权限为此二者的交集;

程序环境:
主程序:/usr/sbin/vsftpd
主配置文件:/etc/vsftpd/vsftpd.conf
数据根目录:/var/ftp
Systemd Unit File:/usr/lib/systemd/system/vsftpd.service

配置vsftpd:
用户类别:
匿名用户:anonymous-->ftp,/var/ftp
系统用户:至少禁止系统用户访问ftp服务,/etc/vsftpd/ftpusers,PAM(/etc/pam.d/vsftpd);
虚拟用户:非系统用户,用户账号非为可登录操作系统的用户账号(非/etc/passwd);

用户通过vsftpd服务访问到的默认路径,是用户自己的家目录;默认可以自己有权限访问的所有路径间切换;
禁锢用户于其家目录中;

配置文件:/etc/vsftpd/vsftpd.conf
directive value
注意:directive之前不能有多余字符;

匿名用户:
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_umask=077 匿名用户的权限掩码

示例,配置匿名用户:

cd /var/ftp 
mkdir upload 
chown ftp.ftp upload
cd /etc/vsftpd

配置vim vsftpd.conf:

#允许匿名用户上传
anon_upload_enable=YES
#允许匿名用户创建目录
anon_mkdir_write_enable=YES
#其他写操作权限,删除等
anon_other_write_enable=YES

重启服务:
systemctl restart vsftpd.service

登录ftp操作:

lftp 192.168.147.153 -uftp
cd upload/
#上传
put /etc/issue
#删除目录
rm -rf testdir/
#删除文件
rm issue

系统用户:(以下配置默认都开启)
local_enable=YES 是否允许本地用户访问ftp服务
write_enable=YES 是否允许本地用户拥有写权限,写权限包括上传、创建目录和其他任何权限
local_umask=022 用预设定本地用户创建文件的掩码,所以本地用户创建的文件应该是644,文件666-022=644

示例:

#创建用户和设置密码
useradd fedora
echo 123456 | passwd --stdin fedora

换台主机登录:

#登录
lftp 192.168.147.153 -u fedora
mkdir abc
cd abc
#上传
put /etc/issue  
#下载文件到/tmp目录下
get issue -o /tmp

辅助配置文件/etc/vsftpd/ftpusers;
列在此文件中的用户均禁止使用ftp服务;

chroot_local_user=YES
禁锢所有本地用户于其家目录;需要事先去除用户对家目录的写权限;

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
禁锢列表文件中存在的用户于其家目录中;需要事先去除用户对家目录的写权限;

传输日志:
xferlog_enable=YES
xferlog_file=/var/log/xferlog
xferlog_sdt_format=YES

守护进程的类型:
standalone:独立守护进程;由服务进程自行监听套接字,并接收用户访问请求;
transient:瞬时守护进程;由受托管方代为监听套接字,服务进程没有访问请求时不启动;当托管方收到访问请求时,才启动服务进程;
CentOS 6:xinetd独立守护进程,/etc/xinetd.d/
CentOS 7:由systemd代为监听;

控制可登陆vsftpd服务的用户列表:
userlist_enable=YES
启用/etc/vsftpd/user_list文件来控制可登陆用户;
userlist_deny=
YES:意味着此为黑名单;
NO:白名单;

上传下载速率(单位bytes):
annon_max_rate=0 匿名用户的上传下载速率
local_max_rate=0 本地用户的上传下载速率
0:为不限制

并发连接数限制:
max_clinets=2000 客户端最大连接数
max_per_ip=50 单ip的最大连接数

Shell
1
https://gitee.com/wudongmeng/linux.git
git@gitee.com:wudongmeng/linux.git
wudongmeng
linux
Linux学完就忘系列
master

搜索帮助