RHEL4系统中默认没有安装vsftpd服务器,vsftpd服务器的安装文件位于第1张安装光盘中,安装文件名称是vsftpd-2.0.1-5.EL4.5.i386.rpm ,使用rpm命令可顺利安装该软件包。

#cd /media/cdrom/RedHat/RPMS

#rpm -ivh vsftpd-2.0.1-5.EL4.5.i386.rpm 

vsftpd.conf是vsftpd服务器的主配置文件位于/etc/vsftpd/vsftpd.conf,vsftpd.conf文件中的缺省配置为:

anonymous_enable=YES  //anonymous_enable设置为“YES”时FTP服务器允许匿名登录

local_enable=YES  //local_enable设置为“YES”时允许本地用户登录

write_enable=YES  //write_enable设置为“YES”时FTP服务器开放对本地用户的写权限

local_umask=022  //local_umask设置项设置本地用户的文件生成掩码

dirmessage_enable=YES  //dirmessage_enable设置为“YES”时当切换到FTP服务器中的某个目录时,将显示该目录下的.message隐含文件的内容

xferlog_enable=YES  //xferlog_enable设置为“YES”时FTP服务器将启用上传和下载日志

connect_from_port_20=YES  //connect_from_port_20设置为“YES”时FTP服务器将启用FTP数据端口的连接请求

xferlog_std_format=YES  //xferlog_std_format设置为“YES”时FTP服务器将使用标准的ftpd xferlog日志格式

pam_service_name=vsftpd  //pam_service_name设置PAM认证服务的配置文件名称

userlist_enable=YES  //userlist_enable设置为“YES”时FTP服务器将检查userlist_file设置文件中指定的用户是否可以访问vsftpd服务器

listen=YES  //listen设置为“YES”时FTP服务器将处于独立启动模式

tcp_wrappers=YES  //tcp_wrappers设置为“YES”时FTP服务器将使用tcp_wrappers作为主机访问控制方式

vsftpd.ftpusers用于保存不允许进行FTP登录的本地用户帐号,vsftpd.ftpusers文件中可禁止高权限本地用户登录FTP服务器,提高了系统的安全性。

vsftpd.user_list文件具有对vsftpd服务器更灵活的用户访问控制(/etc/vsftpd.user_list),使用vsftpd.user_list文件需要在主配置文件vsftpd.conf中进行设置。

设置禁止vsftpd.user_list文件中的用户登录

userlist_enable=YES

userlist_deny=YES

设置只允许vsftpd.user_list文件中的用户登录

userlist_enable=YES

userlist_deny=NO 

vsftpd中支持的用户类型:

1、匿名用户:使用公共的用户帐号进行登录,通常用于提供公共文件下载服务。

2、本地用户:使用Linux系统用户帐号登录,每个用户都使用各自的宿主目录。

4、虚拟用户:使用独立的文件保存虚拟帐号,安全性较好,可替代本地用户。

vsftpd服务器提供匿名用户登录的功能,匿名用户使用的登录用户名anonymous或ftp,匿名FTP用户登录的口令通常是使用用户的E-mail地址,在vsftpd中输入任何字符串或直接回车都可以登录,所有匿名用户都登录到相同的目录中/var/ftp,FTP服务器的匿名登录可用于构建公共的文件下载服务器。

本地用户登录, 使用Linux系统用户帐号和口令登录ftp服务器, 登录FTP服务器后的目录为用户宿主目录,用户可转换到系统中的其他目录,存在安全隐患;但可以设置将本地用户禁锢在宿主目录中。在vsftpd.conf文件中添加设置项,重新启动vsftpd服务。使用ftp客户端验证,本地用户登录FTP服务器后,宿主目录将作为根(/)目录。

chroot_local_user=YES  //添加到vsftpd.conf中,将本地用户禁锢在宿主目录中

# service vsftpd restart  //重新启动vsftpd服务

FTP服务器启动脚本名称是vsftpd(/etc/init.d/vsftpd ),通过该脚本可以实现服务器的启动、重启、停上、查看状态等。

# chkconfig –level 35 vsftpd on  //vsftpd服务需要设置在运行级别3和5自动启动

# service vsftpd start  //服务器启动

# service vsftpd restart  //服务器重启动

# service vsftpd stop  //服务器停止

# service vsftpd status  /服务器状态查询

vsftpd虚拟用户帐号的设置步骤:

1、建立虚拟用户口令库文件

2、生成vsftpd的认证文件

3、建立虚拟用户所需的PAM配置文件

4、建立虚拟用户所要访问的目录并设置相应权限

5、设置vsftpd.conf配置文件

1、建立虚拟用户口令库文件,口令库文件中奇数行设置用户名,偶数行设置口令。

# cat logins.txt

mike

pwabcd

john

pw1234

2、生成vsftpd的认证文件,使用db_load命令生成认证文件(注:要使用db_load命令需要安装第二张光盘中的db4-utils-4.2.52-7.1.i386.rpm包)。

# db_load -T -t hash -f logins.txt /etc/vsftpd/vsftpd_login.db

设置认证文件只对用户可读可写

# chmod 600 /etc/vsftpd/vsftpd_login.db

3、建立虚拟用户所需的PAM配置文件,手工建立vsftpd.vu文件

# cat /etc/pam.d/vsftpd.vu

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

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

4、建立虚拟用户及要访问的目录并设置相应的权限,建立所有FTP虚拟用户帐号使用的系统用户帐号,并设置该帐号宿主目录的权限

# useradd -d /home/ftpsite virtual

# chmod 700 /home/ftpsite/

5、设置vsftpd.conf配置文件,在配置文件中添加虚拟用户的配置内容

guest_enable=YES

guest_username=virtual

pam_service_name=vsftpd.vu

重新启动vsftpd服务程序,对vsftpd.conf文件修改后需要重新启动vsftpd服务程序

# service vsftpd restart

使用ftp命令登录FTP服务器,使用已配置的虚拟用户名和口令登录FTP服务器,如能够正常登录说明虚拟帐号配置成功;为了系统的安全,缺省配置的虚拟用户只具有较低的用户权限同,可以通过为每个虚拟用户建立独立的配置文件增加用户的权限。

设置主配置文件,在vsftpd.conf文件中添加用户配置文件目录设置

user_config_dir=/etc/vsftpd_user_conf

建立用户配置文件目录,使用mkdir命令建立用户配置文件目录

# mkdir /etc/vsftpd_user_conf

为虚拟用户建立单独的配置文件,用户配置文件名称与用户名相同

/etc/vsftpd_user_conf/mike

/etc/vsftpd_user_conf/john

每个FTP虚拟用户都可以独立设置其权限

anon_world_readable_only=NO  /“anon_world_readable_only=NO”表示用户可以浏览FTP目录和下载文件

anon_upload_enable=YES  //“anon_upload_enable=YES”表示用户可以上传文件

anon_mkdir_write_enable=YES  //“anon_mkdir_write_enable=YES”表示用户具有建立和删除目录的权利

anon_other_write_enable=YES  //“anon_other_write_enable=YES”表示用户具有文件改名和删除文件的权限