最近准备测试一个小程序,需要一个ftp ,之前都不是自己搭建的,直接使用没啥问题,最近疫情在家,连不上了,准备自己跑一个,原本想就是一句话的事情,没想到折腾了俩小时..各种粗心大意导致。
linux - centos 7.6
vsftp
systemctl stop vsftpd
rpm -aq vsftpd
rpm -e vsftpd-3.0.2-29.el7_9.x86_64
# 删除相关的目录及配置
rm -rf /etc/vsftpd
yum -y install vsftpd
systemctl enable vsftpd
systemctl start vsftpd
# 添加相关的用户
useradd -d /mnt/ftp ftptest
passwd ftptest #设置密码
# 路径 /etc/vsftpd
whereis vsftpd
# 禁止匿名登录,把yes 修改为NO即可
anonymous_enable=NO
#限制主目录
chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
# 此处可以参考: https://blog.csdn.net/bluishglc/article/details/42398811
# 设定被动模式及端口
allow_writeable_chroot=YES
max_clients=300
user_config_dir=/etc/vsftpd/userconfig
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
同时,还要将服务器的相关端口防火墙打开,如果是云服务器就需要修改安全组。
这样就可以远程访问了,在配置的时候出现了两个问题:
opps : priv_socket_get_result : 具体怎么处理的不太清楚,主要是模式及端口的问题
连接成功但是无法进入目录 : 这个主要是local_root 配置问题,注意 user_config_dir=/etc/vsftpd/userconfig
,在该目录下配置对应用户的数据,如下
/etc/vsftpd/userconfig/ftptest
local_root=/mnt/ftp/ftptest
之后就可以正常连接21端口访问了。
应该是 selinux 未关闭问题。
临时关闭: setenforce 0
永久关闭:修改配置文件并重启
usermod -s /bin/false ftpadmin
关闭后如果不行的话检查下/etc/shells
是否存在该命令,如果不存在则增加。
转载请注明出处: https://chrunlee.cn/article/linux-vsftpd-warn.html