linux vsftpd参数详解

linux一般用vsftpd进行FTP服务器搭建,搭建步骤见linux vsftpd搭建FTP服务器详细教程,那么vsftpd详细配置如下。

1. 匿名登录设置

# 允许匿名登录

anonymous_enable=NO

# 如果允许匿名登录

# 是否开启匿名上传权限

#anon_upload_enable=YES

# 如果允许匿名登录

# 是否允许匿名建立文件夹并在文件夹内上传文件

#anon_mkdir_write_enable=YES

# 如果允许匿名登录

# 匿名帐号可以有删除的权限

#anon_other_write_enable=yes

# 如果允许匿名登录

# 匿名的下载权限

# 匿名为Other,可设置目录/文件属性控制

#anon_world_readable_only=no

# 如果允许匿名登录

# 限制匿名用户传输速率,单位bite

#anon_max_rate=30000

2. 用户限制设置

# 用userlist来限制用户访问

#userlist_enable=yes

# 名单中的人不允许访问

#userlist_deny=no

# 限制名单文件放置的路径

#userlist_file=/etc/vsftpd/userlist_deny.chroot

#### 限制目录

# 限制所有用户都在家目录

#chroot_local_user=yes

# 调用限制在家目录的用户名单

chroot_list_enable=YES

# 限制在家目录的用户名单所在路径

chroot_list_file=/etc/vsftpd/chroot_list

3. 日志设置

# 日志文件路径设置

xferlog_file=/var/log/vsftpd.log

# 激活上传/下载的日志

xferlog_enable=YES

# 使用标准的日志格式

#xferlog_std_format=YES

######### 安全设置 ###########

# 用户空闲超时,单位秒

#idle_session_timeout=600

# 数据连接空闲超时,单位秒

#data_connection_timeout=120

# 将客户端空闲1分钟后断开

#accept_timeout=60

# 中断1分钟后重新连接

#connect_timeout=60

# 本地用户传输速率,单位bite

#local_max_rate=50000

# FTP的最大连接数

#max_clients=200

# 每IP的最大连接数

#max_per_ip=5

4. 被动模式设置

# 是否开户被动模式

pasv_enable=yes

# 被动模式最小端口

pasv_min_port=5000

# 被动模式最大端口

pasv_max_port=6000

5. 设置欢迎信息

ftpd_banner=Welcome to my FTP server. //该配置项用于设置比较简短的欢迎信息。若欢迎信息较多,则可使用banner_file配置项。

banner_file=/etc/vsftpd/banner //设置用户登录时,将要显示输出的文件。该设置项将覆盖ftpd_banner的设置。

dirmessage_enable=YES //设置是否显示目录消息。若设置为YES,则当用户进入特定目录(比如/var/ftp/Linux)时,将显示该目录中的由message_file配置项指定的文件(.message)中的内容。

message_file=.message //设置目录消息文件。可将显示信息存入该文件。该文件需要放在 相应的目录(比如/var/ftp/linux)下

6. 设置用户是否允许切换到上级目录

在默认配置下,用户可以使用“cd..”命名切换到上级目录。比如,若用户登录后所在的目录为/var/ftp,则在“ftp>”命令行 下,执行“cd..”命令后,用户将切换到其上级目录/var,若继续执行该命令,则可进入Linux系统的根目录,从而可以对整个Linux的文件系统 进行操作。

若设置了write_enable=YES,则用户还可对根目录下的文件进行改写操作,会给系统带来极大的安全隐患,因此,必须防止用户切换到Linux的根目录,相关的配置项如下:

chroot_list_enable=YES

// 设置是否启用chroot_list_file配置项指定的用户列表文件。设置为YES则除了列在j/etc/vsftpd/chroot_list文件中的的帐号外,所有登录的用户都可以进入ftp根目录之外的目录。默认NO

chroot_list_file=/etc/vsftpd/chroot_list

// 用于指定用户列表文件,该文件用于控制哪些用户可以切换到FTP站点根目录的上级目录。

chroot_local_user=YES

// 用于指定用户列表文件中的用户,是否允许切换到上级目录。默认NO

注意:要对本地用户查看效果,需先设置local_root=/var/ftp

具体情况有以下几种:

1)当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd/chroot_list文件中列出的用户,可以切换到上级目录;未在文件中列出的用户,不能切换到站点根目录的上级目录。

2)当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd/chroot_list文件中列出的用户,不能切换到站点根目录的上级目录;未在文件中列出的用户,可以切换到上级目录。

3)当chroot_list_enable=NO,chroot_local_user=YES时,所有用户均不能切换到上级目录。

4)当chroot_list_enable=NO,chroot_local_user=NO时,所有用户均可以切换到上级目录。

5)当用户不允许切换到上级目录时,登录后FTP站点的根目录“/”是该FTP账户的主目录,即文件的系统的/var/ftp目录。

7. 设置访问控制

(1)设置允许或不允许访问的主机

tcp_wrappers=YES用来设置vsftpd服务器是否与tcp wrapper相结合,进行主机的访问控制。默认设置为YES,vsftpd服务器会检查/etc/hosts.allow和/etc /hosts.deny中的设置,以决定请求连接的主机是否允许访问该FTP服务器。这两个文件可以起到简易的防火墙功能。

比如,若要仅允许192.168.168.1~192.168.168.254的用户,可以访问连接vsftpd服务器,则可在/etc/hosts.allow文件中添加以下内容:

vsftpd:192.168.168.0/255.255.255.0 :allow

all:all:deny

(2)设置允许或不允许访问的用户

对用户的访问控制由/etc/vsftpd/user_list和/etc/vsftpd/ftpusers文件来控制实现。相关配置命令如下:

userlist_enable=YES

// 决定/etc/vsftpd/user_list文件是否启用生效。YES则生效,NO不生效。

userlist_deny=YES

// 决定/etc/vsftpd/user_list文件中的用户是允许访问还是不允许访问。若设置为YES,则/etc/vsftpd/user_list 文件中的用户将不允许访问FTP服务器;若设置为NO,则只有vsftpd.user_list文件中的用户,才能访问FTP服务器。

设置实例

anonymous_enable=NO  #设定不允许匿名访问
local_enable=YES  #设定本地用户可以访问。注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问。
write_enable=YES  #设定可以进行写操作。
local_umask=022  #设定上传后文件的权限掩码。
anon_upload_enable=NO  #禁止匿名用户上传。
anon_mkdir_write_enable=NO  #禁止匿名用户建立目录。
dirmessage_enable=YES  #设定开启目录标语功能。
xferlog_enable=YES  #设定开启日志记录功能。
connect_from_port_20=YES #设定端口20进行数据连接。(主动模式)
chown_uploads=NO  #设定禁止上传文件更改宿主。
#chown_username=whoever
xferlog_file=/var/log/xferlog
#设定Vsftpd的服务日志保存路径。注意,该文件默认不存在。必须要手动touch出来,并且由于这里更改了Vsftpd的服务宿主用户为手动建立的Vsftpd。必须注意给与该用户对日志的写入权限,否则服务将启动失败。
xferlog_std_format=YES #设定日志使用标准的记录格式。
#idle_session_timeout=600 #设定空闲连接超时时间,单位为秒,这里默认。
#data_connection_timeout=120 #设定空闲连接超时时间,单位为秒,这里默认
#nopriv_user=ftptest

async_abor_enable=YES  #设定支持异步传输功能。

ascii_upload_enable=YES
ascii_download_enable=YES  #设定支持ASCII模式的上传和下载功能。

ftpd_banner=Welcome to blah FTP service.  #设定Vsftpd的登陆标语。

#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd/banned_emails

chroot_list_enable=NO #禁止用户登出自己的FTP主目录。

# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list

ls_recurse_enable=NO  #禁止用户登陆FTP后使用"ls -R"的命令。该命令会对服务器性能造成巨大开销。如果该项被允许,那么挡多用户同时使用该命令时将会对该服务器造成威胁。
listen=YES 设定该Vsftpd服务工作在StandAlone模式下
#listen_ipv6=YES

userlist_enable=YES  #设定userlist_file中的用户将不得使用FTP。
#userlist_deny=NO
tcp_wrappers=YES  #设定支持TCP Wrappers

#下边是关于虚拟用户的重要配置
guest_enable=YES  #设定启用虚拟用户功能。
guest_username=virtualhost  #指定虚拟用户的宿主用户。
virtual_use_local_privs=YES  #设定虚拟用户的权限符合他们的宿主用户。
pam_service_name=vsftpd  #设定PAM服务下Vsftpd的验证配置文件名。因此,PAM验证将参考/etc/pam.d/下的vsftpd文件配置。
user_config_dir=/etc/vsftpd/virtualconf  #设定虚拟用户个人Vsftp的配置文件存放路径。也就是说,这个被指定的目录里,将存放每个Vsftp虚拟用户个性的配置文件,一个需要注意的地方就是这些配置文件名必须和虚拟用户名相同。

版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。