debian vsftpd安装配置

旧博客迁移文章,内容可能已失去价值,仅为留念,做了简单重新排版,勉强可看。

一 、序言

vsftpd 是一种 Linux 中非常安全且快速的 FTP 服务器,目前已经被许多大型站点所采用。vsftpd 支持将用户名和口令保存在数据库文件或数据库服务器中。vsftpd 称这种形式的用户为虚拟用户。相对于 FTP 的本地(系统)用户来说,虚拟用户只是 FTP 服务器的专有用户,虚拟用户只能访问 FTP 服务器所提供的资源,这大大增强系统本身的安全性。相对于匿名用户而言,虚拟用户需要用户名和密码才能获取 FTP 服务器中的文件,增加了对用户和下载的可管理性。

vsftpd 的用户分为三种:

匿名用户 — 都明白吧
本地用户 — linux 系统上的存在的用户
虚拟用户 — 通过映射一个 linux 本地用户来登录 ftp 的账户,即不存在系统上。

推荐使用虚拟用户,安全,而且更好管理。

说明:

  1. 但是对于一些特殊需求,虚拟用户无法满足,只能使用本地用户。比如要求登录用户对根目录下的不同子目录具有不同的权限(未实践,若有需求,自行尝试)

  2. 设置了虚拟用户,本地用户一般不能再登录(可进行特殊设置,参考vsftpd 虚拟用户和本地用户不能共存的解决方法

二、安装和配置

1. 安装
apt-get install vsftpd
apt-get install db4.8-util #生成密码数据库的工具
mkdir /etc/vsftpd

注:本次安装使用的是 debian6,db4.8-util 安装会遇到源的问题,可以使用内部源来解决

2. 创建一个 vuser.txt 文件(用完最好删除),在里面写入虚拟用户的用户名和密码,格式参照如下:
vim vuser.txt
user1
password1
user2
password2
......
3. 生成密码数据库文件
db4.8_load -T -t hash -f vuser.txt /etc/vsftpd/vsftpd_login.db
4. 配置 pam 模块认证

进入 /etc/pam.d/ 中创建 vsftpd.vuser 写入以下信息

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login  (32位系统是/lib/目录)  
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login  (32位系统是/lib/目录)  

#注:db= 后的路径即上一步生成数据库文件的路径
5. 修改 /etc/vsftpd.conf,以支持使用虚拟用户:
anonymous_enable=NO             #禁止匿名登录
local_enable=YES                #(必须置YES,因为虚拟用户是映射到某个本地用户来访问的)
guest_enable=yes                #启用虚拟用户     
guest_username=ftp              #虚拟用户映射到的系统账号(可以自行创建,如创建deployer)
pam_service_name=vsftpd.vuser                      #PAM认证文件,第四步创建的
user_config_dir=/etc/vsftpd/vsftpd_vuser_conf      #虚拟用户配置文件存放目录(下一步创建)
6. 创建虚拟用户配置文件夹
mkdir /etc/vsftpd/vsftpd_vuser_conf
7. 进入 /etc/vsftpd/vsftpd_vuser_conf 目录,创建与虚拟用户名相同名称的文件(虚拟用户名 vuser.txt 中的用户名名),比如创建 user1
local_root=/var/www/user1
    anon_world_readable_only=NO
    write_enable=YES (写权限)
    anon_mkdir_write_enable=YES (新建目录权限)
    anon_upload_enable=YES(上传权限)
    anon_other_write_enable=YES(删除/重命名的权限)
8. 重启 vsftpd 服务器

总结:客户端根据创建的虚拟用户连接服务器,虚拟用户映射到系统账号 vuser 登录 ftp,然后 FTP 根据配置文件vsftpd.conf 的设置(user_config_dir=/etc/vsftpd/vsftpd_vuser_conf)找到虚拟用户配置文件的存放目录,然后根据虚拟用户的配置文件指定的目录路径(local_root=/usr/local/amp/apache/htdocs/demo)访问到指定的目录。

注:虚拟用户访问到的文件根目录属主需要改成 vuser

其他conf配置参见官方手册:vsftpd_conf中文翻译

本文链接:参与评论 »

--EOF--

提醒:本文最后更新于 2711 天前,文中所描述的信息可能已发生改变,请谨慎使用。

Comments