在Linux操作系统平台可以选择使用wu-ftpd,porftpd,vsftpd等多个FTP服务器软件,这些软件都有各自的特点。wu-ftpd服务器历史悠久,可以用于构建多种类型的FTP服务器,并且稳定性也比较出色,但是wu-ftpd发布较早,服务器的组织较为零散,安全性porftpd比vsftpd要差一些。vsftpd名称中的vs是very secure的缩写,即“非常安全”的ftp服务器,同时vsftpd的速度是wu-ftpd的两倍,vsftp在单机上支持4000个以上的用户同时连接,下面主要介绍vsftpd服务器的搭建以及使用虚拟用户的方式登陆。

vsftp允许三种方式登陆。匿名登陆(使用ftp或anonymous,密码为空或是电子邮件地址)、本地用户登陆(在vsftp服务器存在的系统用户,但特殊的用户如root除外)、虚拟用户(不能进行系统登陆,但能用于ftp登陆的用户)。

[root@Linserv ~]# rpm -ivh /mnt/Server/vsftpd-2.0.5-10.el5.i386.rpm
warning: /mnt/Server/vsftpd-2.0.5-10.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
   1:vsftpd                 ########################################### [100%]

 

[root@Linserv /]# vi /etc/vsftpd/ftpusers
# Users that are not allowed to login via ftp
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

[root@Linserv /]# vi /etc/vsftpd/user_list
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
ftp
anonymous
pop3
smtp
exchange

[root@Linserv /]# vi login.txt
pop3
Naruto
smtp
Naruto
exchange
123

[root@Linserv /]# rpm -ivh /mnt/Server/db4-utils-4.3.29-9.fc6.i386.rpm
warning: /mnt/Server/db4-utils-4.3.29-9.fc6.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
   1:db4-utils              ########################################### [100%]


[root@Linserv /]# db_load -t hash -T -f /login.txt /etc/vsftpd/login.db

[root@Linserv /]# ll /etc/vsftpd/login.db
-rw-r--r-- 1 root root 12288 Nov 14 08:34 /etc/vsftpd/login.db
[root@Linserv /]# chmod 600 /etc/vsftpd/login.db
[root@Linserv /]# ll /etc/vsftpd/login.db
-rw------- 1 root root 12288 Nov 14 08:34 /etc/vsftpd/login.db
                   
[root@Linserv /]# vi /etc/pam.d/vsftpd.yang

auth    required /lib/security/pam_userdb.so    db=/etc/vsftpd/login
account required /lib/security/pam_userdb.so    db=/etc/vsftpd/login

root@Linserv /]# useradd -d /home/ftpsite virtual
[root@Linserv /]# chmod 700 /home/ftpsite/
[root@Linserv /]# ll -d /home/ftpsite/
drwx------ 2 virtual virtual 4096 Nov 14 08:42 /home/ftpsite/


[root@Linserv /]# vi /etc/vsftpd/vsftpd.conf

anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd.yang
userlist_enable=YES
userlist_deny=no
tcp_wrappers=YES
guest_enable=yes
guest_username=virtual
chroot_local_user=yes
hide_ids=yes
max_clients=100
max_per_ip=5
anon_max_rate=200000
user_config_dir=/etc/vsftpd/user_config

[root@Linserv /]# ls /etc/vsftpd/user_config/
anonymous exchange ftp pop3 smtp

[root@Linserv /]# cat /etc/vsftpd/user_config/pop3
anon_world_readable_only=no
anon_upload_enable=yes

[root@Linserv /]# service vsftpd start
Starting vsftpd for vsftpd:                                [ OK ]

[root@Linserv /]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
news:x:9:13:news:/etc/news:
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
rpm:x:37:37::/var/lib/rpm:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin
smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
pcap:x:77:77::/var/arpwatch:/sbin/nologin
a:x:500:500::/home/a:/bin/bash
b:x:501:501::/home/b:/bin/bash
virtual:x:502:502::/home/ftpsite:/bin/bash