创建ftp用户组
groupadd ftp
创建FTP用户
假设FTP的工作目录是 /data/ftp
useradd -s /sbin/nologin -d /data/ftp -g ftp ftpuser
passwd ftpuser
输入密码
安装并配置vsftp
rpm -qa vsftpd #没有返回说明vsftpd未安装;
在配置好yum的前提下,安装vsftpd服务。注意前提:服务器可以上外网。
yum -y install vsftpd ftp lftp
备份配置文件
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
创建vsftpd.conf文件
vim /etc/vsftpd/vsftpd.conf
把下面内容添加到/etc/vsftpd/vsftpd.conf文件,并保存退出.
注意:复制粘贴的时候检查文件最前面的内容是否有缺失
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
pasv_enable=YES
xferlog_std_format=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES ##解决出现500 OOPS的错误
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
user_config_dir=/etc/vsftpd
pasv_min_port=32200
pasv_max_port=32300
reverse_lookup_enable=NO
listen_port=3737
手工创建文件chroot_list,限制用户在指定目录
touch /etc/vsftpd/chroot_list
创建用户配置信息文件并添加指定用户目录(注意这里使用用户名是创建的ftp用户)
vi /etc/vsftpd/ftpuser
添加如下内容,设备接入ftp所在路径:
local_root= /data/ftp
启动vsftpd服务,并设置开机自动启动
systemctl start vsftpd
systemctl enable vsftpd
登录出现530 登录失败错误
vim /etc/pam.d/vsftpd
#%PAM-1.0
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth
把 auth required pam_shells.so 中pam_shells.so修改为pam_nologin.so
或者注释掉此行。
重启systemctl restart vsftpd即可使用localhost登录。
配置iptables规则
iptables -A INPUT -p tcp --dport 3737 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 3737 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 32200:32300 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 32200:32300 -j ACCEPT
service iptables save
如果配置没有生效,需要看下/etc/sysconfig/iptables里面新配置的规则是否放在了REJECT规则的后面,如果是,移动到REJECT规则的前面。因为iptables规则是在同一个检查点(PREROUTING、FORWARD、POSTROUTING)是按照你配置的规则顺序生效的。
比如在INPUT 方向,REJECT 规则,在“iptables -A INPUT -p tcp --dport 3737 -j ACCEPT”前面,就会导致INPUT 的报文已经丢弃,后面的配的INPUT也就不生效了。
登录
127.0.0.1替换为真实的IP地址
使用浏览器: ftp://ftpuser@127.0.0.1:3737/
使用命令行: ftp 127.0.0.1 3737
网友评论