vsftp搭建
set ftp:charset "gbk"; set file:charset "utf-8"
vim /etc/vsftpd/vsftpd.user #注:该文件名可以随便定义,文件内容格式:奇数行用户,偶数行密码
db_load -T -t hash -f vsftpd.user vsftpd.db #将用户密码的存放文本转化为数据库类型,并使用hash加密,修改文件权限为600,保证其安全性
useradd -d /var/ftpuser -s /sbin/nologin ftpuser
cp –a /etc/pam.d/vsftpd /etc/pam.d/vsftpd.pam #使用模板生成自己的认证配置文件,方便一会调用
auth required pam_userdb.so db=/etc/vsftpd/vsftpd
account required pam_userdb.so db=/etc/vsftpd/vsftpd
修改: pam_service_name=vsftpd.pam 添加: guest_enable=YES guest_username=ftpuser #参数是系统创建的被映射的用户名 user_config_dir=/etc/vsftpd/users #虚拟用户配置文件目录
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
举例:在 /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 #如果全局配置文件加入了此条,那用户配置文件可以不配置此条
细节注意:使用虚拟用户的时候,访问目录需要对其他人有读写权限
参数
|
作用
|
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
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中的日志,将输出到系统日志中。
常见的日志解决方案如下:
-
xferlog_enable=YES
-
xferlog_std_format=YES
-
xferlog_file=/var/log/xferlog
-
dual_log_enable=YES
-
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,也将用来记录服务器的传输情况。