##vsftp本地用户:######
yum install vsftpd
vim /etc/vsftpd/vsftpd.conf
listen=YES
listen_port=2188
anonymous_enable=NO
use_localtime=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=NO
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
idle_session_timeout=180
data_connection_timeout=120
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to haha FTP service.
chroot_list_enable=YES
chroot_list_file=/etc/ftpchroot
ls_recurse_enable=YES
pam_service_name=vsftpd
userlist_enable=YES
log_ftp_protocol=YES
max_per_ip=10
pasv_max_port=40100
pasv_min_port=40000
/etc/ftpchroot 里面为限制家目录用户 (一个用户名一行)
防火墙开启相关端口
iptables -A INPUT -p tcp -m multiport --dport 21,40000:40100 -j ACCEPT
启动vsftpd
/etc/init.d/vsftpd start
#########################################################
##vsftpd虚拟用户的配置#########
安装:yum -y install vsftpd db4-utils*
环境:32bit rhel5.4
创建三个虚拟用户,使用同一个家目录/data/ftpdir权限如下
123admin 读写删除(上传、下载、删除)
123rw 读写(上传、下载、不能删除)
123ro 读(只能下载)
一、创建虚拟用户数据库
1创建文件loginuser.txt
vim /etc/vsftpd/loginuser.txt
123admin
123456
123rw
123456
123ro
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文件(64bit 改/lib64)
cat /etc/pam.d/vsftpd.vu
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 /data/ftpdir -s /bin/false
chown vsftp.vsftp /data/ftpdir
mv vsftpd.conf vsftpd.conf_bak
cat 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
idle_session_timeout=600
ftpd_banner=Welcome to FTP service
mkdir /etc/vsftpd/vsftpd_user_conf 创建虚拟用户配置目录
cat /etc/vsftpd/vsftpd_user_conf/123admin 创建123admin用户配置文件
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=/data/ftpdir
cat /etc/vsftpd/vsftpd_user_conf/123rw创建123rw用户配置文件
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=044
local_root=/data/ftpdir
cat /etc/vsftpd/vsftpd_user_conf/123ro创建123ro用户配置文件
write_enable=NO
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
local_umask=022
download_enable=yes
local_root=/data/ftpdir
三、测试虚拟用户
分别登陆123admin 123rw 123ro pwd:123456尝试mkdir delete put get等权限
ftp -n 192.168.2.200
Connected to 192.168.2.200 (192.168.2.200).
220 Welcome to FTP service
ftp> use 123admin
331 Please specify the password.
Password:
230 Login successful.
cmds_allowed参数:
# ABOR - abort a file transfer
# CWD - change working directory
# DELE - delete a remote file
# LIST - list remote files
# MDTM - return the modification time of a file
# MKD - make a remote directory
# NLST - name list of remote directory
# PASS - send password
# PASV - enter passive mode
# PORT - open a data port
# PWD - print working directory
# QUIT - terminate the connection
# RETR - retrieve a remote file
# RMD - remove a remote directory
# RNFR - rename from
# RNTO - rename to
# SITE - site-specific commands
# SIZE - return the size of a file
# STOR - store a file on the remote host
# TYPE - set transfer type
# USER - send username
less common commands:
# ACCT* - send account information
# APPE - append to a remote file
# CDUP - CWD to the parent of the current directory
# HELP - return help on using the server
# MODE - set transfer mode
# NOOP - do nothing
# REIN* - reinitialize the connection
# STAT - return server status
# STOU - store a file uniquely
# STRU - set file transfer structure
# SYST - return system type
###############################################################
##ssl证书(ftps)#########
mkdir /etc/vsftpd/sslkey
cd /etc/vsftpd/sslkey
openssl req -new -days 365 -x509 -nodes -out vsftpd.pem -keyout vsftpd.pem
chmod 400 /etc/vsftpd/sslkey
vim /etc/vsftpd/vsftpd.conf (增加)
ssl_enable=YES
force_local_logins_ssl=YES
force_local_data_ssl=YES
ssl_sslv2=YES
ssl_sslv3=YES
ssl_tlsv1=YES
rsa_cert_file=/etc/vsftpd/sslkey/vsftpd.pem
重启vsftpd服务即可
客户端连接时 选择 认证TLS证书 或者 认证SSL证书
#######################################################
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/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=50000 将客户端的数据连接端口改在50000—60000之间
Pasv_max_port=60000
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=/任意指定的路径/chroot_list
前提是chroot_local_user=no
这又是一组
Userlist_enable=yes 在指定的文件中的用户不可以访问
Userlist_deny=yes
Userlist_file=/指定的路径/vsftpd.user_list
Banner_fail=/路径/文件名 连接失败时显示文件中的内容
Listen_address=10.2.2.2 将虚拟服务绑定到某端口
Guest_enable=yes 虚拟用户可以登陆
Guest_username=所设的用户名 将虚拟用户映射为本地用户
User_config_dir=/任意指定的路径/为用户策略自己所建的文件夹 --指定不同虚拟用户配置文件的路径
又是一组
Chown_uploads=yes 改变上传文件的所有者为root
Chown_username=root
又是一组
Deny_email_enable=yes 是否允许禁止匿名用户使用某些邮件地址
Banned_email_file=//任意指定的路径/xx/
Pasv_enable=yes 服务器端用被动模式
User_config_dir=/指定路径//文件目录 指定虚拟用户存放配置文件的路径