CentOS 7 安装vsftpd 服务器

目的:在CentOS7上安装ftp服务器用于保存服务端上传的图片。

安装前准备:在虚拟机安装好linux,linux客户端SecureCRT 7.2安装好,方便操作。我安装的是CentOS 7版本,这版本安装ftp服务器跟以前版本有点不一样,网上找了很多都是有问题的,花费了我好几天终于搞定了。所以做做笔记还是有必要。好了,进入正题。

一、CentOS卸载vsftpd的方法

如果服务器上已经安装了vsftpd服务,配置出错需要卸载vsftpd服务,当然如果在虚拟机上安装最好先拍个快照,有什么问题可以一键还原。

1、首先查看是否安装了vsftpd

[root@localhost vsftpd]# rpm -aq vsftpd
vsftpd-3.0.2-22.el7.x86_64

说明已经安装过vsftpd服务。

2、卸载vsftpd

[root@localhost vsftpd]# /sbin/service vsftpd stop  注:在卸载vsftpd之前,先停止vsftpd

[root@localhost vsftpd]# rpm -e vsftpd-3.0.2-22.el7.x86_64

卸载完用rpm -aq vsftpd 命令查看没提示证明已经卸载了。

二、安装vsftpd组件

[root@localhost ~]# yum install vsftpd -y

1、启动ftp

[root@localhost ~]# systemctl start vsftpd.service

如果想开机启动ftp还要运行以下指令:

[root@localhost ~]# systemctl enable vsftpd.service

 

2、防火墙开放相关的端口,并重启防火墙,输入以下指令,一行一行运行

firewall-cmd --permanent --zone=public --add-port=20/tcp

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

firewall-cmd --permanent --zone=public --add-port=30000-30999/tcp

firewall-cmd --permanent --zone=trusted --add-port=20/tcp

firewall-cmd --permanent --zone=trusted --add-port=21/tcp

firewall-cmd --permanent --zone=trusted --add-port=30000-30999/tcp

systemctl restart firewalld.service  #重启

3、可以通过以下指令查看端口是否已添加进去

firewall-cmd --zone=public --list-ports

firewall-cmd --zone=trusted --list-ports

三、vsftpd服务的详细配置

1、关闭匿名用户

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf

 修改以下三项:

anonymous_enable=NO
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES

然后重启ftp服务
[root@localhost ~]# systemctl restart  vsftpd.service

 通过配置重启之后,匿名用户不可以登录了。

2、建立ftp虚拟宿主账户

  新建一个不能登录系统用户. 只用来登录ftp服务 ,这里如果没设置用户目录。默认是在home下:

[root@localhost ~]# useradd ftpuser -s /sbin/nologin
[root@localhost ~]# passwd ftpuser

3、查看ftp的状态

[root@localhost ~]# 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:

[root@localhost ~]# setsebool -P allow_ftpd_full_access on
[root@localhost ~]# setsebool -P tftp_home_dir on

4、配置vsftpd.conf,限制系统用户锁定在/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(此时, 在该文件中的用户都是不可以浏览其主目录之外的目录的)
中即可(一行一个用户名).

这里有两种方案,我采用第二种,配置如下:
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf

修改如下:

chroot_local_user=NO
chroot_list_enable=YES #(这行必须要有, 否则文件vsftpd.chroot_list不会起作用)
chroot_list_file=/etc/vsftpd/chroot_list

检查下/etc/vsftpd/目录里是否有以下3个文件,默认chroot_list是不存在的,创建并编辑:

[root@localhost ~]# vim /etc/vsftpd/chroot_list

 然后加入 ftpuser ,表示只有ftpuser不能访问上级目录。

[root@localhost taotao]# cd /etc/vsftpd/
[root@localhost vsftpd]# ll
总用量 24
-rw-r--r--. 1 root root    8 11月  5 15:09 chroot_list
-rw-------. 1 root root  125 8月   3 2017 ftpusers
-rw-------. 1 root root  361 8月   3 2017 user_list
-rw-------. 1 root root 5135 11月  5 15:20 vsftpd.conf
-rwxr--r--. 1 root root  338 8月   3 2017 vsftpd_conf_migrate.sh

user_list 这个一般默认就存在,里面存放允许登陆的账号,一行一个账号名,如果不想让某个账号登陆ftp,那么这里就别填那个账号进来。

把ftpuser用户添加到/etc/vsftpd/user_list 

[root@localhost vsftpd]# vim /etc/vsftpd/user_list
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
  If userlist_deny=YES (default), never allow users in this file, anddo not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
ftpuser   #添加ftpuser用户

 

ftpusers 这个一般默认就存在,里面存放禁止登陆的账号,一行一个账号名。查验一下/etc/vsftpd/ftpusers是否有myftp,如果有,就要删掉,不然就被禁止登陆了。

PS:user_list和ftpusers功能差不多的,可以只用user_list 这个来管理,把 ftpusers 里面内容都删掉。

5、修改权限

先创建上传图片的文件夹

[root@localhost ftpuser]# mkdir -p /home/ftpuser/taotao
[root@localhost ~]# chmod a-w /home/ftpuser/taotao

注:我们在上面将/home/ftpuser/taotao文件的权限改为不可写了,那么我们在这个目录下创建一个images文件夹,用来上传文件。并将权限赋值给 ftpuser 用户
[root@localhost ftpuser]
# cd /home/ftpuser/taotao [root@localhost taotao]# mkdir images
[root@localhost taotao]# chown ftpuser images

 

四、开启PASV(被动模式)

[root@localhost taotao]# vim /etc/vsftpd/vsftpd.conf

在 /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


至此,ftp安装到此结束。

 

posted @ 2018-11-05 16:52  一棵写代码的柳树  阅读(646)  评论(0)    收藏  举报