环境:Ubuntu9.04Server+VSFTPD2.0.7slmagicbox@ubuntu904server:~$uname-aLinuxubuntu904server2.6.28-11-server#42-UbuntuSMPFriApr1702:48:10UTC2009i686GNU/Linuxslmagicbox@ubuntu904server:~$dpkg-l|grepvsftpdiivsftpd2.0.7-0ubuntu1TheVerySecureFTPDaemon虚拟用户我们登录FTP有三种方式,匿名登录、本地用户登录和虚拟用户登录。匿名登录:在登录FTP时使用默认的用户名,一般是ftp或anonymous。本地用户登录:使用系统用户登录,在/etc/passwd中。虚拟用户登录:这是FTP专有用户,有两种方式实现虚拟用户,本地数据文件和数据库服务器。FTP虚拟用户是FTP服务器的专有用户,使用虚拟用户登录FTP,只能访问FTP服务器提供的资源,大大增强了系统的安全。原始配置文件/etc/vsftpd.conf:本配置文件为安装vsftpd后默认生成的,以“#”开头为注释项#Exampleconfigfile/etc/vsftpd.conflisten=YES#以standalone模式运行vsftpd#listen_ipv6=YESanonymous_enable=YES#允许匿名用户访问#local_enable=YES#write_enable=YES#local_umask=022#anon_upload_enable=YES#anon_mkdir_write_enable=YESdirmessage_enable=YES#当用户首次进入FTP服务器的目录时,显示该目录下的message消息,默认为.message文件,可以用message_file来定义xferlog_enable=YES#启用日志,默认路径/var/log/vsftpd.logconnect_from_port_20=YES#数据连接使用默认的ftp-data端口(20端口)#chown_uploads=YES#chown_username=whoever#xferlog_file=/var/log/vsftpd.log#xferlog_std_format=YES#idle_session_timeout=600#data_connection_timeout=120#nopriv_user=ftpsecure#async_abor_enable=YES#ascii_upload_enable=YES#ascii_download_enable=YES#ftpd_banner=WelcometoblahFTPservice.#deny_email_enable=YES#banned_email_file=/etc/vsftpd.banned_emails#chroot_list_enablebelow.#chroot_local_user=YES#chroot_list_enable=YES#chroot_list_file=/etc/vsftpd.chroot_list#ls_recurse_enable=YES#Debiancustomizationsecure_chroot_dir=/var/run/vsftpd#忽略pam_service_name=vsftpd#忽略rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem#忽略rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key#忽略修改后功能:首先我们在/home/ftp目录下建立了以下两个子目录ftphome1ftphome2然后,我们创建3个虚拟用户,密码分别是用户名后加testftpvuser1ftpvuser2ftpvuser3用户ftpvuser1的主目录为ftphome1,只读权限用户ftpvuser2的主目录为ftphome2,只读权限用户ftpvuser3的主目录仍为ftphome2,拥有所有权限步骤:1.创建虚拟用户数据库1.1创建文本文件/etc/vsftpd.ftpvuser_list,内容为:ftpvuser1ftpvuser1testftpvuser2ftpvuser2testftpvuser3ftpvuser3testslmagicbox@ubuntu904server:~$sudotouch/etc/vsftpd.ftpvuser_listslmagicbox@ubuntu904server:~$echoftpvuser1|sudotee-a/etc/vsftpd.ftpvuser_listslmagicbox@ubuntu904server:~$echoftpvuser1test|sudotee-a/etc/vsftpd.ftpvuser_listslmagicbox@ubuntu904server:~$echoftpvuser2|sudotee-a/etc/vsftpd.ftpvuser_listslmagicbox@ubuntu904server:~$echoftpvuser2test|sudotee-a/etc/vsftpd.ftpvuser_listslmagicbox@ubuntu904server:~$echoftpvuser3|sudotee-a/etc/vsftpd.ftpvuser_listslmagicbox@ubuntu904server:~$echoftpvuser3test|sudotee-a/etc/vsftpd.ftpvuser_listslmagicbox@ubuntu904server:~$sudocat/etc/vsftpd.ftpvuser_list确认显示内容与上面列表的相同。1.2安装db4.6-util工具(Berkeleyv4.6databaseutilities),生成数据库/etc/vsftpd_vuser.dbslmagicbox@ubuntu904server:~$sudoapt-getinstalldb4.6-utilslmagicbox@ubuntu904server:~$sudodb4.6_load-T-thash-f/etc/vsftpd.ftpvuser_list/etc/vsftpd_vuser.dbslmagicbox@ubuntu904server:~$sudochmod600/etc/vsftpd_vuser.db2.配置PAM文件2.1新建/etc/pam.d/vsftpd.vuser内容为:authrequired/lib/security/pam_userdb.sodb=/etc/vsftpd_vuseraccountrequired/lib/security/pam_userdb.sodb=/etc/vsftpd_vuserslmagicbox@ubuntu904server:/etc/pam.d$sudovim/etc/pam.d/vsftpd.vuserslmagicbox@ubuntu904server:/etc/pam.d$cat/etc/pam.d/vsftpd.vuser2.2修改配置文件/etc/vsftpd.confpam_service_name=vsftpd.vuser#该名字与上面的文件名对应3.为虚拟用户创建本地系统用户3.1新建一个系统用户ftpvuser,用户家目录为/home/ftp,用户登录终端设为/bin/false(该用户不能登录系统)slmagicbox@ubuntu904server:/etc/pam.d$sudouseraddftpvuser-d/home/ftp-s/bin/falseslmagicbox@ubuntu904server:/etc/pam.d$sudochownftpvuser:ftpvuser/home/ftp4.编辑配置文件/etc/vsftpd.conf4.1listen=YES#以standalone模式运行vsftpdanonymous_enable=NO#禁止匿名dirmessage_enable=YES#显示目录下的message消息xferlog_enable=YES#启用日志xferlog_file=/var/log/vsftpd.log#设定日志路径xferlog_std_format=YES#使用标准日志格式chroot_local_user=YES#限定用户在家目录guest_enable=YES#启用虚拟用户guest_username=ftpvuser#虚拟用户帐号#user_config_dir=/etc/vsftpd_user_conf#先不启用,后面启用时再说明pam_service_name=vsftpd.vuser#设置pam服务名,上面2.2已经说明local_enable=YESsecure_chroot_dir=/var/run/vsftpd#忽略5.区分虚拟用户权限上面的设置,3个虚拟用户都可以正常登录,但是3者的家目录都在/home/ftp,权限都是一样的,接下来我们通过设置来区分3个虚拟的权限。5.1首先启用上面配置文件中的user_config_dir项user_config_dir=/etc/vsftpd_user_conf#启用用户配置文件,设定配置文件存放目录5.2创建配置文件存放目录,并新建用户配置文件,文件名与虚拟用户名相同slmagicbox@ubuntu904server:~$sudomkdir/etc/vsftpd_user_confslmagicbox@ubuntu904server:~$cd/etc/vsftpd_user_confslmagicbox@ubuntu904server:/etc/vsftpd_user_conf$sudotouchftpvuser1ftpvuser2ftpvuser35.3编辑虚拟用户配置文件ftpvuser1内容为:local_root=/home/ftp/ftphome1ftpvuser2内容为:local_root=/home/ftp/ftphome2ftpvuser3内容为:local_root=/home/ftp/ftphome1write_enable=YES#开启全局上传(写)权限anon_world_readable_only=NO#关闭匿名用户只读(下载)权限anon_upload_enable=YES#开启匿名用户上传权限anon_mkdir_write_enable=YES#开启匿名用户建目录权限anon_other_write_enable=YES#开启匿名用户除上传和建目录之外的写权限(如重命名,删除等)现在达到我们想要的效果了。^_^本文转自网易博客原文地址: