centos7上使用vsftpd
安装配置
安装 vsftpd
1
2 | yum -y install vsftpd
vsftpd -v
|
创建用户
1
2
3
4
5 | # 添加用户 vsftp
# -d:指定用户主目录
# -s:指定用户所用的shell,此处为/sbin/nologin,表示不登录
shell> useradd vsftp -d /home/vsftp -s /sbin/nologin
shell> passwd vsftp
|
修改配置
vim /etc/vsftpd/vsftpd.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 | anonymous_enable=NO # 是否允许匿名访问
local_enable=YES # 是否允许使用本地帐户进行 FTP 用户登录验证
write_enable=YES
local_umask=022 # 设置本地用户默认文件掩码022
dirmessage_enable=YES
xferlog_enable=YES # 启用上传和下载的日志功能,默认开启。
connect_from_port_20=YES
xferlog_std_format=YES
data_connection_timeout=12000
ftpd_banner=Welcome to my FTP service.
chroot_local_user=YES # 是否限定用户在其主目录下(NO 表示允许切换到上级目录)
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=NO
tcp_wrappers=YES
allow_writeable_chroot=YES # 如果启用了限定用户在其主目录下需要添加这个配置,解决报错 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
|
如果无法连接,可能被firewall挡住了
- 在
vsftpd.conf
添加
1
2
3
4 | pasv_enable=Yes
pasv_max_port=20100
pasv_min_port=20090
pasv_promiscuous=YES
|
- 在防火墙开放 20090-20100 端口
ftp vsftpd 530 login incorrect 解决
检查 /etc/pam.d/vsftpd
vim /etc/pam.d/vsftpd
注释掉 #auth required pam_shells.so
启动
1 | systemctl start vsftpd.service
|
补充:安全设置
SELinux
1
2
3
4
5
6 | # 查看当前配置
shell> getsebool -a |grep ftp
# 设置 ftp 可以访问 home 目录
shell> setsebool -P ftp_home_dir=1
# 设置 ftp 用户可以有所有权限
shell> setsebool -P allow_ftpd_full_access=1
|
或者关闭 SELinux
设置防火墙
1
2
3
4 | # 允许 ftp 服务
shell> firewall-cmd --permanent --zone=public --add-service=ftp
# 重新载入配置
shell> firewall-cmd --reload
|
访问FTP
包含用户名密码的URL格式
1 | ftp://user_name:password@hostname/file_path
|