vsftpd是一个基于GPL发布的类UNIX类操作系统上运行的服务器的名字(是一种守护进程),可以运行在诸如Linux、BSD、Solaris、HP-UX以及Irix上面。该服务器支持很多其他传统的FTP服务器不支持的良好特征,本文将介绍该服务使用的一些高级配置方式。
推荐阅读:
Ubuntu实用简单的FTP架设
Ubuntu 13.04 安装 LAMP\vsftpd\Webmin\phpMyAdmin 服务及设置
RHEL6平台下SeLinux和vsftpd的匿名上传的简单案例
1、虚拟用户使用vsftpd服务器虚拟用户是指在FTP服务器上拥有账号,并且该账号只能用于文件传输服务的用户,也称作Guest用户。该类用户可以通过输入账号以及口令来进行授权登录。登录入系统后,其登录目录为指定的目录。一般情况下,该类用户既可以下载也可以上传文件。
vsftpd的虚拟用户采用单独的用户名/口令保存方式,与系统账号(passwd/shadow)分离,这大大增强了系统的安全性。vsftpd可以采用数据库文件来保存用户/口令,如hash;也可以将用户/口令保存在数据库服务器中,如MySQL等。vsftpd验证虚拟用户,则采用PAM方式。由于虚拟用户的用户名/口令被单独保存,因此在验证时,vsftpd须要用一个系统用户的身份来读取数据库文件或数据库服务器以完成验证,这就是guest用户,这正如同匿名用户也需要有一个系统用户ftp一样。当然,guest用户也可以被认为是用于映射虚拟用户。
在虚拟用户使用vsftpd服务器之前,要对服务器进行配置,主要包括如下几个步骤:
(1)生成虚拟用户口令库文件。
(2)配置生成vsftpd的认证文件。
(3)建立虚拟用户访问所需要的目录并且设定相应的访问权限。
(4)建立配置文件。
(5)重新启动vsftpd服务器。
下面是完成上述五个步骤的基本命令和过程,如下所示:
生成虚拟用户口令库文件
//生成虚拟用户口令库文件,按照格式编辑口令文件。单数行为用户名,偶数行为用户口令 #vi login.txt liyangsuper//用户名 real//口令 patterson//用户名 jef//口令 guest//用户名 guest//口令 //存盘退出配置生成vsftpd的认证文件
//使用db_load命令生成口令库文件 #db_load –T –t hash –f login.txt /etc/vsftpd/vsftpd_login.db //修改该口令库文件的权限 #chmod 600 /etc/vsftpd/vsftpd_login.db //编辑虚拟用户所需的PAM配置文件 #vi /etc/pam.d/vsftpd //在该文件中加入如下两行,并且保存后退出 auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login.db account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login.db建立虚拟用户访问所需要的目录并且设定相应的访问权限
#useradd –d /home/ftp virtual #chmod 700 /home/ftp对vsftpd的主配置文件进行配置
//为了保证安全,首先生成该文件的一个备份,然后进行修改 #cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak #vi /etc/vsftpd/vsftpd.conf //配置相关选项如下所示 listen=YES tcp_wrappers=YES //支持tcp_wrappers,限制访问 (/etc/hosts.allow,/etc/hosts.deny) listen=YES的意思是使用standalone启动vsftpd,而不是super daemon(xinetd)控制它 (vsftpd推荐使用standalone方式) anonymous_enable=NO local_enable=YES //PAM方式此处必须为YES write_enable=NO anon_upload_enable=NO anon_mkdir_write_enable=NO anon_other_write_enable=NO chroot_local_user=YES guest_enable=YES guest_username=vsftpd //采用虚拟用户形式重新启动vsftpd服务器
#service vsftpd restart经过上面几个步骤的配置后,就可以使用虚拟用户登录vsftpd服务器了,如下所示:
使用创建的虚拟用户liyangsuper,登录成功:
#ftp 127.0.0.1 Connected to 127.0.0.1 (127.0.0.1). 220 Welcome to virtual FTP service. Name (127.0.0.1:root): liyangsuper 331 Please specify the password. Password: 230 Login successful. Have fun. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 227 Entering Passive Mode (127,0,0,1,119,210) 150 Here comes the directory listing. drwxr-xr-x 2 0 0 4096 Jul 09 15:26 ftp 226 Directory send OK.能够浏览虚拟目录/home/ftp里的文件和目录
ftp> cd ftp 250 Directory successfully changed. ftp> ls 227 Entering Passive Mode (127,0,0,1,149,3) 150 Here comes the directory listing. -rw-r--r-- 1 0 0 10 Jul 09 15:26 test.c 226 Directory send OK.测试是否能够创建目录
ftp> mkdir super 550 Permission denied.//操作被禁止 ftp> bye 221 Goodbye.通过以上的测试可以知道,系统关于虚拟用户的默认用户权限与匿名用户的用户权限一致,都只有浏览以及下载的权限,而不具有上传和创建目录等写操作权限。