CentOS搭建FTP
一、安装VSFTP
查看是否已经安装vsftpd
1.rpm -q vsftpd
2.vsftpd -v
yum安装vsftpd
yum -y install vsftpd
安装完成后,查看位置
whereis vsftpd
直接启动VSFTP服务
systemctl start vsftpd.service
查看是否启动成功
netstat -npal|grep vsftpd
关闭SELinux限制,添加防火墙白名单
①设置关闭SELinux对ftp的限制
getsebool -a | grep ftp
setsebool -P ftpd_full_access on
②将ftp加入防火墙白名单
firewall-cmd --permanent --zone=public --add-service=ftp
firewall-cmd --reload
查看防火墙状态:firewall-cmd --list-all
二、配置修改
1.修改配置文件
[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# vim vsftpd.conf
不允许匿名访问(不登录默认访问某目录/var/ftp)
anonymous_enable=NO
允许ascii文件上传和下载
ascii_upload_enable=YES
ascii_download_enable=YES
将用户限制在为其配置的主目录
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
三、匿名登录
如果设置anonymous_enable=YES 表示可以匿名登陆,保存后重新启动vsftp服务systemctl restart vsftpd.service),即可以匿名登陆ftp服务(ftp ipaddr),密码是空,对应目录是/var/ftp,如果你在配置里面配置了anonymous_enable=NO,匿名就无法登录
四、多用户配置
1.首先需要在vsftp.conf添加如下配置
#设置启用虚拟用户功能
guest_enable=YES
#制定宿主用户名(我们后续需要为我们的系统增加该用户)
guest_username=ftpuser
#制定虚拟用户配置文件放置文件夹(需要我们自己建立)
user_config_dir=/etc/vsftpd/vuser_conf
#允许写
allow_writeable_chroot=YES
2.创建宿主用户
#创建宿主主文件夹
cd /home
mkdir vsftpd
# 创建用户 ftpuser 指定 `/home/vsftpd` 目录
# -s /sbin/nologin ftpuser 表示不允许该用户通过命令行方式登录
useradd -g root -M -d /home/vsftpd -s /sbin/nologin ftpuser
# 设置用户 ftpuser 的密码
passwd ftpuser
# 把 /home/vsftpd 的所有权给ftpuser.root
chown -R ftpuser.root /home/vsftpd
3.创建虚拟用户信息文件
vsftp目录下
cd /etc/vsftpd/
创建用户信息文件
touch vuser_passwd
vim vuser_passwd
#编辑如下内容,创建虚拟账户信息,奇数行为用户名,偶数行为密码
ftp-user1
123456
4.生成虚拟用户数据文件
db_load -T -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db
chmod 600 /etc/vsftpd/vuser_passwd.db
在当前文件夹下生成一个vuser_passwd.db文件
5.编辑pam认证文件
vim /etc/pam.d/vsftpd
将其他都注释掉,添加下面两行;
注:db=/etc/vsftpd/vuser_passwd 中的vuser_passwd 是你生成的虚拟用户的db文件,这里不要加扩展名。
系统为32位:
auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd account
required pam_userdb.so db=/etc/vsftpd/vuser_passwd
系统为64位:
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
查看系统位数
getconf LONG_BIT
6.为虚拟账户创建访问根目录,要在宿主用户下
# 下面是目录结构
/home/vsftpd
├──ftp-user1
│ └── files
└──ftp-user2
└──files
修改权限
chmod 777 ftp-user1
7.创建虚拟用户配置目录
cd /etc/vsftpd/
#创建上述配置文件中配置的虚拟用户文件夹,一定要对应
mkdir vuser_conf
cd vuser_conf
#创建虚拟用户配置文件,文件名称要与虚拟用户名称相同
#这里我们配置两个虚拟用户就创建两个配置文件
touch ftp-user1 ftp-user2
#编辑两个文件,加入以下信息(注意加粗部分要替换为你虚拟账户要访问的根目录名称)
local_root=/home/vsftpd/ ftp-user1
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
8.创建chroot_list
cd /etc/vsftpd
#创建使当前配置的虚拟用户允许访问
[root@localhost vsftpd]# touch chroot_list
[root@localhost vsftpd]# vim chroot_list
#写入虚拟用户名
ftp-user1
9.重启VSFTP服务
systemctl restart vsftpd.service
问题汇总:
1、解决报错 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
添加配置
allow_writeable_chroot=YES # 如果启用了限定用户在其主目录下需要添加这个配置。
2、登录报错530,日志显示
pam_unix(vsftpd:auth): check pass; user unknown
检查一下/etc/pam.d/vsftpd文件配置,一般是pam认证文件配置错误。
————————————————
版权声明:本文为CSDN博主「小明同鞋」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sinat_30802291/article/details/81706152