CentOS7 FTP安装与配置vsftpd(详细)

写在前面:centos的ftp环境研究了很长时间,配置一个ftp就是为了以后站点方便维护,否则每次用命令行不现实。失败过,也找过原因,仅此保留笔记。

一、安装vsftp

#安装

yum install -y vsftpd

#设置开机启动

systemctl enable vsftpd.service

#启动

systemctl start vsftpd.service

#停止

systemctl stop vsftpd.service

#查看状态

systemctl status vsftpd.service

二、配置vsftp

#打开配置文件

vim /etc/vsftpd/vsftpd.conf

#修改配置 12 行

anonymous_enable=NO

#修改配置 33 行

anon_mkdir_write_enable=YES

#修改配置48行

chown_uploads=YES

#修改配置72行

async_abor_enable=YES

#修改配置82行

ascii_upload_enable=YES

#修改配置83行

ascii_download_enable=YES

#修改配置86行

ftpd_banner=Welcome to blah FTP service.

#修改配置100行

chroot_local_user=YES

#添加下列内容到vsftpd.conf末尾

use_localtime=YES

listen_port=21

idle_session_timeout=300

guest_enable=YES

guest_username=vsftpd

user_config_dir=/etc/vsftpd/vconf

data_connection_timeout=120

virtual_use_local_privs=YES

pasv_min_port=40000

pasv_max_port=40010

accept_timeout=5

connect_timeout=1

allow_writeable_chroot=YES

三、建立用户文件

#创建编辑用户文件

vim /etc/vsftpd/virtusers

#第一行为用户名,第二行为密码,都是自定义的。不能使用root作为用户名

username

password

四、生成用户数据文件

db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

#设定PAM验证文件,并指定对虚拟用户数据库文件进行读取

chmod 600 /etc/vsftpd/virtusers.db

五、修改 /etc/pam.d/vsftpd 文件

# 修改前先备份

cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak

vi /etc/pam.d/vsftpd

#先将配置文件中原有的 auth 及 account 的所有配置行均注释掉

auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers

account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers

# 如果系统为32位,上面改为lib

[reply]

六、新建系统用户vsftpd,用户目录为/home/vsftpd

#用户登录终端设为/bin/false(即:使之不能登录系统),红颜色目录可以改到其他地方

useradd vsftpd -d /home/vsftpd -s /bin/false

chown -R vsftpd:vsftpd /home/vsftpd

#如果这个ftp用户vsftpd是用来管理网站目录的,执行以下(意思是加入到apache组),否则不执行这一条!(补充于20181111)

usermod -a -G apache vsftpd

七、建立虚拟用户个人配置文件

mkdir /etc/vsftpd/vconf

cd /etc/vsftpd/vconf

#这里建立虚拟用户username配置文件

touch username

#编辑username用户配置文件

vi username

#内容如下,其他用户类似

local_root=/var/www/html

anon_root=/var/www/html

write_enable=YES

anon_world_readable_only=NO

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

#建立username用户的根目录,如果根目录是自己设置的已有的文件夹,就不用创建了

mkdir -p /var/www/html

#增加用户username的根目录所有者为之前创建的vsftpd

chown -R vsftpd:vsftpd  /var/www/html

#提升该文件夹的权限

chmod -R 777  /var/www/html

八、防火墙设置

现在centos7 都是默认安装的firewall ,IPTable要另外安装,所以下面的IPtables设置方式请忽略。

IPtables 的设置方式:

vi /etc/sysconfig/iptables

#编辑iptables文件,添加如下内容,开启21端口

-A INPUT -m state –state NEW -m tcp -p tcp –dport 21 -j ACCEPT

-A INPUT -m state –state NEW -m tcp -p tcp –dport 40000:40010 -j ACCEPT

firewall 的设置方式:

firewall-cmd –zone=public –add-service=ftp –permanent

firewall-cmd –zone=public –add-port=21/tcp –permanent

firewall-cmd –zone=public –add-port=40000-40010/tcp –permanent

禁用firewall也可以,更彻底:

systemctl disable firewalld

@其他关于防火墙的命令

启动: systemctl start firewalld

关闭: systemctl stop firewalld

查看状态: systemctl status firewalld

开机禁用 : systemctl disable firewalld

开机启用 : systemctl enable firewalld

九、关闭selinux,不关闭ftp工具应该可以连接,但是传输文件的时候,会发现文件上传和下载都会出现500、503 、200等报错

方式一:通过配置文件修改禁用

#打开SELINUX配置文件

vim /etc/selinux/config

#修改配置参数

#注释

SELINUX=enforcing

#增加

SELINUX=disabled

方式二:通过命令行禁用

setsebool -P ftpd_disable_trans 1

方式三:SELINUX不对vsftp不做任何限制

setsebool -P ftpd_connect_all_unreserved 1

十、重启vsftpd服务器

systemctl restart vsftpd.service

结束。

 

 

原理补充:

1、如果要增加用户数,那么在第三步中再增加一个用户,并且接着执行第四步,这个时候新增加的用户是能登录ftp的,只不过这个时候还没有经过第七步虚拟用户的配置,根目录为第六步创建的/home/vsftpd文件夹。

2、第七步中虚拟用户个人配置文件中的local_root的文件夹可以换成别的,这个是这个用户的根目录。但是要换的文件夹必须执行以下“chmod -R 775 新的文件夹路径”。

 

[/reply]

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
2 条回复 A 作者 M 管理员
  1. 按照文中一样配置了,但是登录时总是弹出录入用户密码,录入完又弹出来,请问是什么问题?

    • centos7 安装完vsftpd后 文件末尾这几行不要动!我之前把他注释了,也出现你的问题,恢复后就好了。

欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论