vsftpd安装配置以及常见问题解决

时间:2021-12-01 02:22:11

vsftpd安装配置以及踩坑解决办法,Centos7

nginx已经配置成功了,但是使用http始终没办法访问到图片,那么你来对地方了(在文章末尾是原因)

配置nginx教程:http://blog.csdn.net/xianzhixianzhixian/article/details/78891657

进入正题,安装配置vsftpd开始

1、安装vsftpd:安装完成之后会有/etc/vsftpd/vsftpd.conf 文件,是vsftp的配置文件

# yum -y install vsftpd

2、添加ftp用户:一个用户建完,可以用这个登录;记得用普通登录不要用匿名了,登录后默认的路径为 /home/ftpuser.

# useradd ftpuser

3、设置ftpuser的密码

# passwd ftpuser

4、为用户分配主目录

用以下命令创建,但是该目录不能上传文件

mkdir -p /home/ftp/pub

创建欢迎文件

echo "Welcome to use FTP service." > /home/ftp/welcome.txt

设置访问权限

chmod a-w /home/ftp && chmod 777 -R /home/ftp/pub

设置为用户主目录

usermod -d /home/ftp ftpuser

4、iptables开启端口21:ftp默认的端口为21,而centos默认是没有开启的,所以要修改iptables文件

修改完毕之后按下esc,然后输入 :wq 回车,重启服务

# vim /etc/sysconfig/iptables

# service iptables restart

如图:

vsftpd安装配置以及常见问题解决

5、修改 selinux:外网是可以访问上去了,可是发现没法返回目录(使用ftp的主动模式,被动模式还是无法访问)也上传不了,因为selinux作怪了

执行以下命令查看状态:

# getsebool -a | grep ftp

allow_ftpd_anon_write --> off

allow_ftpd_full_access --> off

allow_ftpd_use_cifs --> off

allow_ftpd_use_nfs --> off

ftp_home_dir --> off

ftpd_connect_db --> off

ftpd_use_passive_mode --> off

httpd_enable_ftp_server --> off

tftp_anon_write --> off

执行上面命令,再返回的结果看到两行都是off,代表,没有开启外网的访问

# setsebool -P allow_ftpd_full_access on

# setsebool -P ftp_home_dir on

6、关闭匿名访问:将anonymous_enable=YES改为anonymous_enable=NO

修改完毕之后按下esc,然后输入 :wq 回车,重启服务

# vim /etc/vsftpd/vsftpd.conf

# service vsftpd restart

7、 开启被动模式

# vim /etc/vsftpd/vsftpd.conf

在文件末尾加上

pasv_min_port=30000

pasv_max_port=30999

表示端口范围为30000~30999,这个可以随意改,改完重启一下vsftpd

# service vsftpd restart

由于指定这段端口范围,iptables也要相应的开启这个范围

# vim /etc/sysconfig/iptables

vsftpd安装配置以及常见问题解决

修改完毕后重启iptables

# service iptables restart

8、修改nginx配置文件,不修改的话不能用http前缀访问到图片

在这里需要注意两点

a、/home/ftpuser的所有者为ftpuser,如果不是如图所是的话,用chown和chgrp改为ftpuser;权限文件拥有者为7,用户组和其他用户要有读权限

vsftpd安装配置以及常见问题解决

b、最重要的一步:nginx文件的配置,我的图片是放在/home/ftpuser/images/,所以我在nginx中的配置如图;这样配置了之后应该就可以用http前缀访问图片了

# vim /usr/local/nginx/conf/nginx.conf

vsftpd安装配置以及常见问题解决

重新加载服务

# cd /usr/local/nginx/sbin

# ./nginx -s reload