写在前面: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]