LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3281|回复: 6

为vsftpd虚拟用户设置不同的目录

[复制链接]
发表于 2005-5-15 21:47:22 | 显示全部楼层 |阅读模式
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
cat
boy
master
//此文本文件的格式为:单数行为用户名,偶数行为口令;
//即tom的口令为cat,boy的口令为master

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负责将虚拟用户限制在其自家目录,就可以避免虚拟用户的互相访问。经过以上设置后,虚拟用户就可以拥有属于自己的目录了。
发表于 2005-6-2 13:05:07 | 显示全部楼层
server pam_userdb[3738]: user_lookup: could not open database `/etc/vsftpd_user.db'


我按时上面说的做了,但没有设置虚拟用户单独的目录 。vsftpd启动成功,但是虚拟用户无法登录.并有如上的错误消息.

我检查一了/etc/vsftpd_user.db,文件是是存在的,并且是用db_load命令创建的,文件对任何用户是可以读写的(是为了测试方便,权限设得很松)

问题出在哪了?我用的是redhat linux as3
回复 支持 反对

使用道具 举报

发表于 2005-6-11 14:31:30 | 显示全部楼层
我也没有成功,虽然没有出错,但那个虚拟的用户登陆不了
如添加了local_root=/home/xiaowang
侧xiaowang 这个账号不能用了
回复 支持 反对

使用道具 举报

发表于 2005-6-13 13:00:01 | 显示全部楼层
问题在你的/etc/pam.d/vsftpd中设置了虚拟帐号的认证信息路径,/etc/vsftpd_login,你必须改为你的虚拟用户信息所在的文件路径,另外vsftpd_user.db还必须设置可读权限。我配置的基于mysql的虚拟用户认证都成功了。另外,你还可以设置每个用户的权限,给你个示范吧:
上传、下载、删除需要的设置:
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/usr/www/kjcroot/yangliudi

只能上传不能删除的配置为:
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=NO
local_root=/usr/www/kjcroot/yangliudi

只能下载的:
anon_world_readable_only=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
local_root=/usr/www/kjcroot/yangliudi

还有什么情况再咨询吧。

配置每个用户的目录下都有一个共享的目录的方法如下:
mount --bind 需要共享的目录 用户目录/share
如此为每个用户执行一次。每次启动机器的时候加载一次,将以上代码写到vsftpd的启动文件里。只要启动vsftpd就直接挂载。
回复 支持 反对

使用道具 举报

发表于 2005-6-13 13:18:14 | 显示全部楼层
Post by xumng
问题在你的/etc/pam.d/vsftpd中设置了虚拟帐号的认证信息路径,/etc/vsftpd_login,你必须改为你的虚拟用户信息所在的文件路径,另外vsftpd_user.db还必须设置可读权限。我配置的基于mysql的虚拟用户认证都成功了。另外,你还可以设置每个用户的权限,给你个示范吧:
上传、下载、删除需要的设置:
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/usr/www/kjcroot/yangliudi

只能上传不能删除的配置为:
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=NO
local_root=/usr/www/kjcroot/yangliudi

只能下载的:
anon_world_readable_only=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
local_root=/usr/www/kjcroot/yangliudi

还有什么情况再咨询吧。

配置每个用户的目录下都有一个共享的目录的方法如下:
mount --bind 需要共享的目录 用户目录/share
如此为每个用户执行一次。每次启动机器的时候加载一次,将以上代码写到vsftpd的启动文件里。只要启动vsftpd就直接挂载。

是如何设置虚拟用户的默认目录呀?
local_root=/usr/www/kjcroot/yangliudi是吗?
我改成其它路径的话,这个帐号就不行了
回复 支持 反对

使用道具 举报

发表于 2005-6-13 16:51:34 | 显示全部楼层
是如何设置虚拟用户的默认目录呀?
local_root=/usr/www/kjcroot/yangliudi是吗?
我改成其它路径的话,这个帐号就不行了

这个就是虚拟用户的配置文件里面的内容,配置文件的目录在user_config_dir=/etc/vsftpd_user_conf里面,在这个目录里面建立和用户名相同的文件,文件的内容就是上面写的。并且目录要存在而且权限属于virtual。
回复 支持 反对

使用道具 举报

发表于 2007-3-19 12:51:12 | 显示全部楼层
求助 哪位高手能指点一下 vsftp装法啊 QQ:156983
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表