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

文件传输协议是文件传输协议的缩写,中文称为文本传输协议,是一套用于网络上文件传输的标准协议,属于网络传输协议的应用层。注意是协议,不是软件。今天的vsftpd是一套基于FTP开发的程序,也是Linux发行版中最受尊敬的FTP服务器程序。它的特点是体积小、重量轻、安全、使用方便。

二、安装vsftpd

yum安装vsftpd

三、firewall防火墙和selinux设置

防火墙-cmd-list-services//查看防火墙允许的服务。

防火墙-cmd-add-service = ftp-永久//永久打开FTP服务

防火墙-cmd - add-port=20/tcp -永久

防火墙-cmd-add-port = 21/TCP-permanent//允许外部网络访问

防火墙-cmd -重载////重载配置

setsebolftpd _ full _ access 1//selinux设置

setsebool tftp _ home _ dir 1

四、运行,登录

useradd测试

passwd测试

ftp本地主机

输入帐户密码并成功登录。

五、局域网测试

Centos下的网卡设置在文件夹/etc/sysconfig/network-s/,前缀为ifcfg-后跟网卡名称。

默认情况下,dhcp是打开的。首先,将BOOTPROTO="dhcp "更改为BOOTPROTO="static "进行静态获取。然后编写以下配置:

IPADR = 192 . 168 . 1 . 6

网络掩码=255.255.255.0

GATEWAY=192.168.1.1

DNS1=192.168.1.1

BROADCAST设置局域网广播地址,IPADDR是静态IP,NETMASK是子网掩码,gateway是网关或路由地址,DNS是域名系统地址,这里使用本地GATEWAY,也可以设置其他地址,比如Google和360DNS地址。

Systemctl重新启动网络//重新启动网络服务

Ip地址或ifconfig //查看ip地址

然后在windows平台上用FileZilla Client软件登录。

这里有朋友会用虚拟机进行测试,但是无法按照上面的配置进行连接,这是由于虚拟机的网络连接方式的影响。这里有一个简单的方法,就是在虚拟机中直接获取系统的ip地址,然后填入FileZilla客户端。

系统账号默认登录在账号主目录,可以切换到其他目录。

至此,基本的vsftpd已经成功构建。

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

主程序:/usr/sbin/vsftpd

主配置文件:/etc/vsftpd/vsftpd.conf

数据根目录:/var/ftp

即使是有经验的老兵也会做好后援

CP/etc/vsftpd/vsftpd . conf/etc/vsftpd/vsftpd . conf . bak

匿名_启用=否//设置不允许匿名访问

Local_enable=YES //设置本地用户访问

Write_enable=YES //设置为Write

Local_umask=022 //设置上传文件的权限屏蔽

Anon_upload_enable=NO //禁止匿名用户上传

Anon_mkdir_write_enable=NO //禁止匿名用户建立目录

Dirmessage_enable=YES //设置打开目录标语功能

xverlog _ enable = yes//设置为启用日志记录

Connect_from_port_20=YES //将端口20设置为数据连接

Chown_uploads=NO //设置为禁止上传文件以改变主机

# chown _ username =无论是谁

xer log _ file =/var/log/xfer log//设置Vsftpd的服务日志保存路径。

xverlog _ STD _ format = yes//将日志设置为使用标准记录格式。

# idle _ session _ time out = 600//set空空闲连接超时,这是此处的默认值

# data _ connection _ time out = 120//set空空闲连接超时,这是此处的默认值。

#nopriv_user=ftptest

Async_abor_enable=YES //设置为支持异步传输。

ascii _上传_启用=是

Ascii_download_enable=YES //设置支持Ascii模式的上传下载功能。

Ftpd _ banner =欢迎使用blah FTP服务。//设置Vsftpd的登录口号。

#deny_email_enable=YES //

#禁止的_电子邮件_文件=/etc/vsftpd/禁止的_电子邮件

chroot_local_user=YES

Chroot_list_enable=YES //禁止用户从他们的FTP主目录中注销。

chroot _ list _ file =/etc/vsftpd/chroot _ list//此文件中的用户不受限制,也不限于此目录。

Ls_recurse_enable=NO //禁止用户登录FTP后使用命令“ls -R”。

该命令将导致服务器性能的巨大开销。

#倾听=否

#listen_ipv6=YES

Userlist_enable=YES //设置userlist_file中的用户不使用FTP。

Tcp_wrappers=YES //设置为支持Tcp包装

allow _ written _ chroot = yes//这样可以解决chroot权限问题

Systemctl重新启动vsftpd //重新启动vsftpd服务

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

七、vsftpd虚拟用户的使用

Vsftpd提供了三种认证方式:匿名用户认证、本地用户认证和虚拟用户认证。上面的测试用户是本地用户。从安全性来看,虚拟用户是最安全的。接下来,我们开始配置虚拟用户。

虚拟用户配置步骤:

1)建立虚拟FTP用户数据库文件。

2)创建虚拟用户映射的FTP根目录和系统用户。

3)建立支持虚拟用户的PAM认证文件。

4)在vsftpd.conf中添加支持配置

5)为虚拟用户设置权限。

6)虚拟账户登录。

1.建立虚拟文件传输协议用户数据库文件

建立虚拟用户列表文件,该文件是记录vsftpd虚拟用户的用户名和密码的数据文件。我在这里命名为vuser.list,保存在/etc/vsftpd/目录下。

vim vuser.list

一行账号一行密码

vuser

123456

安装伯克利数据库

yum install db4*

安装后

由vuser.list生成用户加密文件

Chmod 600 vuser.db //敏感文件仅限所有者读写。

2.创建虚拟用户及其主目录

user add-d/var/vusers-s/sbin/nologin vftp//创建一个系统用户vftp,并将其主目录设置为/var/vusers

Chmod -Rf 755 /var/vusers/ //修改目录的权限,以便其他用户也可以访问它。

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

vsftpd的Pam文件在/etc/pam.d/目录下,要先做好备份工作。

cp vsftpd vsftpd.bakvim vsftpd

在添加以下内容之前,请注释掉所有内容:

auth required/lib 64/security/PAM _ userdb . sodb =/etc/vsftpd/vuser//此句用于检查用户密码。不要写后缀。数据库文件中的数据库

account required/lib 64/security/PAM _ userdb . sodb =/etc/vsftpd/vuser//此句用于检查用户是否在有效期内,数据库支持虚拟用户的PAM认证文件。

4.在vsftpd.conf中添加支持配置

Guest_enable=YES //打开虚拟用户模式

Guest_username=vftp //指定一个虚拟用户帐户

PAM _ service _ name = vsftpd.virtual//specify PAM文件

user _ config _ dir =/etc/vsftpd/vusers _ profile//指定虚拟用户的权限配置目录。

Virtual _ use _ local _ priv = NO//虚拟用户和匿名用户拥有相同的权限

5.为虚拟用户设置不同的权限。

mkdir/etc/vsftpd/vusers _ profile//创建新的虚拟用户目录

vim/etc/vsftpd/vu SERS _ profile/vuser//创建一个新的虚拟用户配置文件,文件名应等于上述虚拟用户列表中的帐户名。

Local_root=/var/vusers/vuser //虚拟帐户的主目录

匿名_启用=否

local_umask=022

Anon_upload_enable=YES //上传权限

Anon_mkdir_write_enable //创建文件和目录的权限

Anon_other_write_enable //删除文件和目录的权限

anon _ world _ ready _ only = YES//当“其他人”拥有读取权限时,可以下载该文件

下载_启用=是//下载权限

保存配置并重新启动服务。

systemctl重启vsftpd

八、认识vsftpd传输模式

有源方式

在主动模式下,FTP客户端从任意端口5150启动一个端口号为5151的FTP请求;然后服务器返回确认,然后主动发起从服务器本地端口20到客户端监听端口5151的连接请求,最后客户端返回确认。

被动方式

在被动模式下,命令连接和数据连接都由客户端发起。如上图所示,客户端通过随机命令端口5150向服务器的21命令端口发送PASV请求,然后服务器返回到数据端口3267,告诉客户端我连接的是哪个端口监视器。然后,客户端启动到服务器的监听端口3268的数据连接,最后服务器以确认进行回复。

vsftpd默认为被动模式。因此,客户端应该设置被动模式连接。如果到目前为止连接不成功,请查看客户端是否设置了被动传输模式。

九、500 OOPS:priv_sock_get_cmd错误

网上很多人说是selinux设置的问题。我按照他们换了,还是不行。最后发现问题出在pam文件里。

auth required/lib 64/security/PAM _ userdb . so db =/etc/vsftpd/vuser

需要帐户/lib 64/security/PAM _ userdb . so db =/etc/vsftpd/vuser

如果你是64位,需要加/lib64/,我遇到的问题就解决了。

如有不妥,请指出。谢谢你。

喜欢就关注我吧~

1.《vsftpd Centos7.5搭建FTP服务-vsftpd(超详细)》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《vsftpd Centos7.5搭建FTP服务-vsftpd(超详细)》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/jiaoyu/1734896.html