vsFTPd如何限制不同虚拟用户使用不同目录

发布时间:2020-03-05编辑:脚本学堂
本文介绍了vsftpd中不同虚拟用户分配不同权限的配置方法,有关vsftpd虚拟用户配置的教程,需要的朋友参考下。

本节脚本小编为大家介绍vsftpd中为不同虚拟用户配置不同目录的方法,不了解的朋友,一直来看看吧。

一,系统环境:debian sarge

二,所需软件:vsftpd libdb3-util

三,运行模式:standlone(独立模式)

四,用户权限:以两个用户为例
tom:浏览,下载,建立新目录,上传
boy:浏览,下载,建立新目录,上传,修改,删除

五,参考文档:
/usr/share/doc/vsftpd/EXAMPLE/VIRTUAL_USERS/
/usr/share/doc/vsftpd/EXAMPLE/VIRTUAL_USERS_2/

六,配置步骤:
1,生成虚拟用户口令库文件
2,配置生成vsftpd的认证文件
3,建立虚拟用户所要访问的目录并设置相应权限
4,建立每个虚拟用户的配置文件
5,建立并修改/etc/vsftpd.conf

七,详细操作方法:
1,先建立一个包含虚拟用户名及其口令的文本文件,然后在此基础上生成虚拟用户口令库文件
 

复制代码 代码示例:
cat ~/logins.txt
tom
111
boy
222
//此文本文件的格式为:奇数行为用户名,偶数行为口令;
//即tom的口令为111, boy的口令为222

2,生成口令库文件,并更改口令库权限(注意:debian中使用db3_load,而不是用db_load)
 

复制代码 代码示例:
db3_load -T -t hash -f  ~/logins.txt   /etc/vsftpd_login.db
chmod 600 /etc/vsftpd_login.db

3,编辑生成虚拟用户所需的pam配置文件,方法有两种内容一样,配置目录: /etc/pam.d/
A.可以把/usr/share/doc/vsftpd/EXAMPLE/VIRTUAL_USERS/vsftpd.pam复制到/etc/pam.d/下面;
 

复制代码 代码示例:
cp /usr/share/doc/vsftpd/EXAMPLE/VIRTUAL_USERS/vsftpd.pam  /etc/pam.d/vsftpd.pam
 

B.也可以直接在/etc/pam.d/vsftpd中加入下面两行,把其它行都用#注释掉
 

复制代码 代码示例:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login

4,建立虚拟用户访问目录并设置virtual用户访问的权限
 

复制代码 代码示例:
groupadd virtual
useradd -d  /home/ftpsite -m virtual -g virtual
chmod 700 /home/ftpsite/
ls -ld /home/ftpsite/ 查看一下权限是否如下所示:
drwx------ 3 virtual virtual /home/ftpsite/

5,对不同的虚拟用户建立相应权限的配置
A,建立存放虚拟用户配置文件的目录
 

复制代码 代码示例:
mkdir /etc/vsftpd_user_conf

B,在此目录下建立tom的配置文件,并设置成如下内容:
 

复制代码 代码示例:
cat /etc/vsftpd_user_conf/tom
anon_world_readable_only=NO //打开浏览权限
write_enable=YES //打开写权限
anon_upload_enable=YES //上传权限
anon_mkdir_write_enable=YES //建立目录权限

C,在tom配置文件的基础上建立boy的配置文件,增加更改和删除权限
 

复制代码 代码示例:
cp /etc/vsftpd_user_conf/tom /etc/vsftpd_user_conf/boy
vi /etc/vsftpd_user_conf/boy  //增加下面这行
anon_other_write_enable=YES //更改和删除权限

(注意:一定要打开写权限,上传,更改和删除的设置才起作用)

6,建立vsftpd.conf文件,使之内容如下:
cp /usr/share/doc/vsftpd/EXAMPLE/VIRTUAL_USERS/vsftpd.conf /etc/vsftpd.conf
vi /etc/vsftpd.conf
 

复制代码 代码示例:
listen=YES
#listen_port=10021 //你可以在这里指定监听的端口,也可以用默认的
connect_from_port_20=YES
ftpd_banner=Welcome to virtual FTP service.
anonymous_enable=NO //不许匿名登录
local_enable=YES //允许本地用户登录
write_enable=NO
anon_upload_enable=NO //这里先把虚拟用户的权限设置成最低的
anon_mkdir_write_enable=NO //然后针对不同用户设置相应的权限
anon_other_write_enable=NO
chroot_local_user=YES
guest_enable=YES //允许虚拟用户登录
guest_username=virtual
pasv_min_port=30000
pasv_max_port=30999
pam_service_name=vsftpd //这里的pam根据步骤3,设成相应的
user_config_dir=/etc/vsftpd_user_conf //指定用户配置文件的目录
xferlog_enable=YES //设置日志文件
xferlog_file=/var/log/vsftpd.log
//也可以根据自己的需要,再增加其他的配置选项

7,运行,测试一下FTP服务器
vsftpd &
按照以上方法可以为虚拟用户设置不同的权限,但是每个用户登陆后都处在同一个目录,并不适合实际应用.
下面简要说说为不同的虚拟用户设置不同的家目录。
虚拟用户的个人目录

可见,无论是哪个虚拟用户,登录后所在的目录都是/home/ftpsite,即都是guest_username用户的自家目录。

以下介绍如何为每个虚拟用户建立自家目录。

首先,在主配置文件中加入以下选项:
 

复制代码 代码示例:
user_config_dir=/etc/vsftpd/vsftpd_user_conf

然后,生成/etc/vsftpd/vsftpd_user_conf目录,并在该目录下建立与特定虚拟用户同名的文件:
 

复制代码 代码示例:
[root@hpe45 root]# cd /etc/vsftpd/vsftpd_user_conf
[root@hpe45 vsftpd_user_conf]# touch xiaowang

以上的操作为虚拟用户xiaowang建立了个人配置文件/etc/vsftpd/vsftpd_user_conf/xiaowang。
接下来,在xiaowang的个人配置文件中将xiaowang的自家目录修改为/home/xiaowang,配置选项为:
 

复制代码 代码示例:
local_root=/home/xiaowang

然后,新建xiaowang目录,并将权限设为virtual:
 

复制代码 代码示例:
[root@hpe45 vsftpd_user_conf]# mkdir /home/xiaowang
[root@hpe45 vsftpd_user_conf]# chown virtual.virtual ./xiaowang
[root@hpe45 vsftpd_user_conf]# chmod 600 /home/xiaowang

经过以上设置,xiaowang登录VSFTPD后,用“pwd”指令就可以发现被自己被定位到自己的“/home/xiaowang”目录。

从文件系统层次来看,由于“/home/xiaowang”目录的权限是属于virtual的,所以其他的虚拟用户同样也可以访问xiaowang的自家目录。

解决方法,只需要让VSFTPD负责将虚拟用户限制在其自家目录,就可以避免虚拟用户的互相访问。

经过以上设置后,虚拟用户就可以拥有属于自己的目录了。