Centos7搭建FTP服务和并配置虚拟用户

xiaohai 2019-06-11 18:53:26 1447人围观 标签: FTP 
简介最近为了满足一些用户只能访问固定的目录权限,所以想通过FTP的方式来满足这个需求。我们都知道,需要使用FTP服务器,就需要搭建一个FTP服务,这里我们使用vsftpd服务器软件。在建立vsftpd用户时,我们一般是在linux下建立用户useradd的方式来访问ftp,但有时我们只想提供ftp服务,而避免用户用ftp的帐号去登录linux,采用一般的方式只能是限制该用户的访问权限,但还是避免不了用户登录进linux系统,所以比较好的方法是用vsftpd的虚拟用户。

环境:

  • Centos: 7
  • vsftpd: 3.0.2

一、安装步骤

1、安装vsftpd
yum -y install vsftpd #安装 systemctl start vsftpd #启动服务 systemctl enable vsftpd #添加到开机启动
2、创建本地用户用于映射虚拟用户,并设置对应的家目录且不允许登录
useradd -d /home/vsftpd vsftpduser -s /sbin/nologin
3、创建虚拟用户和密码

在/etc/vsftpd目录下新建一个文件vusers,奇数行为用户名,偶数行为密码,内容如下

test1 123456 test2 123456
4、虚拟用户列表文件

在/etc/vsftpd目录下新建一个文件chroot_list,每行都是一个虚拟用户名称,都是第三步中的虚拟用户名称

test1 test2
5、为每个虚拟用户添加配置

在/etc/vsftpd目录下建一个目录vconf,每一个用户新增一个文件,文件名称都是虚拟用户的用户名,如test1

vim test1 #内容如下 #设置登录后禁锢的目录 local_root=/home/vsftpd/test1 #开放写权限 write_enable=yes #开放下载权限 anon_world_readable_only=no #开放上传权限 anon_upload_enable=yes #开放创建目录的权限 anon_mkdir_write_enable=yes #开放删除和重命名的权限 anon_other_write_enable=yes #开放虚拟用户上传后权限为755 anon_umask=022

如果有多个用户,按照上述方法进行配置即可

6、配置每个虚拟用户的根目录

这个根目录在本地用户vsftpduser的家目录下进行创建,按照每个虚拟用户名称进行创建即可,并且需要设置权限为755

mkdir -p /home/vsftpd/test1 chmod -R 755 /home/vsftpd chown -R vsftpduser:vsftpduser /home/vsftpd
7、加密用户密码文件生成数据库文件

根据上面第3步创建的文件来生成,目录在/etc/vsftpd目录下

db_load -T -t hash -f /etc/vsftpd/vusers /etc/vsftpd/vusers.db
8、配置PAM认证文件

配置需要在/etc/pam.d/目录下,默认情况下有一个vsftpd文件,如果大家不想修改该文件,可以自己新建一个文件来处理,这里我们就直接在该文件上进行即可,修改前,先备份

cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak #编辑vsftpd,先将里面已有的配置先注释掉,然后添加如下两行内容: auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vusers account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vusers

vusers就是上面我们生成的数据库文件名称

9、配置vsftpd配置文件

首先进行备份,然后将相关配置配置成如下内容:

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak #备份 #编辑配置文件 ###########修改如下配置############# #不允许匿名访问 anonymous_enable=NO #取消下面几项项配置前的#号 chroot_local_user=YES chroot_list_enable=YES #下一个配置就是第4步对应的文件 chroot_list_file=/etc/vsftpd/chroot_list ascii_upload_enable=YES ascii_download_enable=YES #认证文件名称,第8步配置的信息 pam_service_name=vsftpd ###########新增如下配置############ guest_enable=YES guest_username=vsftpduser #下面的配置就是第5步的配置 user_config_dir=/etc/vsftpd/vconf allow_writeable_chroot=YES #配置下面三项来配置被动模式,否则开启了防火墙是访问不了的 pasv_enable=YES pasv_min_port=11000 pasv_max_port=12000
9、开发相关端口
firewall-cmd --zone=public --add-port=21/tcp --permanent firewall-cmd --zone=public --add-port=11000-12000/tcp --permanent firewall-cmd --reload
10、重启并测试
systemctl restart vsftpd [root@localhost home]# ftp 127.0.0.1 Connected to 127.0.0.1 (127.0.0.1). 220 (vsFTPd 3.0.2) Name (127.0.0.1:root): test1 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> mkdir abc 550 Create directory operation failed.

上面测试登录是成功的,但是当我们创建目录的时候是创建不了的,报如下错误:550 Create directory operation failed.解决该问题可以查看以下问题1

11、如果要重新添加一个新的用户
1、在上面第三步的文件中新增一个用户名和密码 2、在上面第四步的文件中新增上一步的用户名 3、在上面第五步的目录中新增一个以该用户名为名称的文件 4、在上面第六步的目录中新增一个目录,在上一步的local_root配置的目录名称 5、重新生成加密用户信息,以第七步来处理

二、相关问题

问题1:创建目录报该错误:“550 Create directory operation failed.”
1、查看 SELinux 的状态:sestatus -b | grep ftp,有些安装说明让我们将SELinux关闭,不太建议这就做; 2、在出现的结果中可以看到 ftp_home_dir off 3、将ftp_home_dir设置成on:setsebool -P ftp_home_dir on 4、重启vsftpd
问题2:阿里云ESC安装好后,使用Xftp连接不上

出现这种情况可以先换一个Ftp客户端,可以使用WinScp