Centos7.5搭建FTP服务-vsftpd【详细】

( 更新日志:
时间:2019年1月12日
事件:
1、在目录7第4点修改了错误。pam_service_name=vsftpd.virtual修改为vsftpd。
2、在目录7第5点增加了配置选项:write_enable=YES,解决无法读取目录的问题。
3、在目录6vsftpd.conf配置文件中添加以下配置选项,解决云服务器被动模式无法登录的问题,提示,要在云服务器平台安全策略那里开放40000~40080的端口。一个人用的话就用主动模式,把pasv_enable=YES改为NO。
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40080
pasv_promiscuous=YES

目录

1)vsftpd简介
2)安装vsftpd
3)firewalld防火墙和selinux设置
4)运行,登录
5)局域网登录
6)认识vsftpd软件配置文件
7)设置虚拟账号登录
8)认识vsftpd传输模式
9)500 OOPS:priv_sock_get_cmd错误
10)参考文献

一、vsftpd简介

FTP,File transfer protocol的缩写,中文叫文本传输协议,是用于在网络上进行文件传输的一套标准协议,属于网络传输协议的应用层。注意,它是协议,不是软件,今天搭建的vsftpd是基于FTP开发的一套程序,也是一款在Linux发行版中最受推崇的FTP服务器程序,特点是小巧轻快,安全易用。

二、安装vsftpd

yum install vsftpd

三、firewall防火墙和selinux设置

firewall-cmd  --list-services //查看防火墙允许的服务。
firewall-cmd  --add-service=ftp  --permanent //永久开放ftp服务
firewall-cmd --add-port=20/tcp  --permanent
firewall-cmd --add-port=21/tcp  --permanent //允许外网访问
firewall-cmd --reload //重新载入配置
setsebool ftpd_full_access 1  //selinux设置
setsebool tftp_home_dir 1

四、运行,登录

useradd test
passwd test
ftp localhost

输入账号密码,成功登录。


ftp localhost

五、局域网测试

Centos下的网卡设置是在/etc/sysconfig/network-scripts/这个文件夹下,进入该文件夹,前缀为ifcfg-后面跟的就是网卡的名称。
默认的话是开启dhcp的,首先把BOOTPROTO="dhcp"改成BOOTPROTO="static"表示静态获取。之后在写进以下配置:

IPADDR=192.168.1.6
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.1
BROADCAST设置的是局域网广播地址,IPADDR就是静态IP,NETMASK是子网掩码,
GATEWAY就是网关或者路由地址,DNS就是域名系统地址,
这里用的就是本地网关,也可以设置其它,比如谷歌、360DNS地址。
systemctl restart network //重启网络服务
ip addr或者ifconfig //查看ip地址。

接下来在windows平台用FileZilla Client软件登陆。
这里有些朋友会使用虚拟机测试,但是按照上面配置后发现链接不了,那是因为虚拟机的网络连接模式的影响。这里有一个简单的方法,就是直接获取虚拟机里面系统的ip地址,然后在FileZilla客户端填入。

局域网FTP登陆

FTP开启被动模式
登陆成功

系统账号默认登陆是在账号的家目录,可以切换到其它目录。
到这里,基本的vsftpd搭建成功。

六、认识vsftpd配置文件vsftpd.conf

主程序:/usr/sbin/vsftpd
主配置文件:/etc/vsftpd/vsftpd.conf
数据根目录:/var/ftp
就算是经验丰富的老手也会做好备份工作
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

做好备份工作

anonymous_enable=NO //设定不允许匿名访问
local_enable=YES //设定本地用户可以访问。
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的服务日志保存路径。
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_local_user=YES
chroot_list_enable=YES //禁止用户登出自己的FTP主目录。
chroot_list_file=/etc/vsftpd/chroot_list //这个文件里的用户不受限制,不限制在本目录。
ls_recurse_enable=NO //禁止用户登陆FTP后使用"ls -R"的命令。该命令会对服务器性能造成巨大开销。
#listen=NO 
#listen_ipv6=YES
userlist_enable=YES //设定userlist_file中的用户将不得使用FTP。
tcp_wrappers=YES //设定支持TCP Wrappers
allow_writeable_chroot=YES //这个可以解决chroot权限问题
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40080
pasv_promiscuous=YES
systemctl restart vsftpd //重启vsftpd服务
登陆成功

注意,“/”在这里就是用户账号的家目录,并不是系统的根目录。

七、vsftpd虚拟用户的使用

vsftpd提供了三种认证方式,分别是:匿名用户认证、本地用户认证和虚拟用户认证。上面test用户就是本地用户。从安全的角度来说,虚拟用户最安全,接下来,我们开始配置虚拟用户。
虚拟用户配置步骤:
1) 建立虚拟FTP用户数据库文件。
2) 创建FTP根目录及虚拟用户映射的系统用户。
3) 建立支持虚拟用户的PAM认证文件。
4) 在vsftpd.conf中添加支持配置。
5) 为虚拟用户设置权限。
6) 虚拟账号登录。

  1. 建立虚拟FTP用户数据库文件
  • 建立一个虚拟用户名单文件,这个文件就是来记录vsftpd虚拟用户的用户名和口令的数据文件,我这里给它命名为vuser.list,保存在/etc/vsftpd/目录下。
    vim vuser.list
    一行账号,一行密码
vuser
123456
  • 安装Berkeley DB
    yum install db4*
    安装后
db_load -T -t hash -f vuser.list  vuser.db//生成用户加密文件
chmod 600 vuser.db  //敏感文件限制只允许属主读写
  1. 创建虚拟用户及虚拟用户的家目录
useradd -d /var/vusers -s /sbin/nologin vftp  //创建系统用户vftp,并制定其家目录为/var/vusers
chmod -Rf 755 /var/vusers/  //修改目录的权限使得其他用户也可以访问。
  1. 建立支持虚拟用户的PAM认证文件
  • vsftpd的pam文件在/etc/pam.d/目录下,先做备份工作。
cp vsftpd vsftpd.bak
vim vsftpd
  • 先注释掉所有的内容后添加以下内容.
auth required /lib64/security/pam_userdb.so  db=/etc/vsftpd/vuser //此句用于检查用户密码,数据库文件不要写后缀.db 
account required /lib64/security/pam_userdb.so  db=/etc/vsftpd/vus此句用于检查用户是否在有效期内,数据库支持虚拟用户的PAM认证文件。
  1. 在vsftpd.conf中添加支持配置
guest_enable=YES  //开启虚拟用户模式
guest_username=vftp  //指定虚拟用户账号
pam_service_name=vsftpd //指定pam文件
user_config_dir=/etc/vsftpd/vusers_profile  //指定虚拟用户的权限配置目录。
virtual_use_local_privs=NO  //虚拟用户和匿名用户有相同的权限
  1. 为虚拟用户设置不同的权限。
mkdir /etc/vsftpd/vusers_profile //新建虚拟用户目录
vim /etc/vsftpd/vusers_profile/vuser//新建虚拟用户配置文件,文件名要和上面的虚拟用户名单里的账号名字对等。
local_root=/var/vusers/vuser  //虚拟账号的家目录
write_enable=YES
anonymous_enable=NO
local_umask=022
anon_upload_enable=YES  //上传权限
anon_mkdir_write_enable  //创建文件和目录的权限
anon_other_write_enable  //删除文件和目录的权限
anon_world_readable_only=YES //当文件的“其他人”有读权限的时候可以下载
download_enable=YES //下载权限

  • 保存配置,重启服务。
    systemctl restart vsftpd
  1. 虚拟账号登录


    虚拟账号登录

    登录成功

八、认识vsftpd传输模式

  1. 主动模式


    FTP主动模式

    在主动模式下,FTP客户端从任意端口5150(端口号>1023)发起一个FTP请求,并携带自己监听的端口号5151(发送的端口号+1=监听端口号);随后服务器返回确认,然后从服务器本地的20端口主动发起连接请求到客户端的监听端口5151,最后客户端返回确认。

  2. 被动模式
    FTP被动模式

    在被动模式中,命令连接和数据连接都由客户端来发起,如上图所示,客户端用随机命令端口5150向服务器的21命令端口发送一个PASV请求,然后服务器返回数据端口3267,告诉客户端我在哪个端口监听数据连接。然后客户端向服务器的监听端口3268发起数据连接,最后服务器回复确认。
    vsftpd默认是被动模式。所以客户端要设置被动模式连接,如果到现在还没连接成功的看客户端有没有设置被动传输模式。如果你有一台云服务器,自己或者为数不多的人使用,建议你使用主动模式。
    再次提醒一遍,云服务器,例如阿里云平台,你需要在安全策略那里开放端口。通常你在本地配置可以使用,但在云服务器上发现不行,可以从日志文件、防火墙、selinux这几块入手。

九、500 OOPS:priv_sock_get_cmd错误

网上很多说是selinux设置问题,我按照他们的都改了,但是还是不行。最后我发现问题是出在pam文件里。
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
如果你是64位,你需要添加的/lib64/,我遇到的问题就这么的解决了。

十、参考文献

  1. vsftpd 配置:chroot_local_user与chroot_list_enable详解

  2. virtual_use_local_privs 参数

  3. vmware虚拟机三种网络模式详解

如果哪里有写错的,请指出来,谢谢。
一起学习,一起讨论。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,701评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,649评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,037评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,994评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,018评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,796评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,481评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,370评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,868评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,014评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,153评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,832评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,494评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,039评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,437评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,131评论 2 356

推荐阅读更多精彩内容

  • 1.FTP简介 File Transfer Protocol 早期的三个应用级协议之一 基于C/S结构 双通道...
    尛尛大尹阅读 2,419评论 0 0
  • 图片更清晰,文字在最下面 FTP是TCP/IP的一种应用,使用TCP而不是UDP,所以是可靠的,面向连接的。 FT...
    停下浮躁的心阅读 1,716评论 0 4
  • FTP服务概述 简单FTP构建及访问 VSFTP服务基础 用户禁锢、黑白名单 FTP并发及带宽限制 一、FTP服务...
    紫_轩阅读 7,613评论 3 25
  • ftp 文件传输协议 跨平台 上传下载文件 vsftpd 工具:非常安全的文件传输协议;默认的命令端口21号,数据...
    柒夏锦阅读 4,038评论 1 9
  • 手执一根线 牵引靠二针 用心温暖牌 不能漏一针 写字写内心 织衣如做人 脚踏实地走 走出天地宽 想想这些年一路走来...
    爱上一叶浮萍阅读 419评论 20 25