首页 > 代码库 > vsftpd在Ubuntu 64位下的多用户多目录配置

vsftpd在Ubuntu 64位下的多用户多目录配置

研究了两天vsftpd,从网上找了很多资料,不是出这问题就是那问题,幸好终于解决了,下面贴出我的配置过程。不喜勿喷。。。

一、安装vsftpd

sudo apt-get install vsftpd

安装完以后大致的目录介绍

/etc/vsftpd/vsftpd.conf

主配置文件

/usr/sbin/vsftpd

Vsftpd的主程序

/etc/rc.d/init.d/vsftpd

启动脚本

/etc/pam.d/vsftpd

PAM认证文件(此文件中file=/etc/vsftpd/ftpusers字段,指明阻止访问的用户来自/etc/vsftpd/ftpusers文件中的用户)

/etc/vsftpd/ftpusers

禁止使用vsftpd的用户列表文件。记录不允许访问FTP服务器的用户名单,管理员可以把一些对系统安全有威胁的用户账号记录在此文件中,以免用户从FTP登录后获得大于上传下载操作的权利,而对系统造成损坏。(注意:linux-4中此文件在/etc/目录下)

/etc/vsftpd/user_list

禁止或允许使用vsftpd的用户列表文件。这个文件中指定的用户缺省情况(即在/etc/vsftpd/vsftpd.conf中设置userlist_deny=YES)下也不能访问FTP服务器,在设置了userlist_deny=NO时,仅允许user_list中指定的用户访问FTP服务器。(注意:linux-4中此文件在/etc/目录下)

/var/ftp

匿名用户主目录;本地用户主目录为:/home/用户主目录,即登录后进入自己家目录

/var/ftp/pub

匿名用户的下载目录,此目录需赋权根chmod 1777 pub(1为特殊权限,使上载后无法删除)

/etc/logrotate.d/vsftpd.log

Vsftpd的日志文件



二、配置用户

在/etc下创建目录vsftpd

mkdir vsftpd
cd vsftpd
vi user.txt

user.txt中加入用户名、密码,奇数行为用户名,偶数行为密码

ftp1
ftp1
ftp2
ftp2

使用db_load命令将用户生成数据库

如果没有db_load命令先安装

apt-get install db-util

然后生成数据库

db_load -T -t hash -f user.txt user.db
sudo chmod 600 user.db

三、创建不同用户的配置

mkdir user_conf
cd user_conf
sudo touch ftp1 ftp2  //对应user.txt中的用户

在ftp1中写入:主要是测试,先简单的写

anon_world_readable_only=NO
local_root=/opt/vsftpd/ftp1

在ftp2中写入: 

anon_world_readable_only=NO
local_root=/home/ftp    //与ftp1完全不同的两个目录

四、修改pam.d下的vsftpd,我就是在这走了很多弯路,把vsftpd全部贴出,供大家看与网上的有什么区别

cd /etc/pam.d
vi vsftpd
auth    required        pam_userdb.so   db=/etc/vsftpd/user
account required        pam_userdb.so   db=/etc/vsftpd/user

其中db=....指向我们之前建立的user.db

五、创建虚拟帐号:

sudo useradd virtual -d /opt/vsftpd -s /sbin/nologin  //不允许登录
chmod a-w /opt/vsftpd   //修改目录的权限
chown virtual:virtual /opt/vsftpd   //修改目录属于的用户组,因为我们创建了两个ftp位置,所以都要修改权限、用户组

chmod a-w /home/ftp
chown virtual:virtual /home/ftp

六、修改/etc/vsftpd.conf

#配置
listen=YES

#匿名用户配置
#是否开启匿名用户登录
anonymous_enable=NO

xferlog_std_format=YES
#使用上传下载日志,日志文件默认为/var/log/vsftpd.log,可以通过xferlog_file选项修改
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
#日志使用标准xferlog格式
xferlog_std_format=YES

local_enable=YES
use_localtime=YES
write_enable=YES

guest_enable=YES
guest_username=virtual  //对应前面添加的用户virtual
user_config_dir=/etc/vsftpd/user_conf   //对应前面添加的每个用户不同配置的目录

dirmessage_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd   //对应/etc/pam.d/vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd
userlist_enable=YES