1以root用户登录CentOS 7系统
2 安装vsftpd服务
yum install vsftpd -y
3 开启vsftpd服务
systemctl start vsftpd
4 配置vsftpd服务
4.1关闭匿名用户
vi /etc/vsftpd/vsftpd.conf
在vsftpd.conf配置文件中修改以下三项:
anonymous_enable=NO
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
然后重启ftp服务:
systemctl restart vsftpd.service
4.2建立ftp虚拟宿主账户
新建一个不能登录系统用户. 只用来登录ftp服务 ,这里如果没设置用户目录。默认是在home下:
useradd ftpuser -s /sbin/nologin
为ftpuser用户设置密码:
passwd ftpuser
4.3查看ftp的状态
getsebool -a | grep ftp
显示结果:
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_home_dir --> off
将上面红色两项状态设置为on:
setsebool -P allow_ftpd_full_access on
setsebool -P tftp_home_dir on
4.4限制系统用户锁定在/home/ftpuser目录
如果设置为
chroot_local_user=YES
chroot_list_enable=YES(这行可以没有, 也可以有)
chroot_list_file=/etc/vsftpd.chroot_list
那么, 凡是加在文件vsftpd.chroot_list中的用户都是不受限止的用户
即,可以浏览其主目录的上级目录.
所以, 如果不希望某用户能够浏览其主目录上级目录中的内容,可以如上设置, 然后在
文件vsftpd.chroot_list中不添加该用户即可(此时, 在该文件中的用户都是可以浏览其主目录之外的目录的).
或者, 设置如下
chroot_local_user=NO
chroot_list_enable=YES(这行必须要有, 否则文件vsftpd.chroot_list不会起作用)
chroot_list_file=/etc/vsftpd.chroot_list
然后把所有不希望有这种浏览其主目录之上的各目录权限的用户添加到文件vsftpd.chroot_list(此时, 在该文件中的用户都是不可以浏览其主目录之外的目录的)
中即可(一行一个用户名).
vim /etc/vsftpd/vsftpd.conf
这里有两种方案,采用第二种,配置如下:
chroot_local_user=NO
chroot_list_enable=YES #(这行必须要有, 否则文件vsftpd.chroot_list不会起作用)
chroot_list_file=/etc/vsftpd/chroot_list
默认chroot_list是不存在的
vim /etc/vsftpd/chroot_list
然后加入 ftpuser ,表示只有ftpuser不能访问上级目录,重启vsftpd。
4.5修改权限
修改/home/ftpuser 的权限为不可写
chmod a-w /home/ftpuser/taotao
这是因为在上面将/home/ftpuser/taotao文件的权限改为不可写了,那么我们在这个目录下创建一个images文件夹,用来上传文件。并将权限赋值给 ftpuser 用户
mkdir images
chown ftpuser images
4.6开启PASV(被动模式)
在 /etc/vsftpd/vsftpd.conf 的最下面加入
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30999
并且在userlist_enable=YES文件后面添加
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
4.7开启防火墙:
firewall-cmd --zone=public --add-port=30000-30999/tcp --permanent
firewall-cmd --reload