【Linux-FTP】CentOS6.4_X64安装配置vsFTP-2.2.2

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
运维安全中心(堡垒机),免费版 6个月
运维安全中心(堡垒机),企业双擎版|50资产|一周时长
简介:

由于工作需要配置一台FTP服务器,参考网上的一些文章,结合自己的实际配置情况,详细过程记录如下,都是真实操作的过程

环境 :

CentOS6.4_X64  

Vsftpd-2.2.2-11.el6_3.1 

一、安装vsftp pam db4 

一般pam和db4默认系统已经安装,如果没有安装如下一并安装吧

yum install vsftpd pam* db4* -y 

将vsftp配置为系统服务 
chkconfig --level 35 vsftpd on

安装完成后生成如下配置文件:

[root@localhost vsftpd]# ll /etc/vsftpd/

-rw-------. 1 root root  125 Feb 19  2013 ftpusers

-rw-------. 1 root root  361 Feb 19  2013 user_list

-rw-r--r--. 1 root root 4691 Sep 17 16:54 vsftpd.conf

-rwxr--r--. 1 root root  338 Feb 19  2013 vsftpd_conf_migrate.sh

 

二、 建立ftp虚拟宿主帐户 
#useradd vsftpd -s /sbin/nologin 

vsftpd供虚拟帐户映射的系统真实用户,不需要登录shell权限

三、配置vsftpd.conf 
备份现有配置文件:

[root@localhost vsftpd]# cd /etc/vsftpd/

[root@localhost vsftpd]# cp vsftpd.conf vsftpd.conf.bak

下面更改配置文件:

[root@localhost vsftpd]# vi vsftpd.conf

# Allow anonymous FTP? (Beware - allowed by default if you comment this out).

#anonymous_enable=YES

anonymous_enable=NO   //不允许匿名用户访问。 

#

# Uncomment this to allow local users to log in.
local_enable=YES          //设定本地用户可以访问。主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问。
#

# Uncomment this to enable any form of FTP write command.

write_enable=YES          //设定可以进行写操作。

#

# Default umask for local users is 077. You may wish to change this to 022,

# if your users expect that (022 is used by most other ftpd's)

local_umask=022    //设定上传后文件的权限掩码。
#
# Uncomment this to allow the anonymous FTP user to upload files. This only

# has an effect if the above global write enable is activated. Also, you will

# obviously need to create a directory writable by the FTP user.

#anon_upload_enable=YES

anon_upload_enable=NO      //禁止匿名用户上传。
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
#anon_mkdir_write_enable=YES
anon_mkdir_write_enable=NO   //禁止匿名用户建立目录。

#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES         ///设定开启目录标语功能。

#
# Activate logging of uploads/downloads.
xferlog_enable=YES
设定开启日志记录功能。

#

# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES          ///设定端口20进行数据连接。
#
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
#chown_uploads=YES
chown_uploads=NO       ///设定禁止上传文件更改宿主。
#chown_username=whoever
#

# You may override where the log file goes if you like. The default is shown
# below.
xferlog_file=/var/log/vsftpd.log   ///设定Vsftpd的服务日志保存路径。该文件要手动建立,并且必须给与该vsftpd用户对日志文件vsftpd.log读写权限,否则服务将启动失败。

#
# If you want, you can have your log file in standard ftpd xferlog format
xferlog_std_format=YES   ///设定日志使用标准的记录格式。
#
# You may change the default value for timing out an idle session.
#idle_session_timeout=600    ///设定空闲连接超时时间,单位秒。

#

# You may change the default value for timing out a data connection.
#data_connection_timeout=120   ///设定单次最大连续传输时间,单位秒。
#

# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
#nopriv_user=ftpsecure
nopriv_user=vsftpd    ///设定支撑Vsftpd服务的宿主用户为手动建立的Vsftpd用户。注意,一旦做出更改宿主用户后,必须注意一起与该服务相关的读写文件的读写赋权问题。比如日志文件就必须给与该用户写入权限等。

#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
async_abor_enable=YES   ///设定支持异步传输功能。
#
# By default the server will pretend to allow ASCII mode but in fact ignore
# the request. Turn on the below options to have the server actually do ASCII
# mangling on files when in ASCII mode.
# Beware that on some FTP servers, ASCII support allows a denial of service
# attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd
# predicted this attack and has always been safe, reporting the size of the
# raw file.
# ASCII mangling is a horrible feature of the protocol.
ascii_upload_enable=YES
ascii_download_enable=YES    ///设定支持ASCII模式的上传和下载功能。
#
# You may fully customise the login banner string:
ftpd_banner=Welcome to blah FTP service.  //设定Vsftpd的登陆标语

 

#
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd/banned_emails
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().

#chroot_list_enable=YES
chroot_local_user=YES

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

# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list  ///如果开启了chroot_list_enable=YES,那么一定要开启这个,这条是锁定登录用户只能家目录的位置。

 注:建立chroot_list文件

touch/etc/vsftp/chroot_list,然后将帐户输入一行一个,保存就可以了,如果不需要限制用户,也可以只建立一个空文件,或者将chroot_list_enable=NO

#

# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
#ls_recurse_enable=YES
ls_recurse_enable=NO     ///禁止用户登陆FTP后使用"ls -R"的命令。该命令会对服务器性能造成巨大开销。如果该项被允许,那么挡多用户同时使用该命令时将会对该服务器造成威胁。
# When "listen" directive is enabled, vsftpd runs in standalone mode and
# listens on IPv4 sockets. This directive cannot be used in conjunction
# with the listen_ipv6 directive.
listen=YES     ///设定该Vsftpd服务工作在StandAlone模式下。顺便展开说明一下,所谓StandAlone模式就是该服务拥有自己的守护进程支持,在ps -A命令下我们将可用看到vsftpd的守护进程名。如果不想工作在StandAlone模式下,则可以选择SuperDaemon模式,在该模式下 vsftpd将没有自己的守护进程,而是由超级守护进程Xinetd全权代理,与此同时,Vsftp服务的许多功能将得不到实现。
#
# This directive enables listening on IPv6 sockets. To listen on IPv4 and IPv6
# sockets, you must run two copies of vsftpd whith two configuration files.
# Make sure, that one of the listen options is commented !!
#listen_ipv6=YES

pam_service_name=vsftpd   ///设定PAM服务下Vsftpd的验证配置文件名。因此,PAM验证将参考/etc/pam.d/下的vsftpd文件配置。
userlist_enable=YES     ///设定userlist_file中的用户将不得使用FTP。
tcp_wrappers=YES        ///设定支持TCP Wrappers。

使用虚拟用户需要增加以下部分默认中不包含这些设定项目,需要自己手动添加:

guest_enable=YES   ///设定启用虚拟用户功能。
guest_username=vsftpd  ///指定虚拟用户的宿主用户。
virtual_use_local_privs=YES  ///设定虚拟用户的权限符合他们的宿主用户。
user_config_dir=/etc/vsftpd/vconf    ///设定虚拟用户个人Vsftp的配置文件存放路径。这个被指定的目录里,将存放每个Vsftp虚拟用户个性的配置文件,注:就是这些配置文件名必须和虚拟用户名相同。

 

四、创建日志文件 
[root@localhost vsftpd]# touch /var/log/vsftpd.log    //日志文件 [root@localhost vsftpd]# chown vsftpd.vsftpd /var/log/vsftpd.log   

五、创建虚拟用户名单文件 

建立了一个虚拟用户名单文件,用来记录vsftpd虚拟用户的用户名和口令的数据文件,这里命名为v_user。为了目录清晰,这个名单文件就放置在/etc/vsftpd/vconf/

[root@localhost vsftpd]# mkdir /etc/vsftpd/vconf/ 

[root@localhost vsftpd]# touch /etc/vsftpd/vconf/v_user

六、创建虚拟用户 

编辑上面创建的虚拟用户名单文件v_user,在其中加入用户的用户名和口令信息。

格式:奇数行为用户名,偶数行是密码,其他的以此类推

[root@localhost vsftpd]# vi /etc/vsftpd/vconf/v_user 

test           //用户名 
123123           //密码

七、生成虚拟用户数据库文件

[root@localhost vsftpd]# db_load -T -t hash -f /etc/vsftpd/vconf/v_user /etc/vsftpd/vconf/v_user.db

注: 上面的为一整行,不要分开。

需要特别注意的是,以后再要添加虚拟用户的时候,只需要按照上面的格式:奇数行为用户名,偶数行是密码的格式将新用户名和口令添加进虚拟用户名单文件。如此不会生效的还要再执行一遍“ db_load -T -t hash -f 虚拟用户名单文件 虚拟用户数据库文件.db ”的命令使其生效才可以!

 

这个命令简单说明一下察看db4的db_load命令使用方法:
[root@localhost vsftpd]# db_load
usage: db_load [-nTV] [-c name=value] [-f file]
[-h home] [-P password] [-t btree | hash | recno | queue] db_file
usage: db_load -r lsn | fileid [-h home] [-P password] db_file
解释:db_load命令几个相关选项很参数-T
The -T option allows non-Berkeley DB applications to easily load text files into databases.
If the database to be created is of type Btree or Hash, or the keyword keys is specified as set, the input must be paired lines of text, where the first line of the pair is the key item, and the second line of the pair is its corresponding data item. If the database to be created is of type Queue or Recno and the keywork keys is not set, the input must be lines of text, where each line is a new data item for the database.
选项-T允许应用程序能够将文本文件转译载入进数据库。由于我们之后是将虚拟用户的信息以文件方式存储在文件里的,为了让Vsftpd这个应用程序能够通过文本来载入用户数据,必须要使用这个选项。If the -T option is specified, the underlying access method type must be specified using the -t option.
如果指定了选项-T,那么一定要追跟子选项-t-t
Specify the underlying access method. If no -t option is specified, the database will be loaded into a database of the same type as was dumped; for example, a Hash database will be created if a Hash database was dumped.
Btree and Hash databases may be converted from one to the other. Queue and Recno databases may be converted from one to the other. If the -k option was specified on the call to db_dump then Queue and Recno databases may be converted to Btree or Hash, with the key being the integer record number.
子选项-t,追加在在-T选项后,用来指定转译载入的数据库类型。扩展介绍下,-t可以指定的数据类型有Btree、Hash、Queue和Recon数据库。这里,接下来我们需要指定的是Hash型。
----------------------------------------------------------------------------

八、设置数据库文件的权限 
[root@localhost vsftpd]# chmod 600 /etc/vsftpd/vconf/v_user.db 
[root@localhost vsftpd]# chmod 600 /etc/vsftpd/vconf/v_user

九、修改/etc/pam.d/vsftpd文件,增加以下红色部分内容

#%PAM-1.0

auth       sufficient     pam_userdb.so    db=/etc/vsftpd/vconf/v_user

account    sufficient     pam_userdb.so    db=/etc/vsftpd/vconf/v_user

session    optional     pam_keyinit.so    force revoke

auth       required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed

auth       required pam_shells.so

auth       include password-auth

account    include password-auth

session    required     pam_loginuid.so

session    include password-auth

以上红色部分两条是手动添加的,内容是对虚拟用户的安全和帐户权限进行验证。

这里的auth是指对用户的用户名口令进行验证。
这里的accout是指对用户的帐户有哪些权限哪些限制进行验证。
其后的sufficient表示充分条件,也就是说,一旦在这里通过了验证,那么也就不用经过下面剩下的验证步骤了。相反,如果没有通过的话,也不会被系统立即挡之门外,因为sufficient的失败不决定整个验证的失败,意味着用户还必须将经历剩下来的验证审核。

再后面的pam_userdb.so表示该条审核将调用pam_userdb.so这个库函数进行。
最后的db=/etc/vsftpd/v_user则指定了验证库函数将到这个指定的数据库中调用数据进行验证。

特别注意: 一定要使用“sufficient” ,按照老版本的做法,这里使用required ,则会发生用户认证不通过,报如下错误:

[root@localhost vsftpd]# tail /var/log/secure

Sep 17 17:28:20 localhost vsftpd[1387]: pam_unix(vsftpd:auth): check pass; user unknown

Sep 17 17:28:20 localhost vsftpd[1387]: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=test r

host=localhost 

Sep 17 17:28:20 localhost vsftpd[1387]: pam_succeed_if(vsftpd:auth): error retrieving information about user test

 

十、创建用户的配置文件 
用户配置文件的名字要和创建的“虚拟用户”名字对应

#touch /etc/vsftpd/vconf/test 

#vim /etc/vsftpd/vconf/test   

local_root=/data/ftp/           //虚拟用户的个人目录路径 
anon_world_readable_only=NO

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

local_max_rate=1048576     //本地用户的最大传输速度,单位是Byts/s,

 十一、建立虚拟用户目录 
如果不建立虚拟用户的个人目录,那么所有的虚拟用户登录后所在的目录都是同一个目录下 

# mkdir /data/ftp/   

# chown vsftpd.vsftpd /data/ftp/ 

# chmod 700 /data/ftp/      ///如果不设置为700的权限,则会发生如下错误

   “500 OOPS: cannot change directory:/data/ftp”

配置就此完成,如果想增加新的用户,只要按照上面的第七步、第十步进行就可以了。

十二、所有配置完后的目录文件及结构

[root@localhost vsftpd]# ll /etc/vsftpd/

-rw-r--r--. 1 root root    0 Sep 17 16:47 chroot_list

-rw-------. 1 root root  125 Feb 19  2013 ftpusers

-rw-------. 1 root root  361 Feb 19  2013 user_list

drwxr-xr-x. 2 root root 4096 Sep 17 18:22 vconf

-rw-r--r--  1 root root 4689 Sep 18 10:32 vsftpd.conf

-rwxr--r--. 1 root root  338 Feb 19  2013 vsftpd_conf_migrate.sh

[root@localhost vsftpd]# ll /etc/vsftpd/vconf

-rw-r--r--  1 root root   125 Sep 17 18:22 test

-rw-------. 1 root root    12 Sep 17 16:55 vir_user

-rw-------. 1 root root 12288 Sep 17 16:55 vir_user.db

目录
相关文章
|
1天前
|
负载均衡 Ubuntu 应用服务中间件
nginx修改网站默认根目录及发布(linux、centos、ubuntu)openEuler软件源repo站点
通过合理配置 Nginx,我们可以高效地管理和发布软件源,为用户提供稳定可靠的服务。
26 13
|
22天前
|
数据库连接 Linux Shell
Linux下ODBC与 南大通用GBase 8s数据库的无缝连接配置指南
本文详细介绍在Linux系统下配置GBase 8s数据库ODBC的过程,涵盖环境变量设置、ODBC配置文件编辑及连接测试等步骤。首先配置数据库环境变量如GBASEDBTDIR、PATH等,接着修改odbcinst.ini和odbc.ini文件,指定驱动路径、数据库名称等信息,最后通过catalog.c工具或isql命令验证ODBC连接是否成功。
|
2月前
|
Web App开发 搜索推荐 Unix
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
【10月更文挑战第21天】Linux系统之MobaXterm远程连接centos的GNOME桌面环境
409 4
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
|
1月前
|
缓存 资源调度 安全
深入探索Linux操作系统的心脏——内核配置与优化####
本文作为一篇技术性深度解析文章,旨在引领读者踏上一场揭秘Linux内核配置与优化的奇妙之旅。不同于传统的摘要概述,本文将以实战为导向,直接跳入核心内容,探讨如何通过精细调整内核参数来提升系统性能、增强安全性及实现资源高效利用。从基础概念到高级技巧,逐步揭示那些隐藏在命令行背后的强大功能,为系统管理员和高级用户打开一扇通往极致性能与定制化体验的大门。 --- ###
65 9
|
1月前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
43 5
|
2月前
|
Linux 网络安全 数据安全/隐私保护
Linux系统之Centos7安装cockpit图形管理界面
【10月更文挑战第12天】Linux系统之Centos7安装cockpit图形管理界面
107 1
Linux系统之Centos7安装cockpit图形管理界面
|
2月前
|
Web App开发 网络协议 Linux
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
这篇文章是关于Linux命令的总结,涵盖了从基础操作到网络配置等多个方面的命令及其使用方法。
78 1
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
136 2
|
2月前
|
Java Linux 网络安全
NIFI在Linux服务区上的部署配置过程是什么?
【10月更文挑战第21天】NIFI在Linux服务区上的部署配置过程是什么?
70 2
|
2月前
|
监控 安全 Linux
CentOS7下安装配置ntp服务的方法教程
通过以上步骤,您不仅能在CentOS 7系统中成功部署NTP服务,还能确保其配置合理、运行稳定,为系统时间的精确性提供保障。欲了解更多高级配置或遇到特定问题,提供了丰富的服务器管理和优化资源,可作为进一步学习和求助的平台。
120 1
下一篇
DataWorks