在配置安装vsftpd过程中,我遇到了很多坑?查了上百篇博客,才把这些坑一一填满。这里记录是为了方便后来者查阅,我也是个小白。有问题请不要客气,直接喷就是了!
vsftpd 就是very secure FTP 的意思
快速版我会再写一篇博客。这里我们还是来讨论到底怎么才能弄清如何配置ftp?
首先配置ftp服务器中会遇到几个坑?
其实我们只需要清楚几个核心,就可以快速的配置出自己的ftp服务器了
第一个是ftp服务器本身
第二个是用户
第三个是linux主机
第四个是防火墙
第五个是selinux selinux我这里环境禁用了。我们暂且不谈
那么说回第一个。ftp服务器本身。
如果需要安装ftp服务器。他的主要涉及文件就是
/etc/vsftpd/vsftpd.conf
/etc/pam.d/vsftpd
第一个是主要配置文件。我们的本地和匿名只要用到他就够了。
如果我们需要安装ftp服务器。我们需要先检查linux主机是否安装过ftp服务器
因此 我们使用rpm命令查找ftp
rpm -qa | grep ftp
如果没有任何返回我们即可安装ftp了 使用yum -y install vsftpd 安装
成功安装以后。我们便可以编辑vsftpd.conf主配置文件了
vsftpd 允许三种不同的方式配置 分别是匿名 本地 虚拟账户
匿名的话是最简单的
什么都不需要动。
在改动配置文件,请先使用mv cp 备份文件
如果你使用vi 打开vsftpd.conf 感觉有点乱,
使用grep "#" -v vsftpd.conf_bak >vsftpd.conf
接下来就直接重启systemctl restart vsftpd 就可以了
不要使用fileZilla连接,filezilla作为小白来讲,filezilla加太多东西了
使用从cmd连接
其中 ftp ipAdress
cd changeDirectory put上传 get 下载
你在那个地方打开cmd,你的文件就下载在哪里,你的文件上传也是如此, 更直接可以使用绝对路径
如果打不开,就是防火墙开了,或者selinx开启了
基本上匿名是什么都不要改动,开箱即用
如果返回错误需要检查防火墙是否开启。
firewall-cmd --add-service=ftp --permanent //永久开放ftp服务
你还可以尝试使用systemctl stop firewalld
关闭防火墙之后查看是否可以登录
而本地用户的配置则只需要更改动配置即可
anonymous_enable=NO
local_enable=YES
local_root=/var/ftp/pub
write_enable=YES
local_umask=022
file_open_mode=0755
chroot_local_user=YES
pam_service_name=vsftpd
userlist_enable=NO
userlist_deny=NO
chroot_local_user=YES
allow_writeable_chroot=YES
其中需要关注的配置项为local_root,local_root限制本地用户登录后的家目录
此外pam_service_name,在本地用户中,会使用pam认证,因此需要保证你的pam文件是正确的
如果出现
530 login inCorrect
那么有可能就是pam文件不正确。
当然也有可能是家目录的权限不正确
可以使用tail -f /var/log/secure 查看错误的日志文件
一般都可以查找出来
其他的可以自行百度
对于虚拟用户的配置
首先需要安装db文件,他的目的就是用来加密我们的虚拟账户中的账户和密码
因此使用 yum install db*
之后新建我们虚拟账户文件
即:
一行账户abc
一行密码123456
对虚拟账户文件进行加密即vuser.list
使用db加密
db_load -T -t hash -f vuser.list vuser.db
此时完成加密,生成db文件
对db文件进行保护,因此
chmod 600 vuser.db
这个时候我们新建ftp的系统账户,而并不是虚拟账户
useradd -d /var/ftp/pub -s /sbin/nologin tom
-d 指定家目录 -s 限制此账户登录系统,仅用作ftp虚拟账户映射
此时对该家目录需要让其他用户可以访问
chmod -RF 755 /var/ftp/pub
使用passwd user 更改密码
最后,虚拟账户也使用pam认证
因此我们需要对pam进行修改
备份之后,删除原内容后添加上以下两句
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser //此句用于检查用户密码,数据库文件不要写后缀.db
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser //此句用于检查用户是否在有效期内,数据库支持虚拟用户的PAM认证文件。
这之后更改主配置文件即vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
guest_enable=YES
guest_username=tom
pam_service_name=vsftpd
user_config_dir=/etc/vsftpd/vuser_list
pasv_enable=YES
其中我么们需要关注的就是guest_username=tom
这个指定的账户表示的就是我们登录虚拟账户以后使用就是tom的家目录
pam_service_name 表示的是pam认证的文件
他位于/etc/pam.d/vsfptd下
user_config_dir 这个就是我们虚拟用户的配置文件所在的文件夹
这是一个存放我们虚拟用户配置文件的文件夹
因此,我们如果要配置我们虚拟账户的权限还需要在这个文件夹中生成和虚拟账户同名的配置文件
配置文件为:abc 文件位置为 /etc/vsftpd/vuser_list/abc
其中配置项为:
local_root=/var/ftp/pub //虚拟账号的家目录
anonymous_enable=NO
local_umask=022
anon_upload_enable=YES //上传权限
anon_mkdir_write_enable //创建文件和目录的权限
anon_other_write_enable //删除文件和目录的权限
anon_world_readable_only=YES //当文件的“其他人”有读权限的时候可以下载
download_enable=YES //下载权限
之后重启vsftpd,基本就可以实现了。
参考文档:
https://www.sohu.com/a/280848734_100155594 https://blog.51cto.com/yuanbin/108262