新闻中心

debian 建立 vsftpd 使虚拟用户 使用不同目录


先创建个 ftpuser.txt  内容:
admin
passadmin
test
passtest

装数据库 db  (注: db3 没有了  要db4)
apt-get install db4.8-util

生成数据库
db4.8_load -T -t hash -f  ftpuser.txt /etc/vsftpd_login.db

设置权限
chmod 600 /etc/vsftpd_login.db


配置PAM
修改/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


为虚拟用户创建本地用户
       useradd -d /home/ftpsite  -s /sbin/nologin virtual
        mkdir /home/ftpsite
        chown virtual.virtual /home/ftpsite

        ls -ld /home/ftpsite
        drwxr-sr-x 2 virtual virtual 48 2006-08-18 05:48 /home/ftpsite

根据需要创建/etc/vsftpd.conf,但要确保含有一下设置:

         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
        listen=YES
        listen_port=21
        pasv_min_port=30000
        pasv_max_port=30999


重启 vsftpd   OK
原文  http://debian.linuxsir.org/doc/inthedebianway/vsftpd/vsftpd.conf-7.html

注:  vsftp默认 匿名 不能在根目录上传 建立文件  出现500错误的时候 是/home/ftp 的权限问题   ftp用户不能有写的权限  如果需要匿名上传 在  /home/ftp 目录下 建立一个  ftp:ftp 所有的 目录 即可使用匿名上传
例: mkdir upload
        chown  ftp:ftp upload

虚拟用户 如果不能登入  请注释掉  /etc/pam.d/vsftpd 里的

#@include common-account
#@include common-session
#@include common-auth
#auth   required    pam_shells.so

-----------------华丽的分割线----------------------

现在使虚拟用户 使用不同的目录 

首先 编辑vsftp.conf 增加
user_config_dir=/etc/vsftpd/vsftpd_user_conf

然后
mkdir /etc/vsftpd
mkdir /etc/vsftpd/vsftpd_user_conf


建立 虚拟用户名字的文本文件  例如:你一个虚拟用户名字为 test
touch /etc/vsftpd/vsftpd_user_conf/test

编辑test 加入test的目录
local_root=/home/test

(test的目录 要更改为 virtual用户的权限)
mkdir test
chown virtual:virtual  test