ftp是相当古老的传输协议之一,它的主要功能是在服务器与客户端之间进行文件传输。vsftpd是Linux下的一款小巧轻快,安全易用的FTP服务器软件,是一款在各个Linux发行版中最受推崇的FTP服务器软件。下面以rhel5.0 linux下介绍vsftpd的安装、配置。vsftpd匿名用户登录、系统用户登录、虚拟用户登录请参考页面:http://aiezu.com/article/centos7_yum_vsftpd_install_configure.html


实验坏境:

操作系统:Red Hat Enterprise Linux AS 5.0 内核版本:2.6.18-8.el5 CPU构架:i386 SMP 附件软件:Red Hat Enterprise Linux AS 5.0 DVD ISO文件

在rhel linux下安装vsftpd服务

1. 通过yum方式安装:

# yum groupinstall "FTP Server"
注:如果您的linux操作系统没有rhn上注册,并且未配置yum,请看此文: Linux下使用Yum管理本地软件包(repository)


2. 通过rpm命令安装

# mkdir -p /mnt/iso
# mount -o loop /opt/rhel5.0.iso /mnt/iso
# rpm -ivh /mnt/iso/Server/vsftpd-2.0.5-10.el5.i386.rpm


3. 通过源码编译的方式安装vsftpd

tar -zxvf vsftpd-2.0.5-10.tar.gz
cd vsftpd-2.0.5-10
make && make install


vsftpd 相关文件和目录介绍

1. /etc/vsftpd/vsftpd.conf
linux vsftpd最主要的配置文件
2. /etc/vsftpd/ftpusers
此文件用来设置不允许访问ftp服务的用户,一行一个用户名。
3. /etc/vsftpd/user_list
vsftpd自带的访问阻止功能,此文件能否生效由vsftpd.conf的userlist_enable,userlist_deny两个参数决定。
4. /etc/pam.d/vsftpd
这个是vsftpd使用pam模块的相关设置文件,主要用来认证身份和阻止特定用户。
5. /usr/sbin/vsftpd
vsftpd的主要执行文件。
6. /etc/rc.d/init.d/vsftpd
vsftpd服务管理文件。
7. /var/ftp
vsftpd的默认匿名用户登录的根目录。


Linux vsftpd配置参数介绍:

linux vsftpd的配置参数很多,我们可以通过man 5 vsftpd.conf命令获取到vsftpd.conf配置文件的详细帮助信息。下面介绍一些vsftpd常用的参数。

1. 与服务器相关的设置参数


connect_from_port_20=YES|NO
是否使用20号端口做为ftp-data的端口号
listen_port=21
设置ftp命令通道的端口号
dirmessange_enable=YES|NO
message_file=.message
上面两个参数用来配置用户进入到目录时显示某个文件中的内容。
listen=YES|NO
设置vsftpd是否stand alone方式启动。
pasv_enable=YES|NO
是否开启被动模式。
write_enable=YES|NO
用来设置是否允许用户上传文件。
idle_session_timeout=300
如果用户300秒内没有命令操作,则强制离线。
max_Clients=0
当vsftpd以stand alone运行时,用来设置最大同时在线数。
max_per_ip=0 用于设置同一IP允许的同时最大连接数。
pasv_max_port=0
pasv_min_port=0
用来设置被动模式(passive mode)使用的端口范围,为0时不受限制。
ftpd_banner="欢迎语句"
banner_file=/path/file
设置当用户连接到vsftpd服务器时显示的欢迎信息。


2. 与用户相关的参数

guest_username=ftp
指定来宾用户身份的用户名
guest_enable=YES|NO
是否将非匿名用户映射成来宾用户。
local_enable=YES|NO
是否允许/etc/passwd中的用户以实体用户的身份登录到ftp服务器。
local_max_rate=0 设置实体用户的传输速度,单位为bytes/s。
chroot_local_user=YES|NO
chroot_list_enable=YES|NO
chroot_list_file=/etc/vsftpd/chroot_list
用来设置哪些用户被限制在自己的目录内无法离开。
userlist_enable=YES|NO
userlist_deny=YES|NO
userlist_file=/etc/vsftpd/user_list
用来阻止相关用户登录到vsftpd服务器


3. 匿名用户相关的参数

anonymous_enable=YES|NO
是否允许anonymouns用户登录到vsftpd服务器,下面的设置仅在此参数为YES时才有效。
anon_world_readable_only=YES|NO
仅仅允许下载可读的文件。
anon_mkdir_write_enable=YES|NO
anon_upload_enable=YES|NO
anon_other_write_enable=YES|NO
用于设置相关可写权限。
no_anon_password=YES|NO
anonymous登录时是否可以省略密码。
anon_max_rate=0
设置anonymous的最大传输速度。
anon_umask=077
anonymous用户上传文件的权限掩码。


4. 与安全相关的参数:

ascii_download_enable=YES|NO
ascii_upload_enable=YES|NO
是否允许ascii方式传输。
xferlog_enable=YES|NO
xferlog_file=/var/log/vsftpd.log
是否记录用户下载上传的文件。


Linux下vsftpd服务的启动

1. 使用stand alone模式启动:
# /etc/rc.d/init.d/vsftpd start
# service vsftpd start


2. 使用super daemon来启动:

①. 将/etc/vsftpd/vsftpd.conf中的"listen=YES"改成"listen=NO" ②. # vi /etc/xinetd.d/vsftpd

service ftp
{
socket_type=stream
wait=no
user=root
server=/usr/sbin/vsftpd
log_on_success+=DURATION USERID
log_on_failure+=USERID
nice=10
disable=no
}
#注意大小写


③. # service vsftpd stop

# service xinetd restart
  vsftpd匿名用户登录、系统用户登录、虚拟用户登录请参考页面:http://aiezu.com/article/centos7_yum_vsftpd_install_configure.html


常见问题:

1. 问:我在客户端成功的登录到ftp服务器上后,为什么使用dir命令没有任何反应? 

答:您可能位于局域网内,请尝试使用被动模式。


 2. 问:为什么我的root用户不能登陆到我的vsftpd ftp服务器? 

答:linux默认情况下不允许root登陆到ftp服务器的,在ftpuser,user_list去掉root用户就可以登录了。