一、创建虚拟用户的用户名和密码数据库文件
vsftpd服务的虚拟用户数据库是使用Berkeley DB格式的数据文件。创建该数据库文件要用到db_load命令工具,从光盘安装db4-utils-4.3.29-9.fc6.i386.rpm或yum进行安装软件包后可得到该工具。
密码数据库文件中奇数行为用户名,偶数行为上一行中用户所对应的密码
# vi /etc/vsftpd/vusers.list
laya
123
test
456
二、生成vsftpd的认证文件
# cd /etc/vsftpd/
# db_load -T -t hash -f vusers.list vusers.db //若是没有db_load命令,请安装db4*相关rpm包。
注意:
rhel5默认只安装db4-4.3.29-9.fc6.i386.rpm和db4-devel-4.3.29-9.fc6.i386.rpm,
要使用db_load须要将db4-utils-4.3.29-9.fc6.i386.rpm包安装上不然会出现错误:找不到db_load命令。
# file vusers.db
设置认证文件只对root用户可读可写
# chmod 600 /etc/vsftpd/vusers.* //下降文件权限以提升安全性
注意:每次步骤1中添加新内容,都要再次运行步骤2,不然新加用户不生效
三、创建虚拟用户所需的PAM认证文件
# vi /etc/pam.d/vsftpd.vu
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
注意:以上2行中最后的2个文件名vusers和第2个步骤中的数据库名字必须一致!
四、创建虚拟用户所要访问的目录并设置相应权限
# mkdir -p /var/www
# useradd -d /var/www -s /sbin/nologin virtual(用户名) //创建映射帐号virtual
# chown virtual:virtual /var/www
# chmod 755 /var/www //更改ftp根目录权限
# ls -lh /boot > /var/www/vutest.file //创建测试文件(可不建)
五、设置vsftpd.conf配置文件
anonymous_enable=NO
local_enable=YES //使用虚拟用户要启用本地用户
anon_umask=022 //设置虚拟用户所上传文件的默认权限掩码,是anon_mask而不是local_mask
chroot_local_user=YES //将全部本地用户限制在家目录中,NO则不限制
max_clients=300 //设置FTP服务器最大接入客户端数为300个
max_per_ip=10 //设置每一个IP地址最大链接数为10个
write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
guest_enable=YES //启用用户映射功能
guest_username=virtual //将映射用户指定为virtual
pam_service_name=vsftpd.vu //修改使用的PAM文件位置
userlist_enable=YES
tcp_wrappers=YES
六、设置主配置文件
修改vsftpd.conf主配置文件,添加用户配置目录支持
user_config_dir=/etc/vsftpd/vusers_dir //添加此行配置项,指定用户配置目录位置
为用户laya、test创建独立的配置目录及文件
使用mkdir命令创建用户配置目录
# mkdir /etc/vsftpd/vusers_dir
为虚拟用户创建单独的配置文件,用户配置文件名称与用户名相同
vi /etc/vsftpd/vusers_dir/laya
vi /etc/vsftpd/vusers_dir/test
七、每一个FTP虚拟用户均可以独立设置其权限
anon_world_readable_only=NO //容许匿名用户浏览器整个服务器的文件系统
anon_upload_enable=YES //可上传
anon_mkdir_write_enable=YES //可建立和删除文件夹
anon_other_write_enable=YES //可文件更名和删除文件
anon_max_rate=50000:限定传输速率为50KB/s
注意:
vsftpd对于文件传输速度限制并非绝对锁定在一个数值上,而是在80%~120%之间变化,好比设置100KB/s则实际是速度在80KB/s~120KB/s之间变化。
local_root=/var/www/test //指定test的宿主目录
注意:请先到/var/www下面去建立test文件夹
八、从新启动vsftpd服务
# service vsftpd restart
九、使用虚拟帐户访问FTP服务进行测试
因为匿名FTP根目录“/var/ftp/”的默认权限为755,所以不要将该目录的属主改成ftp,不然匿名访问时可能会报错“500 OOPS:vsftd:refusing to run with writable anonymous root”,致使访问失败。
vsftp500错误简单解决方法
cannot change directory:/home/***
ftp服务器链接失败,错误提示:
500 OOPS: cannot change directory:/home/*******
500 OOPS: child died
解决方法:
# setsebool ftpd_disable_trans 1
# service vsftpd restart
Linux默认字符编码为为utf8,如出现乱码可设置为GBK
手动更改配置文件的命令:
vi /etc/sysconfig/i18n
将LANG="zh_CN.UTF-8"修改成:LANG="zh_CN.GBK"
注销从新登陆图形界面数据库