vsftp搭建

服务端安装 yum -y install vsftpd
客户端安装 yum -y install lftp #lftp是一个强大的下载工具
lftp中文乱码解决
编辑 /etc/lftp.conf 结尾处加入如下行
set ftp:charset "gbk"; set file:charset "utf-8"

 

虚拟用户方式访问
1. 建立FTP的虚拟用户的用户数据库文件
vim /etc/vsftpd/vsftpd.user   #注:该文件名可以随便定义,文件内容格式:奇数行用户,偶数行密码
db_load -T -t hash -f vsftpd.user vsftpd.db   #将用户密码的存放文本转化为数据库类型,并使用hash加密,修改文件权限为600,保证其安全性
 
2. 创建FTP虚拟用户的映射用户,并制定其用户家目录,作为ftp的虚拟用户的映射用户。
注意:FTP虚拟用户不可以没有家目录,否则无法登录
useradd -d /var/ftpuser -s /sbin/nologin ftpuser

 

3. 建立支持虚拟用户的PAM认证文件,添加虚拟用户支持
cp –a /etc/pam.d/vsftpd /etc/pam.d/vsftpd.pam #使用模板生成自己的认证配置文件,方便一会调用
 
编辑新生成的文件vsftpd.pam (清空原来内容,添加下列两行,固定写法)
auth required pam_userdb.so db=/etc/vsftpd/vsftpd
account required pam_userdb.so db=/etc/vsftpd/vsftpd
 
在vsftpd.conf文件中添加支持配置
修改:
pam_service_name=vsftpd.pam
添加:
guest_enable=YES
guest_username=ftpuser   #参数是系统创建的被映射的用户名
user_config_dir=/etc/vsftpd/users   #虚拟用户配置文件目录
 
4. 为虚拟用户建立独立的配置文件,启动服务并测试
  注:做虚拟用户配置文件设置时,将主配置文件中自定义的匿名用户相关设置注释掉。
主配置文件:
anonymous_enable=NO
local_enable=YES
local_umask=022
anon_umask=022

dirmessage_enable=YES
connect_from_port_20=YES

listen=YES
listen_ipv6=NO

pam_service_name=vsftpd.pam
guest_enable=YES
guest_username=ftpuser
user_config_dir=/etc/vsftpd/dir

userlist_enable=YES
userlist_deny=YES
chroot_local_user=YES
allow_writeable_chroot=YES
tcp_wrappers=YES

#关闭反向解析
reverse_lookup_enable=NO

#日志配置
syslog_enable=yes
#xferlog_enable=YES
#xferlog_std_format=YES
#xferlog_file=/var/log/xferlog

#dual_log_enable=YES 
#vsftpd_log_file=/var/log/vsftpd.log 


#被动方式传输端口
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=35000
vsftpd.conf

 

注:设置FTP访问目录的所有者所属组为vsftpd虚拟账户

 

举例:在 /etc/vsftpd/dir 目录下创建了两个虚拟用户,(每个账户有独立的配置文件,文件名称和虚拟用户名对应)

admin 账户 (增删改权限)

#用户根目录
local_root=/mnt/FTP

#允许写入(开启这一项底下那几项anon才能起作用)
write_enable=YES

#允许上传 anon_upload_enable
=YES

#允许创建目录 anon_mkdir_write_enable
=YES

#删除文件、文件改名、文件覆盖 anon_other_write_enable
=YES

#创建文件夹的默认权限 anon_umask
=022

#上传文件的默认权限 file_open_mode=0755

 

user 账户(只读权限)

local_root=/mnt/FTP
chroot_local_user=YES   #如果全局配置文件加入了此条,那用户配置文件可以不配置此条

 

细节注意:使用虚拟用户的时候,访问目录需要对其他人有读写权限 

 

vsftpd服务程序常用的参数以及作用

 

参数
作用
anonymous_enable=YES
允许匿名访问模式
anon_umask=022
匿名用户上传文件夹的umask值    #可指定用户创建文件夹的默认权限
anon_upload_enable=YES
允许匿名用户上传文件
anon_mkdir_write_enable=[YES|NO]
是否允许匿名用户创建目录
anon_other_write_enable=[YES|NO]
是否开放匿名用户的其他写入权限(包括重命名、删除等操作权限)
anon_root=/var/ftp
匿名用户的FTP根目录
anon_max_rate=0
匿名用户的最大传输速率(字节/秒),0为不限制
listen=[YES|NO]
是否以独立运行的方式监听服务
file_open_mode=0777  上传文件的默认权限,与chmod所使用的数值相同。如果希望上传的文件可以执行,设此值为0777
/etc/vsftpd/vsftpd.conf 主配置文件
/etc/vsftpd/ftpusers 黑名单文件
/etc/vsftpd/user_list 白名单文件
write_enable=YES
允许写入
local_enable=[YES|NO]
是否允许本地用户登录FTP
local_umask=022
本地用户上传文件的umask值
local_root=/var/ftp
本地用户的FTP根目录[可为不同用户配置不同根目录]
chroot_local_user=[YES|NO]
是否将用户权限禁锢在FTP目录,以确保安全
local_max_rate=0
本地用户最大传输速率(字节/秒),0为不限制
allow_writeable_chroot=YES
#允许用户具有主目录写权限
userlist_enable=[YES|NO]
是否启用vsftpd.user_list文件
userlist_deny=[YES|NO]
决定vsftpd.user_list文件中的用户是否能够访问FTP服务器。若设置为YES,则vsftpd.user_list
文件中的用户不允许访问FTP,若设置为NO,则只有vsftpd.user_list文件中的用户才能访问FTP
listen_address=IP地址
设置要监听的IP地址
listen_port=21
设置FTP服务的监听端口
download_enable=[YES|NO]
是否允许下载文件
max_clients=0
最大客户端连接数,0为不限制
max_per_ip=0
同一IP地址的最大连接数,0为不限制
pasv_enable=YES
pasv_min_port=35000
pasv_max_port=35100
修改被动模式数据传输使用端口
 

安全选项
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)
Max_clients=200 (FTP的最大连接数)
Max_per_ip=4 (每IP的最大连接数)
Listen_port=5555 (从5555端口进行数据连接)

 

vsftp连接很慢的解决办法

VSFTP连接时很慢,因为默认开启了reverse_lookup(反向解析)

在vsftpd.conf中加上

reverse_lookup_enable=NO

 
vsftp上传文件权限问题
file_open_mode上传档案的权限,与chmod 所使用的数值相同。如果希望上传的文件可以执行,设此值为0777。

 

local_umask=022         这是指定本地用户上传后的文件权限设置

umask是unix操作系统的概念,umask决定目录和文件被创建时得到的初始权限
umask = 022 时,新建的目录 权限是755,文件的权限是 644
umask = 077 时,新建的目录 权限是700,文件的权限时 600
vsftpd的local_umask和anon_umask借鉴了它
默认情况下vsftp上传之后文件的权限是600,目录权限是700
想要修改上传之后文件的权限,有两种情况
如果使用vsftp的是本地用户
则要修改配置文件中的 local_umask 的值
如果使用vsftp的是虚拟用户
则要修改配置文件中的 anon_umask 的值

 

vsftp日志配置说明

ftp服务器的日志设置,可以通过修改主配置文件/etc/vsftpd.conf实现。主配置文件中与日志设置有关的选项包括xferlog_enable 、xferlog_file 和dual_log_enable 等。 
xferlog_enable 
如果启用该选项,系统将会维护记录服务器上传和下载情况的日志文件。默认情况下,该日志文件为 /var/log/vsftpd.log。但也可以通过配置文件中的 vsftpd_log_file 选项来指定其他文件。默认值为NO。 
xferlog_std_format 
如果启用该选项,传输日志文件将以标准 xferlog 的格式书写,该格式的日志文件默认为 /var/log/xferlog,也可以通过 xferlog_file 选项对其进行设定。默认值为NO。 
dual_log_enable 
如果启用该选项,将生成两个相似的日志文件,默认在 /var/log/xferlog 和 /var/log/vsftpd.log 目录下。前者是 wu-ftpd 类型的传输日志,可以利用标准日志工具对其进行分析;后者是Vsftpd类型的日志。 
syslog_enable 
如果启用该选项,则原本应该输出到/var/log/vsftpd.log中的日志,将输出到系统日志中。 
常见的日志解决方案如下:

  1.  xferlog_enable=YES
  2.  xferlog_std_format=YES
  3.  xferlog_file=/var/log/xferlog
  4.  dual_log_enable=YES
  5.  vsftpd_log_file=/var/log/vsftpd.log

该方案将xferlog_enable设置为YES,表明FTP服务器记录上传下载的情况,而将xferlog_std_format也设置为YES,则表明将记录的上传下载情况写在xferlog_file所指定的文件中,即/var/log/xferlog文件。 
同时,该方案启用dual_log_enable,表明启用了双份日志。在用xferlog文件记录服务器上传下载情况的同时,vsftpd_log_file所指定的文件,即/var/log/vsftpd.log,也将用来记录服务器的传输情况。 

posted @ 2020-10-14 22:20  局域网外  阅读(246)  评论(0编辑  收藏  举报