首页 > 代码库 > 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