配置 VSFTPD --另一种途径

如果你正在维护一个提供虚拟空间的服务器,为安全起见,你可能希望网站管理员只能管理他自己的文件。一个好的解决方法是:为所有的管理员配置 VSFTPD 的虚拟用户和根目录。

上一篇文章里,我介绍了如何配置 VSFTPD 的虚拟用户。本文将说明如何用另一种方法配置 VSFTPD,这个方法需要在系统上创建真实的用户。

1、安装 VSFTPD

对于 Red Hat, CentOS 和 Fedora 这些基于 RPM 的系统,可以用下面的命令安装 VSFTPD:

# yum install vsftpd

对于 Debian and Ubuntu,相应的命令是:

# apt-get install vsftpd

2、配置虚拟用户和密码验证

我们可以为每个虚拟网站的管理员创建一个真实的帐号。不过我们将只允许这些帐号使用 FTP 访问我们的服务器。
首先,使用“useradd”命令创建帐号。这里需要注意的一些要点是:

  • 用户组:为方便网站管理员管理自己的文件,我们可以指定他们的帐号与系统的 HTTP 服务器运行时使用的组相同。对于 Apache 服务器,这个组通常是“apache”;对于 lighttpd,这个组通常是“lighttpd”。
  • 虚拟目录:我们指定这些用户的主目录跟他们的虚拟网站的 DocumentRoot 一致。我们把这些目录的属性设置为 HTTP 服务器运行的用户组可写。
  • 登录 shell:为了把虚拟用户限制在只能使用 FTP 登录,我们把他们的登录 shell 设置成 /sbin/nologin。

例如:

# useradd -g apache -d /var/www/vhosts/mike -s /sbin/nologin mike
# chmod g+w /var/www/vhosts/mike
# passwd mike
Changing password for user mike.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

3、配置 VSFTPD

创建配置文件 /etc/vsftpd/vsftpd-virtual.conf:

# disables anonymous FTP
anonymous_enable=NO
# enables non-anonymous FTP
local_enable=YES
# enables uploads and new directories
write_enable=YES
# authentication of virtual uses
pam_service_name=login
# the virtual user is restricted to the virtual FTP area
chroot_local_user=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

5、启动 VSFTPD 并测试

用下面的命令启动 VSFTPD:

# /usr/sbin/vsftpd /etc/vsftpd/vsftpd-virtual.conf

用 lftp 命令测试虚拟用户的访问权限:

# lftp -u mike -p 60021 192.168.1.101

所有的虚拟用户应该可以管理他目录下的所有子目录和文件。


留下评论