Centos7搭建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