1.背景

由于国家大力推行信创软件,且CentOS 7也在6月底退役,使得各大企业纷纷考虑下一步的操作系统选型。

img

你是否也在准备更换新的系统选型呢?如果你已经在考虑了,那么以下哪些是你的选择。

从中国市场占有率来看,华为的openEuler当之无愧,所以也在考虑做CentOS的转变。所以在测试过程中,发现一个ftp配置的问题,记录在此。

2.问题复现

在之前也分享过在CentOS下基于虚拟用户搭建ftp的方法,地址如下:

按照此方法后,在使用虚拟用户访问时报错:

vsftpd[91604]: pam_userdb(vsftpd:auth): user_lookup: could not open database `/etc/vsftpd/virtusers.db': No such file or directory

/etc/pam.d/vsftpd中db=后面无论是加上.db后缀还是不加,问题都是如此,故障必现。

3.安装ftp

3.1 关闭selinux

检查selinux状态,如果为Enforcing的话,需要关闭selinux软件。

selinux

img

关闭selinux软件:

# 永久关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
# 临时关闭selinux
setenforce 0

执行完成后,重启操作系统。

3.2 安装vsftp

开始安装vsftpd软件,执行命令:

yum -y install vsftpd

备份系统默认配置:

cd /etc/vsftpd/
mv vsftpd.conf vsftpd.src.conf

采用主动模式配置ftp服务器,如果需要修改为被动模式,则将pasv_enable=YES,并指定pasv_min_port和pasv_max_port的端口范围。

vi vsftpd.conf

将下面配置粘贴至vsftpd文件内。

listen=YES
anonymous_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
chroot_local_user=YES
allow_writeable_chroot=YES
guest_enable=yes
guest_username=vsftpd
user_config_dir=/etc/vsftpd/vsftpd_user_conf
pam_service_name=vsftpd
​
local_enable=YES
pasv_enable=NO
# 被动模式,占用5090-6000端口
#listen_port=52221
#pasv_min_port=5090
#pasv_max_port=6000
#pasv_address=49.235.71.50

img

3.3 创建账户

创建一个用户ftpuser,设置为不可登录操作系统。

useradd ftpuser -s /bin/false

修改配置:

vim /etc/pam.d/vsftpd

注释掉多余的配置,只留下以下两行。

img

auth required pam_userdb.so db=/etc/vsftpd/login
account required pam_userdb.so db=/etc/vsftpd/login

设置用登录用户和密码,我这里以ftpuser为例,密码123456

gdbmtool /etc/vsftpd/login.pag store ftpuser 123456

3.4 限制用户切换主目录

vim /etc/vsftpd/chroot_list
ftpuser

3.5 生成用户配置文件夹

mkdir /etc/vsftpd/vsftpd_user_conf

3.6按用户名编写配置内容

mkdir -p /home/vsftpd/ftpuser
chown -R vsftpd:vsftpd /home/vsftpd/ftpuser

注意这里创建的文件名要和你的用户一致

vim /etc/vsftpd/vsftpd_user_conf/user1

权限:仅仅下载

anon_world_readable_only=NO    
local_root=/home/vsftpd/ftpuser

上传、下载权限,不能删除、不能重命名

anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
local_root=/home/vsftpd/ftpuser

全部权限:可上传、下载、删除和改名

write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/vsftpd/ftpuser

3.7 重启vsftpd服务

systemctl restart vsftpd
systemctl enable vsftpd

img

4.验证ftp

使用预先设置的账号,测试数据上传,成功。可以切换不同的权限验证。