FTP服务—三种登录类型的配置方法

FTP服务—三种登录类型的配置方法

目录一、部署二、配置vsftpd1、匿名用户登录配置2、系统用户登录配置3、虚拟用户登录配置1. 创建虚拟用户名单文件2. 生成虚拟用户口令认证文件3. 创建FTP根目录及虚拟用户映射的系统用户4. 建立支持虚拟用户的PAM认证文件5. 虚拟用户访问权限设置6. 重启vsftpd服务4、登录验证

前言

FTP 是File Transfer Protocol(文件传输协议)的英文简称。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。

一般在各种linux的发行版中,默认带有的ftp软件是vsftp,我们需要利用相关命令来开启安装ftp服务器,然后再在vsftpd.conf中进行相关配置,下面我来介绍在Linux中vsftpd安装与配置增加用户的方法。

知识链接:关于vsftpd服务配置讲解

一、部署

部署环境:Centos 7

检查是否已经安装vsftpd,如果已经安装,会显示版本号

rpm -qa | grep vsftpd

安装

yum install vsftpd ftp db4 db4-utils pam* libcap libcap-devel tcp_wrappers tcp_wrappers-devel -y

二、配置vsftpd

cp -fr /etc/vsftpd/vsftpd.conf{,.bak}

cp -fr /etc/pam.d/vsftpd{,.default}

1、匿名用户登录配置

匿名登陆只能通过2个用户(默认:FTP 和anonymous)进行登陆

创建匿名登录后的使用者

匿名用户参数:ftp_username=anontest

useradd anontest -s /sbin/nologin -d /data/ftp/anontest

chmod 755 /data/ftp/anontest

修改配置文件

# 打开匿名用户模式

anonymous_enable=YES

## 打开本地用户登录

local_enable=YES

## 打开全局写权限

write_enable=YES

## 系统用户新增或上传档案时的umask值

#local_umask=022

# 若是启动这项功能,则使用匿名登入时,不会询问密码。默认值为NO

no_anon_password=YES

# 定义匿名登入的使用者名称。默认值为ftp

ftp_username=anontest

# 使用匿名登入时,所登入的目录。默认值为/var/ftp。注意ftp目录不能是777的权限属性,即匿名用户的家目录不能有777的权限

#anon_root=/data/ftp/anontest

anon_root=/data/ftp

# 如果设为YES,则允许匿名登入者有上传文件(非目录)的权限,只有在write_enable=YES时,此项才有效。当然,匿名用户必须要有对上层目录的写入权。默认值为NO

anon_upload_enable=YES

# 开启匿名用户创建目录的权限

anon_mkdir_write_enable=YES

# 开启匿名用户可以删除目录和文件

# (如果anon_upload_enable=NO,则匿名用户不能上传文件,但可以删除或者重命名已经存在的文件;如果anon_mkdir_write_enable=NO,则匿名用户不能上传或者新建文件夹,但可以删除或者重命名已经存在的文件夹。)

anon_other_write_enable=YES

# 开启匿名用户下载权限

anon_world_readable_only=YES

# 设置匿名用户可以下载自己上传的文件:新建的目录 权限是755,文件的权限是 644

# 设置是否改变匿名用户上传文件(非目录)的属主。默认值为NO

chown_uploads=NO

# 设置匿名用户上传文件(非目录)的属主名。建议不要设置为root

chown_username=anontest

# 设置匿名登入者新增或上传档案时的umask值。

anon_umask=022

# 是否显示目录消息

dirmessage_enable=YES

# 是否让系统自动维护上传和下载的日志文件

xferlog_enable=YES

# 是否启用端口20进行FTP数据连接请求

connect_from_port_20=YES

# 设定系统维护记录FTP服务器上传和下载情况的日志文件

xferlog_file=/var/log/vsftpd.log

# 开启日志功能(记录删除、下载、删除所有动作)

log_ftp_protocol=yes

# 是否以标准xferlog的格式书写传输日志文件

xferlog_std_format=no

xferlog_enable=yes

#standalone模式 (must config)

# 设置vsftpd服务器是否以standalone模式运行。以standalone模式运行是一种较好的方式,此时listen必须设置为YES,此为默认值。建议不要更改,有很多与服务器运行相关的配置命令,需要在此模式下才有效。若设置为NO,则vsftpd不是以独立的服务运行,要受到xinetd服务的管控,功能上会受到限制

# 是否允许监听。如果设置为YES,则vsftpd将以独立模式运行,由vsftpd自己监听和处理IPv4端口的连接请求

listen=YES

listen_port=666

#listen_ipv6=YES

# 被动模式传输

pasv_enable=YES

pasv_promiscuous=YES

pasv_min_port=12351

pasv_max_port=12551

# 列出与vsftpd相关的pam文件

pam_service_name=vsftpd

# 是否启用禁止登录用户名单

userlist_enable=YES

# 是否支持tcp_wrappers

tcp_wrappers=NO

# 设置vsftpd允许的最大连接数,默认值为0,表示不受限制。若设置为100时,则同时允许有100个连接,超出的将被拒绝。只有在standalone模式运行才有效。

max_clients=0

# 设置每个IP允许与FTP服务器同时建立连接的数目。默认值为0,表示不受限制。只有在standalone模式运行才有效

max_per_ip=0

# 设置FTP服务器在指定的IP地址上侦听用户的FTP请求。若不设置,则对服务器绑定的所有IP地址进行侦听。只有在standalone模式运行才有效

#listen_address=IP地址

2、系统用户登录配置

以下配置可允许本地用户及虚拟用户的登录访问

知识链接:关于vsftpd服务配置讲解

修改配置文件

#允许匿名访问

anonymous_enable=NO

#允许本地用户登录

local_enable=YES

#设置本地用户登录后所在的目录。默认配置文件中没有设置该项,此时用户登录FTP服务器后,所在的目录为该用户的主目录

local_root=/data/ftp

#是否允许登陆用户有写权限

write_enable=YES

#设置本地用户的文件掩码022

local_umask=022

#是否允许匿名用户上传。

#anon_upload_enable=YES

#是否允许匿名用户建立目录。

#anon_mkdir_write_enable=YES

#是否显示目录消息

dirmessage_enable=YES

#是否让系统自动维护上传和下载的日志文件

xferlog_enable=YES

#是否启用端口20进行FTP数据连接请求

connect_from_port_20=NO

#设定系统维护记录FTP服务器上传和下载情况的日志文件

xferlog_file=/var/log/vsftpd.log

#开启日志功能(记录删除、下载、删除所有动作)

log_ftp_protocol=yes

#是否以标准xferlog的格式书写传输日志文件

xferlog_std_format=no

xferlog_enable=yes

#禁止域名反向解析,解决登录慢的问题

reverse_lookup_enable=NO

#是否允许监听。如果设置为YES,则vsftpd将以独立模式运行,由vsftpd自己监听和处理IPv4端口的连接请求

listen=YES

#修改默认端口21,提高安全性

listen_port=666

#被动模式传送

pasv_enable=YES

pasv_promiscuous=YES

#设定在PASV模式下,建立数据传输所可以使用port范围的下界和上界,0 表示任意,设置50000-60000,将有助于安全性的提高

pasv_min_port=12351

pasv_max_port=12551

#虚拟用户使用PAM认证方式;设置PAM使用的名称,默认值为/etc/pam.d/vsftpd

pam_service_name=vsftpd

#(用户的访问控制可以通过user_list和ftpusers(ftpuser不受任何配制项的影响!它总是有效,它是一个黑名单)文件来实现)

#控制用户访问FTP的文件,里面写着用户名称。一个用户名称一行

userlist_file=/etc/vsftpd/user_list

#userlist_enable和userlist_deny两个选项联合起来针对的是:本地全体用户(除去ftpusers中的用户)和出现在user_list文件中的用户以及不在在user_list文件中的用户这三类用户集合进行的设置。

#当且仅当userlist_enable=YES时:userlist_deny项的配置才有效,user_list文件才会被使用;当其为NO时,无论userlist_deny项为何值都是无效的,本地全体用户(除去ftpusers中的用户)都可以登入FTP

#当userlist_enable=YES时,userlist_deny=YES时:user_list是一个黑名单,即:所有出现在名单中的用户都会被拒绝登入;

#当userlist_enable=YES时,userlist_deny=NO时:user_list是一个白名单,即:只有出现在名单中的用户才会被准许登入(user_list之外的用户都被拒绝登入);另外需要特别提醒的是:使用白名单后,匿名用户将无法登入!除非显式在user_list中加入一行:anonymous

# 是否使userlist这个文件生效

userlist_enable=YES

#设置是否阻扯user_list文件中的用户登录FTP服务器

userlist_deny=YES

#是否使用tcp_wrappers作为主机访问控制方式。

tcp_wrappers=NO

#指定用户独立的配置文件存放目录

user_config_dir=/etc/vsftpd/vusers_dir

#匿名/本地用户传输速率(单位:K/S)

anon_max_rate=30000000

local_max_rate=30000000

use_localtime=YES

#是否将所有用户限制在主目录,YES为启用 NO禁用.(该项默认值是NO,即在安装vsftpd后不做配置的话,ftp用户是可以向上切换到主目录之外的)

chroot_local_user=NO

#是否启动限制用户的名单 YES为启用 NO禁用(包括注释掉也为禁用)

chroot_list_enable=YES

#是否限制在主目录下的用户名单,至于是限制名单还是排除名单,这取决于chroot_local_user的值,我们可以这样记忆: chroot_local_user总是一个全局性的设定,其为YES时,全部用户被锁定于主目录,其为NO时,全部用户不被锁定于主目录。那么我们势必需要在全局设定下能做出一些“微调”,即,我们总是需要一种“例外机制",所以当chroot_list_enable=YES时,表示我们“需要例外”。而”例外“的含义总是有一个上下文的,即,当”全部用户被锁定于主目录“时(即chroot_local_user=YES),"例外"就是:不被锁定的用户是哪些;当"全部用户不被锁定于主目录"时(即chroot_local_user=NO),"例外"“就是:要被锁定的用户是哪些。这样解释和记忆两者之间的关系就很清晰了!

chroot_list_file=/etc/vsftpd/vsftpd.chroot_list

#从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误#要修复这个错误可以用命令chmod a-w 去除主目录写权限,或者你可以在vsftpd的配置文件中增加下列两项中的一项

allow_writeable_chroot=YES

#禁用反向域名解析

reverse_lookup_enable=NO

#每个来源IP可建立多少ftp连接

max_per_ip=0

##最多允许100个人同时使用FTP服务器

max_clients=100

##设置客户端/数据连接超时时间

idle_session_timeout=600

data_connection_timeout=120

#

创建系统用户

useradd local_one -s /sbin/nologin -d /data/ftp/local_one

chmod 755 /data/ftp/local_one

指定系统用户登录后的家目录

如果使用系统用户登录,当用户数大于1时,通过默认vsftpd.conf来管理、限制用户权限的方法显然有些力不从心;

因此通过配置文件参数--user_config_dir,将每个用户配置独立化可以解决上述问题。

例:指定用户独立的配置文件存放目录:user_config_dir=/etc/vsftpd/vusers_dir

mkdir -p /etc/vsftpd/vusers_dir

touch /etc/vsftpd/vusers_dir/local_one

cat >/etc/vsftpd/vusers_dir/local_one<

#指定该用户的登陆目录

local_root=/data/ftp/local_one

EOF

创建用户限制名单

touch /etc/vsftpd/vsftpd.chroot_list

3、虚拟用户登录配置

修改配置文件:

#允许匿名访问

anonymous_enable=NO

#允许本地用户登录

local_enable=YES

#设置本地用户登录后所在的目录。默认配置文件中没有设置该项,此时用户登录FTP服务器后,所在的目录为该用户的主目录

local_root=/data/ftp

#是否允许登陆用户有写权限

write_enable=YES

#设置本地用户的文件掩码022

local_umask=022

#是否允许匿名用户上传。

#anon_upload_enable=YES

#是否允许匿名用户建立目录。

#anon_mkdir_write_enable=YES

#是否显示目录消息

dirmessage_enable=YES

#是否让系统自动维护上传和下载的日志文件

xferlog_enable=YES

#是否启用端口20进行FTP数据连接请求

connect_from_port_20=NO

#设定系统维护记录FTP服务器上传和下载情况的日志文件

xferlog_file=/var/log/vsftpd.log

#开启日志功能(记录删除、下载、删除所有动作)

log_ftp_protocol=yes

#是否以标准xferlog的格式书写传输日志文件

xferlog_std_format=no

xferlog_enable=yes

#禁止域名反向解析,解决登录慢的问题

reverse_lookup_enable=NO

#是否允许监听。如果设置为YES,则vsftpd将以独立模式运行,由vsftpd自己监听和处理IPv4端口的连接请求

listen=YES

#修改默认端口21,提高安全性

listen_port=666

#被动模式传送

pasv_enable=YES

pasv_promiscuous=YES

#设定在PASV模式下,建立数据传输所可以使用port范围的下界和上界,0 表示任意,设置50000-60000,将有助于安全性的提高

pasv_min_port=12351

pasv_max_port=12551

#虚拟用户使用PAM认证方式;设置PAM使用的名称,默认值为/etc/pam.d/vsftpd

pam_service_name=vsftpd

#(用户的访问控制可以通过user_list和ftpusers(ftpuser不受任何配制项的影响!它总是有效,它是一个黑名单)文件来实现)

#控制用户访问FTP的文件,里面写着用户名称。一个用户名称一行

userlist_file=/etc/vsftpd/user_list

#userlist_enable和userlist_deny两个选项联合起来针对的是:本地全体用户(除去ftpusers中的用户)和出现在user_list文件中的用户以及不在在user_list文件中的用户这三类用户集合进行的设置。

#当且仅当userlist_enable=YES时:userlist_deny项的配置才有效,user_list文件才会被使用;当其为NO时,无论userlist_deny项为何值都是无效的,本地全体用户(除去ftpusers中的用户)都可以登入FTP

#当userlist_enable=YES时,userlist_deny=YES时:user_list是一个黑名单,即:所有出现在名单中的用户都会被拒绝登入;

#当userlist_enable=YES时,userlist_deny=NO时:user_list是一个白名单,即:只有出现在名单中的用户才会被准许登入(user_list之外的用户都被拒绝登入);另外需要特别提醒的是:使用白名单后,匿名用户将无法登入!除非显式在user_list中加入一行:anonymous

# 是否使userlist这个文件生效

userlist_enable=YES

#设置是否阻扯user_list文件中的用户登录FTP服务器

userlist_deny=YES

#是否使用tcp_wrappers作为主机访问控制方式。

tcp_wrappers=NO

#启用虚拟用户。默认值为NO

guest_enable=YES

#这里用来映射虚拟用户。默认值为ftp。

#guest_username=vsftpd

guest_username=virtual

#指定用户独立的配置文件存放目录

user_config_dir=/etc/vsftpd/vusers_dir

#匿名/本地用户传输速率(单位:K/S)

anon_max_rate=30000000

local_max_rate=30000000

use_localtime=YES

#是否将所有用户限制在主目录,YES为启用 NO禁用.(该项默认值是NO,即在安装vsftpd后不做配置的话,ftp用户是可以向上切换到主目录之外的)

chroot_local_user=NO

#是否启动限制用户的名单 YES为启用 NO禁用(包括注释掉也为禁用)

chroot_list_enable=YES

#是否限制在主目录下的用户名单,至于是限制名单还是排除名单,这取决于chroot_local_user的值,我们可以这样记忆: chroot_local_user总是一个全局性的设定,其为YES时,全部用户被锁定于主目录,其为NO时,全部用户不被锁定于主目录。那么我们势必需要在全局设定下能做出一些“微调”,即,我们总是需要一种“例外机制",所以当chroot_list_enable=YES时,表示我们“需要例外”。而”例外“的含义总是有一个上下文的,即,当”全部用户被锁定于主目录“时(即chroot_local_user=YES),"例外"就是:不被锁定的用户是哪些;当"全部用户不被锁定于主目录"时(即chroot_local_user=NO),"例外"“就是:要被锁定的用户是哪些。这样解释和记忆两者之间的关系就很清晰了!

chroot_list_file=/etc/vsftpd/vsftpd.chroot_list

#从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误#要修复这个错误可以用命令chmod a-w 去除主目录写权限,或者你可以在vsftpd的配置文件中增加下列两项中的一项

allow_writeable_chroot=YES

#禁用反向域名解析

reverse_lookup_enable=NO

#每个来源IP可建立多少ftp连接

max_per_ip=0

##最多允许100个人同时使用FTP服务器

max_clients=100

##设置客户端/数据连接超时时间

idle_session_timeout=600

data_connection_timeout=120

#

虚拟用户不是系统中存在的,因此比本地用户安全,具体步骤如下:

1. 创建虚拟用户名单文件

touch /etc/vsftpd/vftpuser.txt

加入用户的用户名和口令信息。格式很简单:“奇数行用户名,偶数行口令”。

hyywnobody

123456

2. 生成虚拟用户口令认证文件

使用db_load命令用HASH算法生成FTP用户数据库文件vftpuser.db

\db_load -T -t hash -f /etc/vsftpd/vftpuser.txt /etc/vsftpd/vftpuser.db

chmod 600 /etc/vsftpd/vftpuser.db

3. 创建FTP根目录及虚拟用户映射的系统用户

为保证其他用户可以访问,给予rwxr-xr-x权限

useradd virtual -s /sbin/nologin

mkdir -p /data/ftp/

chmod -Rf 755 /data/ftp

4. 建立支持虚拟用户的PAM认证文件

mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.back

cat /etc/pam.d/vsftpd

参数db用于指向刚刚生成的vftpuser.db文件,但不要写后缀

centos7系列:

auth required pam_userdb.so db=/etc/vsftpd/vftpuser

account required pam_userdb.so db=/etc/vsftpd/vftpuser

centos6系列:

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser

account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser

5. 虚拟用户访问权限设置

虚拟用户的权限默认不能上传、创建、修改文件

如果希望用户能够访问或管理FTP内的资料,就需要让FTP程序支持独立的用户权限配置文件了

首先,编辑vsftpd.conf中的配置指定用户独立的配置文件存放目录:

user_config_dir=/etc/vsftpd/vusers_dir

创建用户配置文件存放目录

mkdir -p /etc/vsftpd/vusers_dir

创建以用户名命名的配置文件

touch /etc/vsftpd/vusers_dir/hyywnobody

配置用户权限,常用组合:

浏览+上传+下载

#指定该用户的登陆目录

local_root=/data/ftp/hyywnobody

anon_umask=022

#yes=禁止浏览;no=只读,下载

anon_world_readable_only=no

#是否开启写权限

write_enable=yes

#是否可上传

anon_upload_enable=yes

#是否可以创建目录

anon_mkdir_write_enable=yes

#是否可删除

anon_other_write_enable=yes

浏览+下载

local_root=/data/ftp/hyywnobody

anon_world_readable_only=no

可上传

local_root=/data/ftp/hyywnobody

write_enable=yes

anon_upload_enable=yes

根据虚拟用户配置文件中设置的local_root,创建虚拟用户主目录并更改权限

mkdir -p /data/ftp/hyywnobody

chown virtual.virtual /data/ftp/hyywnobody

6. 重启vsftpd服务

systemctl restart vsftpd

4、登录验证

略...

相关推荐

生死狙击(端游)
365bet手机客户端首页

生死狙击(端游)

📅 06-28 👁️ 5874
華中地區
365bet手机客户端首页

華中地區

📅 07-10 👁️ 2922
R语言ggplot2 (一):ggplot2包安装和初始作图
欧普家用燃气灶价格及其选购攻略,每一点都很重要
如何将幻灯片中的图片背景设置为透明
be365备用网址

如何将幻灯片中的图片背景设置为透明

📅 07-29 👁️ 968
奴隶少女希尔薇怎样可以不死 不死前提条件攻略
be365备用网址

奴隶少女希尔薇怎样可以不死 不死前提条件攻略

📅 07-26 👁️ 7743