文件传输协议(英文:File Transfer Protocol,缩写:FTP)是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。它属于网络传输协议的应用层。
1.设置内核配置
vim /etc/sysconfig/selinux
将selinux设置为disabled
重启生效
2.安装服务
服务端安装vsftpd
客户端安装lftp
服务端
systemctl start vsftpd
firewall-config ##打开图形,选择允许ftp服务
firewall-cmd --list-all ##查看火墙信息
此时火墙允许ftp工作
客户端
systemctl start lftp
ftp服务的基本信息
软件安装包: vsftpd
默认发布目录: /var/ftp
协议接口: 21/tcp
服务配置文件: /etc/vsftpd/vsftpd.conf
报错id解析:
500 ##文件系统权限过大 把写权限去掉
530 ##用户认证失败
550 ##服务本身功能未开放
553 ##本地文件系统权限过小
每次配置完文件后,重启vsftpd服务
<匿名用户登陆>
anonymous_enable=YES|NO #匿名用户是否可以登陆(第12行)
<匿名用户上传>
write_enable=YES (第19行)
anon_upload_enable=YES ##允许匿名用户上传,但是pub目录对其他用户的权限需要修改(第29行)
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub
<匿名用户家目录修改>
anon_root=/direcotry ##家目录改变后lftp进入到的路径改变(自己写入)
<匿名用户上传文件默认权限修改>
anon_umask=xxx(自己写入)
666-022=644
<匿名用户建立目录>
anon_mkdir_write_enable=YES|NO(自己写入)
<匿名用户下载>
anon_world_readable_only=YES|NO #设定参数值为NO表示匿名用户可以下载(自己写入)
<匿名用户删除>
anon_other_write_enable=YES|NO
<匿名用户使用的用户身份修改>
chown_uploads=YES
chown_username=student
uid变成了student用户的uid
<设定匿名用户上传文件的权限>
chown_upload_mode=0644(自己写入)
这条写入上面的匿名用户默认建立目录权限就失效了
<最大上传速率>
anon_max_rate=102400 ##单位为byte,102400为100k/s
<最大链接数>
max_clients=2 ##同时最多允许几个用户同时连接
注意:本地用户是指服务端拥有的用户
<本地用户登陆>
local_enable=YES|NO
<本地用户写权限限制>
write_enable=YES|NO
<本地用户家目录修改>
local_root=/directory
<限制本地用户浏览/目录>
所有用户被锁定到自己的家目录中
cd /这些命令不再生效
chroot_local_user=YES
chmod u-w /home/* ##去除家目录所有的写权限,否则会报500权限过大错误
用户黑白名单是针对根目录的
用户黑名单建立
chroot_local_user=NO
chroot_list_enable=YES
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 ##用户临时黑名单
用户白名单设定
vim /etc/vsftpd/vsftpd.conf
userlist_deny=NO
设定参数后/etc/vsftpd/user_list变成用户白名单,只在名单中出现的用户可以登陆ftp
ftp虚拟用户的设定 创建虚拟帐号身份
vim /etc/vsftpd/xuni ##文件名称任意,里面写入用户名加密码
dzh1
123
dzh2
123
dzh3
123
db_load -T -t hash -f /etc/vsftpd/xuni /etc/vsftpd/xuni.db
指定了选项-T,那么一定要追加子选项-t;子选项-t,追加在在-T选项后,用来指定转译载入的数据库类型。
-f 参数后面接包含用户名和密码的文本文件,文件的内容是:奇数行用户名、偶数行密码
hash就是使用hash码加密
db_load -T -t hash -f /etc/vsftpd/xuni xuni.db 前提就是在linux下配置好Vsftp环境确保db_load命令可以使用就是将用户文本信息文件转换为db数据库并使用hash加密。
vim /etc/pam.d/xunicheck ##文件名称任意
vim /etc/vsftpd/vsftpd.conf
pam_service_name=xunicheck ##/etc/pam.d/xunicheck
guest_enable=YES
虚拟帐号身份指定
guest_username=jsl ##以本地用户jsl的身份登陆
chmod u-w /home/jsl
虚拟帐号家目录独立设定
vim /etc/vsftpd/vsftpd.conf
local_root=/ftphome/$USER
虚拟帐号配置独立
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/userconf
mkdir -p /etc/vsftpd/userconf
vim /etc/vsftpd/userconf/ftpuser1
在此文件中设定配置文件中的所有参数,此文件的优先级高