配置 VSFTPD 的虚拟用户
如果你正在维护一个提供虚拟空间的服务器,为安全起见,你可能希望网站管理员只能管理他自己的文件。一个好的解决方法是:为所有的管理员配置 VSFTPD 的虚拟用户和根目录。下面我们就简明地解说一下如何做。
(参考:配置 VSFTPD 的虚拟用户--另一种途径)
1、安装 of VSFTPD
对于 Red Hat, CentOS 和 Fedora 这些基于 RPM 的系统,可以用下面的命令安装 VSFTPD:
# yum install vsftpd
对于 Debian and Ubuntu,相应的命令是:
# apt-get install vsftpd
2、配置虚拟用户和密码验证
我们将使用 PAM 的 pam_userdb 来为虚拟用户提供密码验证。这需要一个 “db” 格式的数据库。我们需要“db_load”命令。对于 CentOS 和 Fedora,这个命令在 db4-utils 包里:
# yum install db4-utils
对于 Ubuntu:
# apt-get install db4.2-util
要创建“db”格式的文件,首先,我们创建一个普通文件文件“virtual-users.txt”,这个文件的格式非常简单,就是一行用户名,一行密码,循环往下写:
mary
123456
jack
654321
然后,执行下面的命令创建真正的数据库:
# db_load -T -t hash -f virtual-users.txt /etc/vsftpd/virtual-users.db
现在,创建一个 PAM 文件 /etc/pam.d/vsftpd-virtual 来使用这个数据库:
auth required pam_userdb.so db=/etc/vsftpd/virtual-users
account required pam_userdb.so db=/etc/vsftpd/virtual-users
3、配置 VSFTPD
创建配置文件 /etc/vsftpd/vsftpd-virtual.conf:
# disables anonymous FTP
anonymous_enable=NO
# enables non-anonymous FTP
local_enable=YES
# activates virtual users
guest_enable=YES
# virtual users to use local privs, not anon privs
virtual_use_local_privs=YES
# enables uploads and new directories
write_enable=YES
# the PAM file used by authentication of virtual uses
pam_service_name=vsftpd-virtual
# in conjunction with 'local_root',
# specifies a home directory for each virtual user
user_sub_token=$USER
local_root=/var/www/virtual/$USER
# the virtual user is restricted to the virtual FTP area
chroot_local_user=YES
# hides the FTP server user IDs and just display "ftp" in directory listings
hide_ids=YES
# runs vsftpd in standalone mode
listen=YES
# listens on this port for incoming FTP connections
listen_port=60021
# the minimum port to allocate for PASV style data connections
pasv_min_port=62222
# the maximum port to allocate for PASV style data connections
pasv_max_port=63333
# controls whether PORT style data connections use port 20 (ftp-data)
connect_from_port_20=YES
# the umask for file creation
local_umask=022
4、创建用户主目录
在上面的配置文件指定的目录下,创建所有虚拟用户的主目录(如果这些用户已经有自己的文件目录,只需要创建一个符号连接就可以了),并改变这些目录的属主为 ftp:
# mkdir /var/www/virtual/mary
# chown ftp:ftp /var/www/virtual/mary
5、启动 VSFTPD 并测试
用下面的命令启动 VSFTPD:
# /usr/sbin/vsftpd /etc/vsftpd/vsftpd-virtual.conf
用 lftp 命令测试虚拟用户的访问权限:
# lftp -u mary -p 60021 192.168.1.101
所有的虚拟用户应该可以管理他目录下的所有子目录和文件。

六月 17th, 2009 at 12:39
очень интересно.