[问题]关于 vsftpd 如何建立虚拟用户?

Web、Mail、Ftp、DNS、Proxy、VPN、Samba、LDAP 等基础网络服务
回复
9981
帖子: 200
注册时间: 2007-05-19 16:24

[问题]关于 vsftpd 如何建立虚拟用户?

#1

帖子 9981 » 2007-11-17 14:22

在网上关于vsftpd的配置都讲的是匿名用户和“在linux中被添加过的”实体用户,这一部分用户既可以登录ftp又可以登录linux主机。

现在,我想请教一下:
我想建立多个虚拟用户(或者就是用户),他们“不能”访问linux主机,但是他们都拥有自己的ftp帐号和ftp默认目录,
我该怎么做?

这个问题就像服务器的空间提供商,卖域名,卖空间,提供后台支持。

在wiki中有一个示例,但是我还是不能很好理解,不知哪位能再做个细致点的说明?
=========================
http://wiki.ubuntu.org.cn/index.php?tit ... iant=zh-cn
=========================

谢谢!
9981 学习的过程
http://abcde.blog.ubuntu.org.cn/
blog上的都是原来学习时的记录,现在来看,还需重新整理
ubuntu-server-8.04-lts
我想在日常的工作和生活中应该更多的使用linux
绝对新手
学以致用
9981
帖子: 200
注册时间: 2007-05-19 16:24

#2

帖子 9981 » 2007-11-17 15:52

好像可以有另外一个方法可以实现:
用实体用户,然后将实体用户禁用。
关于实体用户的禁用好象是设置它的登录shell=不可用,还是空。。,还得查差。
9981 学习的过程
http://abcde.blog.ubuntu.org.cn/
blog上的都是原来学习时的记录,现在来看,还需重新整理
ubuntu-server-8.04-lts
我想在日常的工作和生活中应该更多的使用linux
绝对新手
学以致用
头像
windwiny
帖子: 2254
注册时间: 2007-03-13 17:26

#3

帖子 windwiny » 2007-11-17 16:10

shell=/bin/false
dbzhang800
帖子: 3182
注册时间: 2006-03-10 15:10
来自: xi'an China
联系:

#4

帖子 dbzhang800 » 2007-11-17 19:57

9981 写了:好像可以有另外一个方法可以实现:
用实体用户,然后将实体用户禁用。
关于实体用户的禁用好象是设置它的登录shell=不可用,还是空。。,还得查差。
wiki中正是这么做的,(只不过没有将该用户禁用)
头像
wanzcong
帖子: 201
注册时间: 2007-08-23 3:52

#5

帖子 wanzcong » 2007-11-17 20:03

好多文档里面是这样写的:
6.5、虚拟用户的配置

6.5.1、VSFTPD的虚拟用户介绍

  VSFTPD的本地用户本身是系统的用户,除了可以登录FTP服务器外,还可以登录系统使用其他系统资源,而VSFTPD的虚拟用户则是FTP服务的专用用户,虚拟用户只能访问FTP服务器资源。对于只需要通过FTP对系统有读写权限,而不需要其他系统资源的用户或情况来说,采用虚拟用户方式是很适合的。
  VSFTPD的虚拟用户采用单独的用户名/口令保存方式,与系统账号(passwd/shadow)分离,这大大增强了系统的安全性。VSFTPD可以采用数据库文件来保存用户/口令,如hash;也可以将用户/口令保存在数据库服务器中,如MySQL等。VSFTPD验证虚拟用户,则采用PAM方式。由于虚拟用户的用户名/口令被单独保存,因此在验证时,VSFTPD需要用一个系统用户的身份来读取数据库文件或数据库服务器以完成验证,这就是guest用户,这正如同匿名用户也需要有一个系统用户ftp一样。当然,guest用户也可以被认为是用于映射虚拟用户。
  配置虚拟用户分为几部分:guest用户的创建、用户/口令的保存、PAM认证配置、vsftpd.conf文件设置等。具体的配置方法,参考下面小节。注:在后面的例子中,假定存在虚拟用户xiaotong和xiaowang。

6.5.2 用户创建和目录设置

  在系统中添加vsftpdguest用户,作为虚拟用户在系统中的代表。

  useradd vsftpdguest

  当虚拟用户登录后,所在的位置为vsftpdguest的自家目录/home/vsftpdguest。如果要让虚拟用户登录到/var/ftp等其他目录,修改vsftpdguest的自家目录即可。

6.5.3、配置文件的设置

6.5.3.1、基本设置。

  在vsftpd.conf配置文件中,加入以下参数:
  guest_enable=YES
  guest_username=vsftpdguest

6.5.3.2、虚拟用户的权限配置。

  VSFTPD-1.2.0添加了virtual_use_local_privs参数,当该参数激活(YES)时,虚拟用户使用与本地用户相同的权限。当此参数关闭(NO)时,虚拟用户使用与匿名用户相同的权限,这也就是VSFTPD-1.2.0之前版本对虚拟用户权限的处理方法。这两者种做法相比,后者更加严格一些,特别是在有写访问的情形下。默认情况下此参数是关闭的(NO)。
  下面先介绍virtual_use_local_privs=NO时,即VSFTPD-1.2.0之前版本对虚拟用户权限的配置方法:

  ①控制虚拟用户浏览目录
  如果让用户不能浏览目录,但仍可以对文件操作,那么需要执行以下二个步骤:一,配置文件中,anon_world_readable_only=YES。二,虚拟用户目录的权限改为只能由vsftpdguest操作:
  [root@hpe45 vsftpd]# chown vsftpdguest.vsftpdguest /home/vsftpdguest
  [root@hpe45 vsftpd]# chmod 700 /home/vsftpdguest
  ②允许虚拟用户上传文件
  write_enable=YES
  anon_upload_enable=YES
  ③允许虚拟用户修改文件名和删除文件
  anon_other_write_enable=YES
  由于以上选项的设置同样会对匿名用户生效。如果不想匿名用户趁机拥有同样的权限,最好是禁止匿名用户登录。

  在VSFTPD-1.2.0中当virtual_use_local_privs=YES时,只需write_enable=YES,虚拟用户就可以就拥有写权限。

6.5.3.3、虚拟用户的其他配置

  ①限定虚拟用户在自家目录。

  chroot_local_user=NO
  chroot_list_enable=YES
  chroot_list_file=/etc/vsftpd.chroot_list
  在/etc/vsftpd.chroot_list文件中加入xiaotong和xiaowang。
  或者,chroot_local_user=YES

  ②虚拟用户的个人配置。

  如果想让个别的虚拟用户拥有自己特别的配置,同样可以建立虚拟用户的个人配置文件。在主配置文件中加入:
  user_config_dir=/etc/vsftpd/vsftpd_user_conf
  生成/etc/vsftpd/vsftpd_user_conf目录,在该目录下建立与特定虚拟用户同名的文件:
  [root@hpe45 vsftpd]# mkdir vsftpd_user_conf
  [root@hpe45 vsftpd]# cd vsftpd_user_conf
  [root@hpe45 vsftpd_user_conf]# touch xiaowang
  然后在xiaowang文件中就可以加入专对xiaowang生效的选项设置了。
  注:如果在个人配置文件中加入chroot_local_user=YES是无效的。

6.5.3.4、虚拟用户个人目录设置

  大家可以发现,无论是哪个虚拟用户,登录后所在的目录都是/home/vsftpdguest,即都是guest_username用户的自家目录。下面,介绍如何为每个虚拟用户建立自家目录。
  一种作法是在虚拟用户的个人配置文件中使用local_root选项指定虚拟用户的自家目录。以xiaowang为例,在第上步的基础上,首先/etc/vsftpd/vsftpd_user_conf/xiaowang文件中加入:
  local_root=/home/xiaowang
  新建xiaowang目录,并将权限设为vsftpdguest:
  [root@hpe45 home]# mkdir xiaowang
  [root@hpe45 home]# chown vsftpdguest.vsftpdguest ./xiaowang



──────────────────────────────────────────
我没有实际做过,我开ftp是给自己用的,只使用了匿名和本地用户
9981
帖子: 200
注册时间: 2007-05-19 16:24

#6

帖子 9981 » 2007-11-19 9:07

非常感谢5楼!
抓紧时间操练。
再次表示感谢!
9981 学习的过程
http://abcde.blog.ubuntu.org.cn/
blog上的都是原来学习时的记录,现在来看,还需重新整理
ubuntu-server-8.04-lts
我想在日常的工作和生活中应该更多的使用linux
绝对新手
学以致用
9981
帖子: 200
注册时间: 2007-05-19 16:24

新问题

#7

帖子 9981 » 2007-11-24 9:50

在vsftpd的配置中,有一处是用db_load命令将logins.txt文件导成数据库文件,但是我在运行时系统提示:“没有这个命令”
db_load -T -t hash -f /home/logins.txt /etc/vsftpd_login.db
sudo: db_load: command not found
我该怎么办?
9981 学习的过程
http://abcde.blog.ubuntu.org.cn/
blog上的都是原来学习时的记录,现在来看,还需重新整理
ubuntu-server-8.04-lts
我想在日常的工作和生活中应该更多的使用linux
绝对新手
学以致用
9981
帖子: 200
注册时间: 2007-05-19 16:24

#8

帖子 9981 » 2007-11-24 10:14

现在的问题好像应该是:
用pam方式进行用户验证,但是却没有办法将logins.txt文件转换成认证用的vsftpd_login.db。
应该是还缺那一个工具什么的。。

不知各位这样的问题碰见过没有?

该如何解决呢?

谢谢!
9981 学习的过程
http://abcde.blog.ubuntu.org.cn/
blog上的都是原来学习时的记录,现在来看,还需重新整理
ubuntu-server-8.04-lts
我想在日常的工作和生活中应该更多的使用linux
绝对新手
学以致用
mara
帖子: 24
注册时间: 2008-01-19 16:37

#9

帖子 mara » 2008-02-17 11:41

5楼的解决了我的不少问题,谢谢!
wdh
帖子: 27
注册时间: 2005-11-21 20:39

#10

帖子 wdh » 2008-03-21 9:59

sudo apt-get install libdb3-util

sudo db3_load -T -t hash -f logins.txt /etc/vsftpd_login.db
回复