菜鸟配置FTP服务器之1
Ubuntu11.04下配置VSFTP的虚拟用户
1.简介
VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来,编制者的初衷是代码的安全。
安全性是编写VSFTP的初衷,除了这与生俱来的安全特性以外,高速与高稳定性也是VSFTP的两个重要特点。
在速度方面,使用ASCII代码的模式下载数据时,VSFTP的速度是Wu-FTP的两倍,如果Linux主机使用2.4.*的内核,在千兆以太网上的下载速度可达86MB/S。
在稳定方面,VSFTP就更加的出色,VSFTP在单机(非集群)上支持4000个以上的并发用户同时连接,根据Red Hat的Ftp服务器的数据,VSFTP服务器可以支持15000个并发用户。
优点:
1) 它是一个安全、高速、稳定的FTP服务器;
2) 它可以做基于多个IP的虚拟FTP主机服务器;
3) 匿名服务设置十分方便;
4) 匿名FTP的根目录不需要任何特殊的目录结构,或系统程序或其它的系统文件;
5) 不执行任何外部程序,从而减少了安全隐患;
6) 支持虚拟用户,并且每个虚拟用户可以具有独立的属性配置;
7) 可以设置从inetd中启动,或者独立的FTP服务器两种运行方式;
8) 支持两种认证方式(PAP或xinetd/ tcp_wrappers);
9) 支持带宽限制;
缺点:
VSFTP 没有处理文件编码转换,从windows客户端访问时有乱码现象。
解决办法:
1) 使用vsftp的补丁;
2) 转换服务器目录文件编码,linux下:
convmvfs /ftp/pub_gbk -o srcdir=/ftp/pub, icharset=utf8,ocharset=gbk的代码,那么访问/ftp/pub_gbk的时候文件名就都是GBK的了,windows下也就不会有乱码。
3) 也可以用下面这个命令把文件名编码转换一下:
convmv -f UTF-8 -t GBK -r yourfile --notest
不用--notest选项,只显示转换后的结果,不对文件真正进行操作。
4) windows不使用资源管理器、IE来访问服务器,使用FTP客户端工具来访问服务器,找能设置编码的FTP客户端,设置一下编码就可以了。
2. VSFTP的配置文件介绍
1) /etc/vsftpd.conf
严格意思上讲,VSFTP只有这一个配置文件,这个文件的配置会在下面做出详细的介绍。
2) /etc/pam.d/vsftpd
这是VSFTP使用PAM模块时需要的配置文件。
3) /etc/vsftpd.user_list
这个文件是否能够生效与vdftpd.conf配置文件内的两个参数有关,分别是userlist_enable和userlist_deny。如果userlist_enable=YES 且 userlist_deny=YES 则上述文件中的用户将不能登录FTP服务器;如果userlist_enable=YES 且 userlist_deny=NO 则只有上述文件中的用户可以登录FTP服务器。
4) /etc/vsftpd.chroot_list
这个文件本身不存在需要自己建立,这些文件的主要功能是可以将某些账号的用户chroot建立在他们的默认用户主目录下。这个文件和vsftpd.conf中chroot_list_enable、chroot_list_file两个参数有关。
5) /etc/vsftpd/vsftpd_user_conf/
虚拟用户账户配置目录
6) /etc/vsftpd/welcome.txt
欢迎词
7) /etc/vsftpd/vusers.list
虚拟用户目录,包括用户和密码
3.配置VSFTP服务器,主要针对虚拟用户
安装VSFTP:sudo apt-get install vsftpd
安装DB软件包:sudo apt-get install db-util
配置虚拟用户(进入/etc/vsftpd下操作)
1) mkdir /etc/vsftpd
建立虚拟用户口令库文件
# vim vusers.list (第一行写 用户名,第二行写 密码,保存退出)
user1
user1pwd
user2
user2pwd
2) 生成vsftpd的认证文件
# db_load -T -t hash -f vusers.list /etc/vsftpd/vsftpd_login.db (生成认证文件)
# chmod 600 /etc/vsftpd/vsftpd_login.db (赋权)
3) 建立虚拟用户所需的PAM配置文件
# vim /etc/pam.d/vsftpd (加入下面内容,其他全部注释。)
auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd/vsftpd_login
4) 建立虚拟用户要访问的目录并设置权限
# useradd -d /home/ftp -s /sbin/nologin virtual
# chmod 777 /home/ftp/
这步所建立的virtual用户只能登录FTP服务器,不能登录主机(不是实体用户),创建virtual的目的是方便设置接下来创建的虚拟用户,让他们都享有virtual的权限。
5) /home/ftp设定了virtual这个用户只能享用ftp这个目录内的资源,所以接下来的虚拟用户的权限都将会束缚在这个目录下。
6) 在 vsftpd.conf 添加以下参数配置项:
guest_enable=YES
guest_username=virtual
7) 对不同虚拟用户设置不同权限
# mkdir /etc/vsftpd/vsftpd_user_conf
# vim /etc/vsftpd/vsftpd_user_conf/user1 (建立用户单独配置文件,文件名就是用户名)
local_root=/home/ftp/user1 #这里的虚拟用户目录可以根据实际情况修改
write_enable=YES
virtual_use_local_privs=YES #虚拟用户具有写权限(上传、下载、删除、重命名)
以上操作告诉我们,我们可以在每个虚拟用户的配置文件中设定他的权限和配置他独有的环境,配置的过程和我们配置实体用户的过程是一样的。我在自己的虚拟机中设置了3个虚拟用户和一个实体用户,由于开启了“访客模式”,所以我的实体用户也被FTP认定为了虚拟用户,所以我不得不重新设置了我的实体用户的配置文件。
8) 在 vsftpd.conf 添加以下参数配置项:
user_config_dir=/etc/vsftpd/vsftpd_user_conf(指定虚拟用户文件路径)
9) 禁锢FTP用户在宿主目录
将需要禁锢的用户名写入“vsftpd.chroot_list”文件中,需要熟悉vsftpd.chroot_list
# vim /etc/vsftpd.chroot_list
user1
user2
user3
10) 在 vsftpd.conf 添加以下参数配置项:
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
4.备注
virtual_use_local_privs参数:
当virtual_use_local_privs=YES时,虚拟用户和本地用户有相同的权限;
当virtual_use_local_privs=NO时,虚拟用户和匿名用户有相同的权限,默认NO。
当virtual_use_local_privs=YES
write_enable=YES
虚拟用户具有写权限(上传、下载、删除、重命名)。
当virtual_use_local_privs=NO
write_enable=YES
anon_world_readable_only=YES,
anon_upload_enable=YES
虚拟用户不能浏览目录,只能上传文件,无其他权限。
当 virtual_use_local_privs=NO
write_enable=YES
anon_world_readable_only=NO,
anon_upload_enable=NO
虚拟用户只能下载文件,无其他权限。
当 virtual_use_local_privs=NO
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
虚拟用户只能上传和下载文件,无其他权限。
当 virtual_use_local_privs=NO
write_enable=YES
anon_world_readable_only=NO
anon_mkdir_write_enable=YES
虚拟用户只能下载文件和创建文件夹,无其他权限。
当 virtual_use_local_privs=NO
write_enable=YES
anon_world_readable_only=NO
anon_other_write_enable=YES
虚拟用户只能下载、删除和重命名文件,无其他权限。
5.我的配置文件(仅供参考)
/etc/vsftpd.conf的配置文本
anonymous_enable=NO
#anon_root=/home/ftp
#不允许匿名用户登陆
#下边的设置和实体用户有关
local_enable=YES
write_enable=YES
local_umask=002
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd.user_list
#local_root=/home/ftp
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
local_max_rate=100000
max_clients=10
max_per_ip=1
#下边的设置与环境服务器有关
use_localtime=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
listen=YES
#下边的设置与虚拟用户登陆有关
guest_enable=YES
guest_username=virtual
user_config_dir=/etc/vsftpd/vsftpd_user_conf
pam_service_name=/etc/pam.d/vsftpd
#rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
tcp_wrappers=YES
banner_file=/etc/vsftpd/welcome.txt
#如果FTP客户端软件设置的是被动连接,那么vsftp配置文件就要设置被动端口:
pasv_min_port=3000
pasv_max_port=3010
/etc/vsftpd.chroot_list的配置文本
lyang
lyang1
lyang2
lyang3
/etc/vsftpd.user_list的配置文本
daemon
bin
sys
games
man
lp
news
uucp
proxy
www-data
backup
list
irc
gnats
libuuid
syslog
colord
messagebus
lightdm
avahi-autoipd
avahi
usbmux
pulse
rtkit
speech-dispatcher
hplip
saned
uml-net
dhcpd
/etc/vsftpd/vusers.list的配置文本
lyang
218909
lyang1
123456
lyang2
123456
lyang3
123456
/etc/vsftpd/welcome.txt的配置文本
欢迎光临lyang的小站,本站提供FTP相关服务!
主要针对实体用户提供服务
若有任何问题请TEL--->1323712****
/etc/vsftpd/vsftpd_user_conf/lyang1的配置文件
local_root=/home/ftp/lyang1
write_enable=YES
virtual_use_local_privs=YES