CentOS 7上配置vsftpd服务器是一个相对简单但需要细致操作的过程,以下是详细的步骤和注意事项:
CentOS 7 vsftpd配置指南
1、安装vsftpd
安装软件包:确保系统更新到最新状态并安装vsftpd软件包,使用以下命令进行安装:
sudo yum install y vsftpd
启动服务:安装完成后,启动vsftpd服务并设置为开机自启:
sudo systemctl start vsftpd sudo systemctl enable vsftpd
2、配置vsftpd
备份原始配置文件(可选):在进行任何更改之前,建议先备份原始的vsftpd配置文件:
sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
编辑配置文件:使用文本编辑器打开vsftpd的配置文件并进行必要的修改:
sudo vi /etc/vsftpd/vsftpd.conf
关键配置项:
参数 | 说明 | |
anonymous_enable=NO | 禁用匿名登录 | |
local_enable=YES | 允许本地用户登录 | |
write_enable=YES | 允许FTP写入操作 | |
local_umask=022 | 设置文件的默认umask值 | |
dirmessage_enable=YES | 启用目录消息 | |
xferlog_enable=YES | 启用传输日志 | |
connect_from_port_20=YES | 使用端口20进行数据连接 | |
xferlog_std_format=YES | 使用标准传输日志格式 | |
chroot_local_user=YES | 将用户限制在其主目录内 | |
allow_writeable_chroot=YES | 允许在chroot环境中写入 | |
listen=YES | 监听IPv4地址 | |
listen_ipv6=NO | 禁用IPv6监听 | |
pam_service_name=vsftpd | 设置PAM服务名称 | |
userlist_enable=YES | 启用用户列表 | |
tcp_wrappers=YES | 启用TCP包装器 | |
userlist_deny=NO | 不拒绝用户列表中的用户 | |
userlist_file=/etc/vsftpd/user_list | 指定用户列表文件 | |
pasv_enable=YES | 启用被动模式(仅被动模式) | |
pasv_min_port=30010 | 设置被动模式的最小端口号(仅被动模式) | |
pasv_max_port=30015 | 设置被动模式的最大端口号(仅被动模式) | |
pasv_address={公网IP} | 设置被动模式下的服务器公网IP(仅被动模式) |
3、创建FTP用户和目录
添加FTP用户:创建一个新用户作为FTP账户:
sudo adduser ftpuser sudo passwd ftpuser
设置目录权限:为FTP用户创建目录并设置适当的权限:
sudo mkdir p /home/ftpuser/ftp sudo chown R ftpuser:ftpuser /home/ftpuser/ftp sudo chmod 755 /home/ftpuser/ftp
4、开放防火墙端口
使用firewalld:如果使用的是firewalld,执行以下命令开放相关端口:
sudo firewallcmd permanent addport=21/tcp sudo firewallcmd permanent addservice=ftp sudo firewallcmd reload
使用iptables:如果使用的是iptables,执行以下命令:
sudo iptables A INPUT p tcp dport 20 j ACCEPT sudo iptables A INPUT p tcp dport 21 j ACCEPT
5、问题排查
检查SELinux状态:确保SELinux设置允许FTP服务的完全访问权限:
sudo setsebool P ftpd_full_access on sudo setsebool P tftp_home_dir on
查看FTP服务状态:确认FTP服务正在运行并且没有错误:
sudo systemctl status vsftpd
日志检查:如果遇到连接问题,可以检查vsftpd的日志:
sudo journalctl u vsftpd f
FAQs(常见问题解答)
1、为什么无法通过SSH登录FTP用户?
原因:可能由于配置了/sbin/nologin
作为FTP用户的Shell,导致该用户无法通过SSH登录。
解决方法:可以将/sbin/nologin
添加到/etc/shells
文件中,或者注释掉/etc/pam.d/vsftpd
文件中的相关行:
#auth required pam_shells.so
重启服务:修改后,重启vsftpd服务使更改生效:
sudo systemctl restart vsftpd
2、为什么FTP用户被拒绝登录?
原因:可能是由于用户未被列入/etc/vsftpd/user_list
文件,或被列入了/etc/vsftpd/ftpusers
文件中。
解决方法:确保FTP用户被正确添加到/etc/vsftpd/user_list
文件中,并未被列入/etc/vsftpd/ftpusers
文件中,然后重启vsftpd服务:
sudo systemctl restart vsftpd