1.ftp的概念
FTP是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”,用于internet上的控制文件的双向传输同时它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而这些应用程序都遵守同一种协议以传输文件。VSFTP是一个基于GPL发布的类unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP从此名称可以看出来,编制者的初衷是代码的安全。
2.安装FTP
需要提前配置好yum源,如果没有可以参考之前的博客 rpm命令和yum仓库的搭建
yum install -y vsftpd
systemctl start vsftpd ##开启服务
systemctl enable vsftpd ##让服务开机自启动
systemctl stop firewalld ##关闭防火墙
systemctl disable firewalld ##防火墙开机不自启动
lftp ip ##可以登陆标示安装成功
3.vsftpd的文件位置
/var/ftp ##默认发布目录
/etc/vsftpd ##配置目录
/etc/vsftpd/vsftpd.conf ##配置文件
4.vsftpd服务的配置参数
报错信息:
500 ##文件系统权限过大服务不允许,/var/ftp权限不能为777
530 ##认证失败,密码错误
550 ##权限不够,服务本身不允许
553 ##本地文件系统对你不可写
1.匿名用户的设定
vim /etc/vsftpd/vsftpd.conf ##编辑配置文件
anonymous_enable=NO ##禁止匿名用户登录
systemctl restart vsftpd ##重启服务
<匿名用户上传>
vim /etc/vsftpd/vsftpd.conf
12 anonymous_enable=YES ##刚才禁止拉匿名用户登录 现在打开
19 write_enable=YES ##可写
29 anon_upload_enable=YES ##可以上传
systemctl restart vsftpd.service ##重启服务
chgrp ftp /var/ftp/pub/
chmod 775 /var/ftp/pub/
匿名用户家目录修改
vim /etc/vsftpd/vsftpd.conf
anon_root=/dream ##在配置文件中添加
systemctl restart vsftpd.service
mkdir /dream ##创建与刚才名字一致的目录
touch /dream/file ##在目录中写入数据
匿名用户权限修改
vim /etc/vsftpd/vsftpd.conf
30 #anon_root=/dream ##注释掉刚才的
31 ann_umask=022 ##这里给022,建立出来匿名用户的权限应该是777-111-022=644
systemctl restart vsftpd.service
匿名用户建立目录
vim /etc/vsftpd/vsftpd.conf
35 anon_mkdir_write_enable=YES ##yes打开 |NO关闭
systemctl restart vsftpd.service
匿名用户下载
vim /etc/vsftpd/vsftpd.conf
36 anon_world_readable_only=YES|NO ##设定参数值为no表示匿名用户可以下载
systemctl restart vsftpd.service
匿名用户删除
vim /etc/vsftpd/vsftpd.conf
37 anon_other_write_enable=YES
systemctl restart vsftpd.service
匿名用户使用身份的修改
vim /etc/vsftpd/vsftpd.conf
52 chown_uploads=YES ##打开后将会以chown_username设定的用户登陆
53 chown_username=student ##匿名用户指定的登陆用户
54 chown_upload_mode=0644 ##上传生成的文件权限(优先它的权限)
systemctl restart vsftpd.service
可以看出匿名用户以westos的身份登陆
最大上传速率的设定
vim /etc/vsftpd/vsftpd.conf
38 anon_max_rate=102400 ##设定上传最大速度为1024M
systemctl restart vsftpd.service
dd if=/dev/zero of=testfile bs=1M count=2000 ##划分一个swap分区2G大小
上传分区时速度会慢慢将下来 最终不会超过100KB
最大连接数
vim /etc/vsftpd/vsftpd.conf
39 max_clients=1
systemctl restart vsftpd.service
本地用户设定
local_enable=YES|NO ##本地用户登陆限制
write_enable=YES|NO ##本地用户写权限限制
本地用户家目录修改
17 local_root=/dream
本地用户上传文件权限
24 local_umask=022 ##先设置成022 后面改成000
限制本地用户浏览其他目录
108 chroot_local_user=YES
chmod u-w /home/* ##修改目录权限
用户黑白名单的建立
108 chroot_local_user=YES ###YES时为白名单只有名单中的用户能改变目录
109 chroot_list_enable=YES
111 chroot_list_file=/etc/vsftpd/chroot_list
用户白名单建立
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
<限制本地用户登陆>
vim /etc/vsftpd/ftpusers ##用户黑名单
vim /etc/vsftpd/user_list ##用户临时黑名单
用户白名单设定
userlist_deny=NO
/etc/vsftpd/user_list ##参数设定,此文件变成用户白名单,只在名单中出现的用户可以登陆ftp
<ftp虚拟用户的设定>
创建虚拟帐号身份)
vim /etc/vsftpd/redhat ##文件名称任意
ftpuser1
123
ftpuser2
123
ftpuser3
123
db_load -T -t hash -f /etc/vsftpd/redhat redhat.db
vim /etc/pam.d/redhat ##文件名称任意
account required pam_userdb.so db=/etc/vsftpd/redhat
auth required pam_userdb.so db=/etc/vsftpd/redhat
vim /etc/vsftpd/vsftpd.conf
pam_service_name=redhat 指定pam配置文件
guest_enable=YES 启用虚拟帐号支持
虚拟帐号身份指定)
guest_username=ftp 映射虚拟用户身份
chmod u-w /home/ftp
虚拟帐号家目录独立设定)
vim /etc/vsftpd/vsftpd.conf
local_root=/ftpuserhome/$USER 对虚拟用户默认末路进行设置
user_sub_token=$USER 安全认证
mkdir /ftpuserhome
chgrp ftpuser /ftpuserhome
chmod g+s /ftpuserhome
mkdir /ftpuserhome/ftpuser{1..3}
虚拟帐号配置独立)
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/userconf
mkdir -p /etc/vsftpd/userconf
vim /etc/vsftpd/userconf/ftpuser1
在此文件中设定配置文件中的所有参数,此文件的优先级高