系统centos5.4_X64

安装:yum -y install vsftpd db*
需求:
虚拟三个用户,使用同一个家目录。权限如下
ftpadmin  读写删除(上传、下载、删除)
ftpuser   读写(上传、下载、不能删除)
ftp       读(只能下载)
复制代码
目录为:/ftpdata
密码统一为:123456
一、创建虚拟用户数据库:
1、创建文件文件loginuser.txt
格式如下:
用户名
密码
vi /etc/vsftpd/loginuser.txt
ftpadmin
123456
ftpuser
123456
ftp
123456
复制代码
2、生成数据库文件:
db_load -T -t hash -f /etc/vsftpd/loginuser.txt /etc/vsftpd/vsftpd_login.db
chmod 600 /etc/vsftpd/vsftpd_login.db
复制代码
3、配置pam文件
vi /etc/pam.d/vsftpd.vu
64位换成(lib64)
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
二、为虚拟用户创建本地系统用户
useradd vsftp -d /ftpdata -s /bin/false
chown vsftp.vsftp /ftpdata
复制代码
三、vsftpd.conf配置
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
rm -rf /etc/vsftpd/vsftpd.conf
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
listen_port=21
userlist_enable=YES
chroot_local_user=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=vsftp
pam_service_name=vsftpd.vu
user_config_dir=/etc/vsftpd/vsftpd_user_conf
virtual_use_local_privs=YES
pasv_min_port=50000
pasv_max_port=60000
pasv_enable=yes
max_clients=200
max_per_ip=10
local_max_rate=50000
idle_session_timeout=600
ftpd_banner=Welcome to  FTP service

#mkdit -p /ftpdata
#mkdir /etc/vsftpd/vsftpd_user_conf
#vi /etc/vsftpd/vsftpd_user_conf/ftpadmin 所有权限
write_enable=YES
anonymous_enable=NO
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_umask=022
download_enable=Yes
local_root=/ftpdata

vi /etc/vsftpd/vsftpd_user_conf/ftpuser 能下载、上传但不能删除
write_enable=YES
cmds_allowed=ABOR,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RETR,RNFR,RNTO,SIZE,STOR,TYPE,USER,REST,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST,FEAT
file_open_mode=0444
local_root=/ftpdata

vi /etc/vsftpd/vsftpd_user_conf/ftp 只能下载
write_enable=NO
anon_world_readable_only=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
local_umask=022
download_enable=yes
local_root=/ftpdata

service vsftpd restart
测试:
ftp -n localhost
Connected to ifidc.
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
220 Welcome to tfhudong FTP service
ftp> use ftpadmin
331 Please specify the password.
Password:
230 Login successful.
ftp> quit
221 Goodbye.

如果出现500 oops错误,请执行:setsebool ftpd_disable_trans 1

补充:
如果对上传用户要限制其上传目录(主目录),需要加入
local_root=/ftpdata/   ftpdata是我自己的设置的,可按实际需求来
前将local_root=/ftpdata/给予相应的权限

特别注意:
1。如果要删除掉一个虚拟用户,先在logins.txt中删除用户对应的用户名和密码,然后删除vsftpd_login.db,重新运行db_load -T -t hash -f logins.txt /etc/vsftpd_login.db
2。如果只是要修改用户的密码,只需重新运行db_load就可以
3。如果要改变用户的其它配置,只需修改用户的配置文件

 

vsftpd.conf的参数详解


Anonymous_enable=yes                        允许匿名登陆
Dirmessage_enable=yes                         切换目录时,显示目录下.message的内容
Local_umask=022                                  FTP上本地的文件权限,默认是077
Connect_form_port_20=yes                   启用FTP数据端口的数据连接
Xferlog_enable=yes                               激活上传和下传的日志
Xferlog_std_format=yes                         使用标准的日志格式
Ftpd_banner=XXXXX                              显示欢迎信息
Pam_service_name=vsftpd                      验证方式
Listen=yes                                            独立的VSFTPD服务器
Anon_upload_enable=yes                       匿名用户上传权限
Anon_mkdir_write_enable=yes                创建目录的同时可以在此目录中上传文件
Write_enable=yes                                  本地用户写的权限
Anon_other_write_enable=yes                匿名帐号可以有删除的权限
Anon_world_readable_only=no                匿名用户浏览权限
Ascii_upload_enable=yes                         启用上传的ASCII传输方式
Ascii_download_enable=yes                     启用下载的ASCII传输方式
Banner_file=/var/vsftpd_banner_file          用户连接后欢迎信息使用的是此文件中的相关信息
Idle_session_timeout=600(秒)              用户会话空闲后10分钟
Data_connection_timeout=120(秒)       将数据连接空闲2分钟断
Accept_timeout=60(秒)                      将客户端空闲1分钟后断
Connect_timeout=60(秒)                    中断1分钟后又重新连接
Local_max_rate=50000(bite)                本地用户传输率50K
Anon_max_rate=30000(bite)               匿名用户传输率30K
Pasv_min_port=5000                             将客户端的数据连接端口改在
Pasv_max_port=6000                             5000—6000之间
Max_clients=200                                    FTP的最大连接数
Max_per_ip=4                                       每IP的最大连接数
Listen_port=5555                                  从5555端口进行数据连接
Local_enble=yes                                    本地帐户能够登陆
Write_enable=no                                   本地帐户登陆后无权删除和修改文件
Chroot_local_user=yes                            本地所有帐户都只能在自家目录
Chroot_list_enable=yes                           文件中的名单可以调用
Chroot_list_file=/etc/vsftpd.chroot_list      前提是chroot_local_user=no
Userlist_enable=yes                                在指定的文件中的用户不可以访问
Userlist_deny=yes
Userlist_file=/etc/vsftpd.user_list
Banner_fail=/路径/文件名                         连接失败时显示文件中的内容
Ls_recurse_enable=no
Async_abor_enable=yes
one_process_model=yes
Listen_address=10.2.2.2                          将虚拟服务绑定到某端口
Guest_enable=yes                                   虚拟用户可以登陆
Guest_username=所设的用户名                 将虚拟用户映射为本地用户
Chown_uploads=yes                                改变上传文件的所有者为root
Chown_username=root
Deny_email_enable=yes                           是否允许禁止匿名用户使用某些邮件地址
Banned_email_file=//任意指定的路径/xx/
Pasv_enable=yes                                     服务器端用被动模式
User_config_dir=/任意指定的路径//任意文件目录 指定虚拟用户存放配置文件的路径