PS: 为了减少重复劳动,已经把以下操作制作成了一键部署脚本,移步 https://www.isres.com/shell/312.html 查看!
以下是原来文章
第一步
yum -y install vsftpd
配置
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO 设定不允许匿名访问
去掉chroot_list_enable=YES的注释,并修改为No使用户不能离开主目录
xferlog_file=/var/log/vsftpd.log 设定vsftpd的服务日志保存路径。注意,该文件默认不存在。必须要手动touch出来
去掉
ascii_upload_enable=YES
ascii_download_enable=YES
的注释
添加
guest_enable=YES 设定启用虚拟用户功能。
guest_username=ftp 指定虚拟用户的宿主用户。-CentOS中已经有内置的ftp用户了
user_config_dir=/etc/vsftpd/vuser_conf 设定虚拟用户个人vsftp的CentOS FTP服务文件存放路径。存放虚拟用户个性的CentOS FTP服务文件(配置文件名=虚拟用户名)
//最近升级了安全设置,删除一些内置系统匿名用户,导致连接ftp出现 vsftpd: cannot locate user specified in 'guest_username':ftp
修改设置如下
guest_username=ftp 修改为 nobody
保存配置文件
touch /var/log/vsftpd.log
touch /etc/vsftpd/chroot_list
将用户ftp加入其中:
echo ftp >> /etc/vsftpd/chroot_list
yum install db4 db4-utils
centos 7 的时候,这里yum会失败,提示没有包 处理如下
---------------------------------------------------
wget http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm
rpm -Uvh epel-release-7-11.noarch.rpm
#如果没有,请在这里找最新版url http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/
---------------------------------------------------
vim /etc/vsftpd/vuser_passwd.txt 奇行是用户名,偶行是密码
test
123456
保存
生成虚拟用户认证的db文件
db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db
vim /etc/pam.d/vsftpd
全部注释掉原来语句,再增加以下两句:
auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required pam_userdb.so db=/etc/vsftpd/vuser_passwd
创建虚拟用户个性CentOS FTP服务文件
mkdir /etc/vsftpd/vuser_conf/
vi /etc/vsftpd/vuser_conf/test(注:文件名等于vuser_passwd.txt里面的账户名,否则下面设置无效,test为之前的帐户名)
local_root=/var/www/html
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
以上一行一行复制和手工打入,全部复制会多出空格导致出错.
保存,设置文件夹权限
mkdir /var/www/html/ftp
chmod -R 755 /var/www/html
chmod -R 777 /var/www/html/test
启动vsftp服务器
service vsftpd start 开启命令
service vsftpd restart 重启
service vsftpd stop 停止
由于在一些主动模式下,ftp可能无法正常连接,无法列出目录,务必还要进行被动模式的设置
设置被动模式,
一为设置vsftp的被动模式端口范围 二为 开启相应防火墙端口
vim /etc/vsftpd/vsftpd.conf
在文件末端添加:
pasv_max_port=6666
pasv_min_port=5555
/etc/init.d/vsftpd restart
添加一条防火墙规则
/etc/init.d/iptables stop
iptables -I INPUT -p tcp --dport 5555:6666 -j ACCEPT
/etc/init.d/iptables save
/etc/init.d/iptables start
/////////////////////////////////////////////////////////
常见问题
#selinux会引起如下情况
#425 Security: Bad IP connecting
vim /etc/vsftpd/vsftpd.conf #文件中添加如下一行
pasv_promiscuous=YES
service vsftpd restart
#500 OOPS:cannot change directory
setsebool -P ftp_home_dir on
service vsftpd restart
#553 Could not create file
setsebool allow_ftpd_full_access on
service vsftpd restart
sestatus -b| grep ftp
allow_ftpd_anon_write off
allow_ftpd_full_access on
allow_ftpd_use_cifs off
allow_ftpd_use_nfs off
ftp_home_dir on
ftpd_connect_db off
ftpd_use_passive_mode off
httpd_enable_ftp_server off
tftp_anon_write off
#要ftp_home_dir 和 allow_ftpd_full_access 为on
标签: vsftp
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://www.isres.com/default/9.html