Linux入门之ftp虚拟用户的设定

在系统中,没有权限登录系统的用户一般也被称之为虚拟用户,虚拟用户实际上就是去掉了登录SHELL权限的用户,他没有能力登录系统,但可以进行其他任何操作。同时,管理员也可以对这些虚拟用户的权限做出设定,保证系统不被恶意攻击。

一、创建虚拟帐号身份
我们Linux系统中,享受ftp服务的主要有匿名用户、本地用户和虚拟用户,那么虚拟用户是怎样产生和管理的呢?接下来让我们来看一看

  1. 创建虚拟用户名单
cd /etc/vsftpd/
vim /etc/vsftpd/login_file   ##建立用户列表

首先我们需要创建一个虚拟用户的名单,在名单中的人,是可以登录ftp并使用其中资源的用户。在名单中我们需要写出用户名称以及用户密码。注意每一行后面注意是否有空格存在,建议不要添加空格。
在这里插入图片描述

  1. 用户名单的加密
db_load -T -t hash -f /etc/vsftpd/login_file /etc/vsftpd/login_file.db   ##对文件加密
        转化 类型    文件

用户名单创建完毕后,为了避免其他用户看到其中的账号密码,我们需要对用户名单进行加密,提高安全性。
在这里插入图片描述

  1. 认证名单的建立
cd /etc/pam.d
vim /etc/pam.d/login_ftp   ##创建认证名单
account(账户)   required  pam_userdb.so  db=/etc/vsftpd/login_file
auth(密码)     required  pam_userdb.so  db=/etc/vsftpd/login_file

建立认证名单,系统可以通过认证名单,让名单中的用户可以登录,不在名单中的用户则被拒绝,这样的认证名单是必不可少的。
在这里插入图片描述
用户名单和认证名单建立完成后,虚拟用户仍然是不能登录的,由于我们建立的文件之间是没有关联的,系统不会自动识别我们所创建的名单,我们需要建立连接,告诉系统认证名单在什么位置查看。
在这里插入图片描述

  1. 与ftp建立联系
vim /etc/vsftpd/vsftpd.conf
pam_service_name=login_ftp    ##与lftp建立联系
guest_enable=YES

在配置文件中,建立关系,是系统能自动识别和判断该用户是否合法
在这里插入图片描述

  1. 测试
lftp 172.25.254.131 -u user1
lftp 172.25.254.131 -u user2
lftp 172.25.254.131 -u user3

使用我们所创建的用户进行登录,我们可以发现用户可以成功登陆ftp
在这里插入图片描述
虚拟用户的默认发布目录是/var/ftp/pub,那么我们怎样使这些虚拟用户能够拥有和直接进入自己的家目录?

二、虚拟用户家目录的设定

  1. 为用户创建家目录
mkdir -p /var/ftpdir/user{1..3}
mkdir -p /var/ftpdir/user1/user1pub -p
mkdir -p /var/ftpdir/user2/user2pub -p
mkdir -p /var/ftpdir/user3/user3pub -p
ls /var/ftpdir

为用户创建家目录,使每一个用户都有自己独立的目录,针对这些不同的目录,我们可以将用户的使用权限进行设定。
在这里插入图片描述

  1. 配置文件中家目录的设定
    在shell中,$可以理解为站位符,我们通过测试,发现使用该符号可以自动的将用户及该用户所处的环境联系起来。由于可能存在大量的虚拟用户,我们很难一个一个的为用户创建家目录,为此我们需要通过 $ 来使系统自动匹配该用户的家目录。
    在这里插入图片描述
vim /etc/vsftpd/vsftpd.conf
local_root=/var/ftpdir/$USER  ##设置用户看到是自己的家目录
user_sub_token=$USER   ##使用shell中的$USER

我们可以在配置文件中指定虚拟用户的家目录位置,要注意的是$是shell中独有的符号,我们所处的环境中,并没有该符号,我们需要告诉系统,执行该命令需要使用shell环境中的符号。
在这里插入图片描述

  1. 测试
lftp 172.25.254.131 -u user1

用户进行登录,能够直接进入自己的家目录,则我们的设置成功。
在这里插入图片描述
用户及其家目录设置好后,我们需要对虚拟用户的权限进行限制。vsftpd配置文件中可以设置用户的权限,但是它是针对所有用户进行设置的,那么我们该怎样只针对某一用户进行权限的设定?让我们来看一看。

三、虚拟用户权限设定

  1. 所有用户都具有该权限
setfacl -m u:ftp:rwx /var/ftpdir/user*/*  ##所有用户都具有/etc/vsftpd/vsftpd.conf配置文件中的权限

该命令可以设定所有的用户权限,他们所拥有的权限都是相同的,这样设置明显是存在风险的。
在这里插入图片描述
在这里插入图片描述

  1. 设置某一用户具备某项权利
mkdir /etc/vsftpd/westos            ##创建权限设定的目录  
cd /etc/vsftpd/westos 
vim /etc/vsftpd/westos/user1        ##创建用户权限列表
anon_upload_enable=YES              ##上传
anon_other_write_enable=YES         ##删除

我们针对某一用户进行权限的设定,首先需要建立一个权限列表,在列表中我们可以指定这个用户所具备的权利。要注意的是,权限列表设置后,如果vsftpd配置文件中也设置权限,设定会冲突。在设定权限列表时,需要先关闭配置文件中的某些权利。
在这里插入图片描述

vim /etc/vsftpd/vsftpd.conf                ##修改配置文件
user_config_dir=/etc/vsftpd/westos         ##指定权限列表位置
systemctl restart vsftpd                   ##重启vsftpd

在这里插入图片描述
在这里插入图片描述
测试:

ftp 172.25.254.131 -u user1   

在这里插入图片描述 在这里插入图片描述
通过测试,我们可以发现,user1设定权限后,可以上传和删除,而user2和user3则没有权限,不能上传和删除。

猜你喜欢

转载自blog.csdn.net/qq_43830639/article/details/89713304