在系统中,没有权限登录系统的用户一般也被称之为虚拟用户,虚拟用户实际上就是去掉了登录SHELL权限的用户,他没有能力登录系统,但可以进行其他任何操作。同时,管理员也可以对这些虚拟用户的权限做出设定,保证系统不被恶意攻击。
一、创建虚拟帐号身份
我们Linux系统中,享受ftp服务的主要有匿名用户、本地用户和虚拟用户,那么虚拟用户是怎样产生和管理的呢?接下来让我们来看一看
- 创建虚拟用户名单
cd /etc/vsftpd/
vim /etc/vsftpd/login_file ##建立用户列表
首先我们需要创建一个虚拟用户的名单,在名单中的人,是可以登录ftp并使用其中资源的用户。在名单中我们需要写出用户名称以及用户密码。注意每一行后面注意是否有空格存在,建议不要添加空格。
- 用户名单的加密
db_load -T -t hash -f /etc/vsftpd/login_file /etc/vsftpd/login_file.db ##对文件加密
转化 类型 文件
用户名单创建完毕后,为了避免其他用户看到其中的账号密码,我们需要对用户名单进行加密,提高安全性。
- 认证名单的建立
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
建立认证名单,系统可以通过认证名单,让名单中的用户可以登录,不在名单中的用户则被拒绝,这样的认证名单是必不可少的。
用户名单和认证名单建立完成后,虚拟用户仍然是不能登录的,由于我们建立的文件之间是没有关联的,系统不会自动识别我们所创建的名单,我们需要建立连接,告诉系统认证名单在什么位置查看。
- 与ftp建立联系
vim /etc/vsftpd/vsftpd.conf
pam_service_name=login_ftp ##与lftp建立联系
guest_enable=YES
在配置文件中,建立关系,是系统能自动识别和判断该用户是否合法
- 测试
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,那么我们怎样使这些虚拟用户能够拥有和直接进入自己的家目录?
二、虚拟用户家目录的设定
- 为用户创建家目录
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
为用户创建家目录,使每一个用户都有自己独立的目录,针对这些不同的目录,我们可以将用户的使用权限进行设定。
- 配置文件中家目录的设定
在shell中,$可以理解为站位符,我们通过测试,发现使用该符号可以自动的将用户及该用户所处的环境联系起来。由于可能存在大量的虚拟用户,我们很难一个一个的为用户创建家目录,为此我们需要通过 $ 来使系统自动匹配该用户的家目录。
vim /etc/vsftpd/vsftpd.conf
local_root=/var/ftpdir/$USER ##设置用户看到是自己的家目录
user_sub_token=$USER ##使用shell中的$USER
我们可以在配置文件中指定虚拟用户的家目录位置,要注意的是$是shell中独有的符号,我们所处的环境中,并没有该符号,我们需要告诉系统,执行该命令需要使用shell环境中的符号。
- 测试
lftp 172.25.254.131 -u user1
用户进行登录,能够直接进入自己的家目录,则我们的设置成功。
用户及其家目录设置好后,我们需要对虚拟用户的权限进行限制。vsftpd配置文件中可以设置用户的权限,但是它是针对所有用户进行设置的,那么我们该怎样只针对某一用户进行权限的设定?让我们来看一看。
三、虚拟用户权限设定
- 所有用户都具有该权限
setfacl -m u:ftp:rwx /var/ftpdir/user*/* ##所有用户都具有/etc/vsftpd/vsftpd.conf配置文件中的权限
该命令可以设定所有的用户权限,他们所拥有的权限都是相同的,这样设置明显是存在风险的。
- 设置某一用户具备某项权利
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则没有权限,不能上传和删除。