乐趣区

关于linux:CentOS-搭建-Vsftpd-服务一次性成功收藏了

文件传输协定

  • FTP

文件传输协定 (FTP) 是一种基于 TCP 协定在客 C / S 架构的协定,占用 20 和 21 端口

  • TFTP

简略文件传输协定 (TFTP) 是一种基于 UDP 协定在客 C / S 架构的协定,占用 69 端口 TFTP 的命令性能不如 FTP 服务弱小,甚至不能遍历目录,在安全性方面也弱于 FTP 服务 因为 TFTP 不须要客户端的权限认证,也就缩小了无谓的零碎和网络带宽耗费,效率更高。

FTP 协定概述

一般来讲,人们将计算机联网的首要目标就是获取材料,而文件传输是一种十分重要的获取材料的形式。明天的互联网是由几千万台集体计算机、工作站、服务器、小型机、大型机、巨型机等具备不同型号、不同架构的物理设施独特组成的,而且即使是集体计算机,也可能会装有 Windows、Linux、UNIX、Mac 等不同的操作系统。为了可能在如此简单多样的设施之间解决问题解决文件传输问题,文件传输协定(FTP)应运而生。

FTP 是一种在互联网中进行文件传输的协定,基于客户端 / 服务器(C/S)模式,默认应用 20、21 号端口,其中端口 20(数据端口)用于进行数据传输,端口 21(命令端口)用于承受客户端收回的相干 FTP 命令与参数。FTP 服务器广泛部署于内网中,具备容易搭建、方便管理的特点。而且有些 FTP 客户端工具还能够反对文件的多点下载以及断点续传技术,因而 FTP 服务失去了宽广用户的青眼。

  • 命令连贯
  • 传输 TCP 的文件治理类命令给服务端
  • 直到用户退出才敞开连贯,否则始终连贯
  • 数据连贯
  • 数据传输,按需创立及敞开的连贯
  • 数据传输能够为文本或二进制格局传输

FTP 工作模式

FTP 服务器是依照 FTP 协定在互联网上提供文件存储和拜访服务的主机,FTP 客户端则是向服务器发送连贯申请,以建设数据传输链路的主机。FTP 协定有上面两种工作模式。

  • 被动模式:FTP 服务器被动向客户端发动连贯申请
  • 命令连贯:Client:50000 –> Server:21
  • 数据连贯:Server:20/tcp –> Client:50000+1
  • 模式毛病:客户端有防火墙,个别会禁止服务的被动连贯

  • 被动模式:FTP 服务器期待客户端发动连贯申请(FTP 的默认工作模式)
  • 命令连贯:Client:50000 –> Server:21
  • 数据连贯:Client:50000+1 –> Server: 随机端口 ==> 通过命令连贯得悉这个随机端口
  • 模式毛病:服务器端须要批改防火墙规定并凋谢 21 和这个随机端口

防火墙个别是用于过滤从外网进入内网的流量,因而有些时候须要将 FTP 的工作模式设置为被动模式,才能够传输数据。然而因为客户端主机个别都设有防火墙,会禁止服务器的连贯申请,所有适当的 iptables 规定变得越来越重要了。

FTP 服务程序

因为 FTP 是一种基于(C/S)客户端 / 服务器模式的协定,所有有很多的程序可能提供 FTP 服务的性能。

服务端程序
  • wu-ftpd
  • 一个 Internet 上最风行的 FTP 守护程序,性能非常弱小,能够构建多种类型 FTP 服务器。
  • proftpd
  • 一个 Unix 平台上或是类 Unix 平台上的 FTP 服务器开源程序,任何人只有恪守 GPL 版权申明都能够随便批改源码。proftpd 亦开发了有图形用户界面的 FTP 服务端软体称为 gProFTPd,能够提供图形界面的操作。针对 Wu-FTP 的弱项而开发的,除了改良的安全性,还具备许多 Wu-FTP 没有的特点,能以 Stand-alone、xinetd 模式运行等。
  • pureftp
  • pureftp 是收费和平安的 FTP 服务器,它重视效率和易用性。
  • vsftpd
  • vsftpd 是 very secure FTP daemon 的缩写,安全性是它的一个最大的特点,能够运行在多种平台之上提供平安的 FTP 服务。在 CentOS 等零碎以及多个互联网厂商都在应用的 FTP 服务程序,你值得领有。
  • ServU
  • Serv- U 是一种被宽泛使用在 Windows 平台的的 FTP 服务器软件,能够设定多个 FTP 服务器、限定登录用户的权限、登录主目录及空间大小等长处。
客户端程序
  • 命令行
  • ftp
  • lftp, lftpget
  • wget, curl
  • 因为 FTP 协定是通过 TCP 明文传送的,所有为了平安能够应用 ftps(SSL), sftp(SSH)工具
  • 图形化
  • _ filezilla
  • _ gftp
  • _ gProFTPd
  • _ flashfxp * cuteftp

FTP 服务的响应码

1xx: 信息
2xx: 胜利类的状态码
3xx: 提醒需进一步提供补充类信息的状态码
4xx: 客户端谬误
5xx: 服务端谬误

vsftpd 服务程序

vsftpd(十分平安的 FTP 守护过程)是一款运行在 Linux 操作系统上的 FTP 服务程序,不仅齐全开源而且收费,此外,还具备很高的安全性、传输速度,以及反对虚构用户验证等其余 FTP 服务程序具备的特点。

装置服务端程序
[root@localhost ~]# yum install vsftpd
Loaded plugins: langpacks, product-id, subscription-manager
………………省略局部输入信息………………
================================================================================
Installing:
vsftpd x86_64 3.0.2-9.el7 rhel 166 k
Transaction Summary
================================================================================
Install 1 Package
vsftpd.x86_64 0:3.0.2-9.el7
Complete!
[root@linuxprobe ~]# yum install ftp
Loaded plugins: langpacks, product-id, subscription-manager
………………省略局部输入信息………………
Install 1 Package
ftp.x86_64 0:0.17-66.el7
Complete!

敞开本机防火墙

# iptables 防火墙管理工具默认禁止了 FTP 传输协定的端口号
[root@localhost ~]# iptables -F

配置 FTP 服务

# 程序的主配置文件为 /etc/vsftpd/vsftpd.conf
[root@localhost ~]# cat /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
配置文件

CentOS6 中的配置文件地位,在 CentOS7 中有可能不同。

主配置文件:/etc/vsftpd/vsftpd.conf
配置文件目录:/etc/vsftpd/*.conf
服务启动脚本:/etc/rc.d/init.d/vsftpd
用户认证配置文件:/etc/pam.d/vsftpd
共享目录
匿名用户 (映射为 ftp 用户) 共享资源地位:/var/ftp
零碎用户通过 ftp 拜访的资源的地位:用户本人的家目录
虚构用户通过 ftp 拜访的资源的地位:给虚构用户指定的映射成为的零碎用户的家目录

配置参数

罕用配置参数都为主配置文件,/etc/vsftpd/vsftpd.conf 的罕用配置。

通用根底配置
listen=[YES|NO]         #是否以独立运行的形式监听服务
listen_address=IP 地址   #设置要监听的 IP 地址
listen_port=21        #设置 FTP 服务的监听端口
download_enable=[YES|NO] #是否容许下载文件
max_clients=0   #最大客户端连接数,0 为不限度
max_per_ip=0   #同一 IP 地址的最大连接数,0 为不限度
chown_uploads=[YES|NO] #是否容许扭转上传文件的属主
chown_username=whoever #扭转上传文件的属主为 whoever
pam_service_name=vsftpd #让 vsftpd 应用 pam 实现用户认证,应用的文件为 /etc/pam.d/vsftpd

匿名用户的配置

anonymous_enable=[YES|NO]      #是否容许匿名用户拜访
anon_upload_enable=[YES|NO]    #是否容许匿名用户上传文件
anon_mkdir_write_enable=[YES|NO] #是否容许匿名用户创立目录
anon_other_write_enable=[YES|NO] #是否凋谢匿名用户的其余写入权限(包含重命名、删除等操作权限)anon_umask=022       #匿名用户上传文件的 umask 值
anon_root=/var/ftp   #匿名用户的 FTP 根目录
anon_max_rate=0       #匿名用户的最大传输速率(字节 / 秒),0 为不限度

零碎用户的配置

anonymous_enable=NO    #禁止匿名拜访模式
local_enable=[YES|NO]  #是否容许本地用户登录 FTP
write_enable=[YES|NO]  #是否凋谢本地用户的其余写入权限
local_umask=022        #本地用户上传文件的 umask 值
local_root=/var/ftp    #本地用户的 FTP 根目录
local_max_rate=0      #本地用户最大传输速率(字节 / 秒),0 为不限度
userlist_enable=[YES|NO] #开启用户作用名单文件性能
userlist_deny=[YES|NO]   #启用禁止用户名单,名单文件为 ftpusers 和 /etc/vsftpd/user_list
chroot_local_user=[YES|NO] #是否将用户权限禁锢在 FTP 家目录中,以确保安全
chroot_list_enable=[YES|NO] #禁锢文件中指定的 FTP 本地用户于其家目录中
chroot_list_file=/etc/vsftpd/chroot_list #指定禁锢文件地位,须要和 chroot_list_enable 一起开启

日志性能

xferlog_enable=[YES|NO]    #是否开启 FTP 日志性能
xferlog_std_format=[YES|NO]    #是否以规范格局放弃日志
xferlog_file=/var/log/xferlog  #指定保留日志的文件名称,须要一起开启

vsftpd 认证模式

vsftpd 作为更加平安的文件传输的服务程序,容许用户以三种认证模式登录到 FTP 服务器上。

  • 匿名凋谢模式
  • 匿名凋谢模式是一种最不平安的认证模式,任何人都能够无需明码验证而间接登录到 FTP 服务器。这种模式个别用来拜访不重要的公开文件,在生产环境中尽量不要寄存重要文件,不倡议在生产环境中如此行事。
  • 本地用户模式
  • 本地用户模式是通过 Linux 零碎本地的账户明码信息进行认证的模式,相较于匿名凋谢模式更平安,而且配置起来绝对简略。然而如果被黑客破解了账户的信息,就能够畅通无阻地登录 FTP 服务器,从而齐全管制整台服务器。
  • 虚构用户模式
  • 虚构用户模式是这三种模式中最平安的一种认证模式,它须要为 FTP 服务独自建设用户数据库文件,虚构出用来进行口令验证的账户信息,而这些账户信息在服务器零碎中实际上是不存在的,仅供 FTP 服务程序进行认证应用。这样,即便黑客破解了账户信息也无奈登录服务器,从而无效升高了毁坏范畴和影响。
匿名拜访模式

vsftpd 服务程序默认开启了匿名凋谢模式,咱们须要做的就是凋谢匿名用户的上传、下载文件的权限,以及让匿名用户创立、删除、更名文件的权限。

# 匿名拜访模式主配置文件
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
anon_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
# 重启服务
[root@localhost ~]# systemctl restart vsftpd
# 服务程序退出到开机启动项中,以保障服务器在重启后仍然可能失常提供传输服务
[root@localhost ~]# systemctl enable vsftpd
ln -s '/usr/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi-user.target.wants/vsftpd.service
# 在 vsftpd 服务程序的匿名凋谢认证模式下,其账户对立为 anonymous,明码为空
# 连贯到 FTP 服务器后,默认拜访的是 /var/ftp 目录,咱们能够在其中进行创立、删除等操作
[root@localhost ~]# ftp 192.168.10.10
Connected to 192.168.10.10 (192.168.10.10).
220 (vsFTPd 3.0.2)
Name (192.168.10.10:root): anonymous
331 Please specify the password.
Password: 此处敲击回车即可
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> mkdir files
550 Permission denied.
# 零碎显示回绝创立目录,这是为什么呢?# 查看该目录的权限得悉,只有 root 管理员才有写入权限,凋谢 ftp 用户权限(该账户在零碎中曾经存在)
[root@localhost ~]# ls -ld /var/ftp/pub
drwxr-xr-x. 3 root root 16 Jul 13 14:38 /var/ftp/pub
[root@localhost ~]# chown -Rf ftp /var/ftp/pub
[root@localhost ~]# ls -ld /var/ftp/pub
drwxr-xr-x. 3 ftp root 16 Jul 13 14:38 /var/ftp/pub
[root@localhost ~]# ftp 192.168.10.10
………………省略局部输入信息………………
ftp> mkdir files
550 Create directory operation failed.
# 咱们发现还是无奈创立目录,发现是 SELinux 服务在捣鬼了
# 应用 getsebool 命令查看与 FTP 相干的 SELinux 域策略都有哪些
[root@localhost ~]# getsebool -a | grep ftp
ftp_home_dir --> off
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
sftpd_anon_write --> off
sftpd_enable_homedirs --> off
sftpd_full_access --> off
sftpd_write_ssh_home --> off
tftp_anon_write --> off
tftp_home_dir --> off
# 依据教训和策略的名称判断出是 ftpd_full_access--> off 策略规定导致了操作失败
[root@localhost ~]# setsebool -P ftpd_full_access=on
# 此时,匿名用户就能够失常应用 FTP 服务了
[root@linuxprobe ~]# ftp 192.168.10.10
………………省略局部输入信息………………
ftp> mkdir files
257 "/pub/files" created
ftp> rename files database
350 Ready for RNTO.
250 Rename successful.
ftp> exit
221 Goodbye.
本地用户模式

如果大家之前用的是匿名凋谢模式,当初就能够将它关了,而后开启本地用户模式。

# 本地用户模式主配置文件
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
connect_from_port_20=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
xferlog_enable=YES
xferlog_std_format=YES
# 同样须要重启服务和开机自启动
[root@localhost ~]# systemctl restart vsftpd
# 服务程序退出到开机启动项中,以保障服务器在重启后仍然可能失常提供传输服务
[root@localhost ~]# systemctl enable vsftpd
ln -s '/usr/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi-user.target.wants/vsftpd.service
# 当初曾经齐全能够本地用户的身份登录 FTP 服务器了,然而应用 root 无奈登陆
[root@localhost ~]# ftp 192.168.10.10
Connected to 192.168.10.10 (192.168.10.10).
220 (vsFTPd 3.0.2)
Name (192.168.10.10:root): root
530 Permission denied.
Login failed.
ftp>
# 这是因为,为了零碎的平安,默认禁止 root 等用户登录 FTP 服务被零碎回绝拜访
# 因为 vsftpd 服务程序所在的目录中,默认寄存着两个名为用户名单的文件,ftpusers 和 user_list
# 在 ftpusers 和 user_list 两个用户文件中将 root 用户删除就能够登录了
[root@localhost ~]# cat /etc/vsftpd/user_list
root
bin
daemon
[root@localhost ~]# cat /etc/vsftpd/ftpusers
root
bin
daemon
# 在采纳本地用户模式登录 FTP 服务器后,默认拜访的是该用户的家目录,因而不存在写入权限有余的状况
# 如果不敞开 SELinux,则须要再次开启 SELinux 域中对 FTP 服务的容许策略
[root@localhost ~]# setsebool -P ftpd_full_access=on
# 即能够应用零碎用户进行 FTP 服务的登录了
[root@localhost ~]# ftp 192.168.10.10
Connected to 192.168.10.10 (192.168.10.10).
220 (vsFTPd 3.0.2)
Name (192.168.10.10:root): escape
331 Please specify the password.
Password: 此处输出该用户的明码
230 Login successful.
Remote system type is UNIX.
虚构用户模式(文本文件)

认证模式:vsftpd + pam + file

  • 第一步:创立用于进行 FTP 认证的用户数据库文件
  • 这里应用文本文件进行用户认证
  • 数据库文件中奇数行为账户名,偶数行为明码
# 编辑虚构用户文件
[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# vim vuser.list
zhangsan
redhat
lisi
redhat
# 明文信息既不平安,也不合乎让 vsftpd 服务程序间接加载的格局
# 因而须要应用 db_load 命令用哈希算法将原始的明文信息文件转换成数据库文件
# 升高数据库文件的权限,而后再把原始的明文信息文件删除
[root@localhost vsftpd]# db_load -T -t hash -f vuser.list vuser.db
[root@localhost vsftpd]# file vuser.db
vuser.db: Berkeley DB (Hash, version 9, native byte-order)
[root@localhost vsftpd]# chmod 600 vuser.db
[root@localhost vsftpd]# rm -f vuser.list
  • 第二步:创立 vsftpd 服务程序用于存储文件的根目录以及虚构用户映射的零碎本地用户
  • FTP 服务用于存储文件的根目录指的是,当虚构用户登录后所拜访的默认地位
  • 能够把这个零碎本地用户的家目录设置为 /var 目录并设置不容许登录 FTP 服务器
[root@localhost ~]# useradd -d /var/ftproot -s /sbin/nologin virtual
[root@localhost ~]# ls -ld /var/ftproot/
drwx------. 3 virtual virtual 74 Jul 14 17:50 /var/ftproot/
[root@localhost ~]# chmod -Rf 755 /var/ftproot/
  • 第三步:建设反对虚构用户的 PAM 认证文件
  • PAM 是一种认证机制,通过一些动态链接库和对立的 API 把零碎提供的服务与认证形式离开
  • PAM 是可插拔认证模块,使得系统管理员能够依据需要灵便调整服务程序的不同认证形式
# 新建一个用于虚构用户认证的 PAM 文件 vsftpd.vu
# PAM 文件内的 db= 参数为应用 db_load 命令生成的账户明码数据库文件的门路,但不必写数据库文件的后缀
[root@localhost ~]# vim /etc/pam.d/vsftpd.vu
auth       required     pam_userdb.so    db=/etc/vsftpd/vuser
account    required     pam_userdb.so    db=/etc/vsftpd/vuser
  • 第四步:在 vsftpd.conf 文件中增加反对配置
  • 在 vsftpd 服务程序的主配置文件中默认就带有参数 pam_service_name=vsftpd
  • 示意登录 FTP 服务器时是依据 /etc/pam.d/vsftpd 文件进行平安认证的
# 咱们要做的就是把 vsftpd 主配置文件中原有的 PAM 认证文件 vsftpd 批改为新建的 vsftpd.vu 文件即可
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
pam_service_name=vsftpd.vu
user_config_dir=/etc/vsftpd/vusers_dir
local_enable=YES
guest_enable=YES
guest_username=virtual
allow_writeable_chroot=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
userlist_enable=YES
tcp_wrappers=YES
  • 第五步:为虚构用户设置不同的权限
  • 只需新建一个目录,在外面别离创立两个以 zhangsan 和 lisi 命名的文件
  • 在每个文件中,对用户别离进行配置,达到治理不必用户权限的成果
[root@localhost ~]# mkdir /etc/vsftpd/vusers_dir/
[root@localhost ~]# cd /etc/vsftpd/vusers_dir/
[root@localhost vusers_dir]# touch lisi
[root@localhost vusers_dir]# vim zhangsan
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
  • 第六步:设置 SELinux 域容许策略
# 先依照后面试验中的步骤开启 SELinux 域的容许策略,免得再次出现操作失败的状况
[root@localhost ~]# setsebool -P ftpd_full_access=on
[root@localhost ~]# getsebool -a | grep ftp
ftp_home_dir –> off
ftpd_anon_write –> off
ftpd_connect_all_unreserved –> off
ftpd_connect_db –> off
ftpd_full_access –> off
ftpd_use_cifs –> off
ftpd_use_fusefs –> off
ftpd_use_nfs –> off
ftpd_use_passive_mode –> off
httpd_can_connect_ftp –> off
httpd_enable_ftp_server –> off
sftpd_anon_write –> off
sftpd_enable_homedirs –> off
sftpd_full_access –> on
sftpd_write_ssh_home –> off
tftp_anon_write –> off
tftp_home_dir –> off
  • 第七步:应用虚构 FTP 用户拜访测试
[root@localhost ~]# ftp 192.168.10.10
Connected to 192.168.10.10 (192.168.10.10).
220 (vsFTPd 3.0.2)
Name (192.168.10.10:root): lisi
331 Please specify the password.
Password: 此处输出虚构用户的明码
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mkdir files
550 Permission denied.
ftp> exit
221 Goodbye.
[root@localhost ~]# ftp 192.168.10.10
Connected to 192.168.10.10 (192.168.10.10).
220 (vsFTPd 3.0.2)
Name (192.168.10.10:root): zhangsan
331 Please specify the password.
Password: 此处输出虚构用户的明码
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mkdir files
257 "/files" created
ftp> rename files database
350 Ready for RNTO.
250 Rename successful.
ftp> rmdir database
250 Remove directory operation successful.
ftp> exit
221 Goodbye.
虚构用户模式(MySQL 数据库)

认证模式:vsftpd + pam + mysql

  • 第一步:装置所须要程序
# 装置 mysql 和 pam_mysql,pam_mysql 由 epel 源提供
$ yum -y install vsftpd mysql-server mysql-devel pam_mysql
  • 第二步:创立虚构用户账号
# 1、筹备数据库及相干表
首先请确保 mysql 服务曾经失常启动。而后,按须要建设存储虚构用户的数据库即可,这里将其创立为 vsftpd 数据库
mysql> create database vsftpd;
受权 vsftpd 用户能够通过 localhost 主机操作 select 权限 vsftpd 库的所有表,明码为 www.escapelife.com
mysql> grant select on vsftpd.* to vsftpd@localhost identified by 'www.escapelife.com';
mysql> grant select on vsftpd.* to vsftpd@127.0.0.1 identified by 'www.escapelife.com';
mysql> flush privileges;(这里是本机装置所有受权 localhost 主机,如果不同须要应用不同的主机地址)(mysql> grant select on vsftpd.* to vsftpd@'192.168.31.%' identified by 'www.escapelife.com';)(mysql> flush privileges;)创立相干表
mysql> use vsftpd;
mysql> create table users (
    -> id INT UNSIGNED AUTO_INCREMENT NOT NULL,
    -> name VARCHAR(50) BINARY NOT NULL,
    -> password char(48) BINARY NOT NULL,
    -> PRIMARY KEY(id)
    -> );
# 2、增加测试的虚构用户
依据须要增加所须要的用户,须要阐明的是,这里将其明码为了平安起见应该应用 PASSWORD 函数加密后存储
mysql> INSERT INTO users(name, password) VALUES('tom', password('escapelife'));
mysql> INSERT INTO users(name, password) VALUES('bob', password('escapelife'));
SELETC * FROM user;
  • 第三步:配置 vsftpd
# 1. 建设 pam 认证所需文件
$ vi /etc/pam.d/vsftpd.mysql
#增加如下两行,次要 32 位和 64 位库文件的不同地位,模块门路可不写示意 pam 模块门路
指定用户、明码、主机、数据库、表、用户名字段、明码字段、明码的加密形式
明码的加密形式能够通过装置的 pam_mysql 的文档查看,/usr/share/doc/pam_mysql-0.7/README   rpm -ql pam_mysql
auth required /lib64/security/pam_mysql.so user=vsftpd passwd=www.escapelife.com host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /lib64/security/pam_mysql.so user=vsftpd passwd=www.escapelife.com host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2(auth required /lib64/security/pam_mysql.so user=vsftp passwd=www.escapelife.com host=192.168.31.71 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2)(account required /lib64/security/pam_mysql.so user=vsftp passwd=www.escapelife.com host=192.168.31.71 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2)

留神:因为 mysql 的装置形式不同,pam_mysql.so 基于 unix sock 连贯 mysql 服务器时可能会出问题,此时,倡议受权一个可近程连贯的 mysql 并拜访 vsftpd 数据库的用户。

# 2. 批改 vsftpd 的配置文件,使其适应 mysql 认证
建设虚构用户映射的零碎用户及对应的目录
$ useradd -s /sbin/nologin -d /var/ftproot vuser
$ chmod go+rx /var/ftproot
请确保 /etc/vsftpd.conf 中曾经启用了以下选项
anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
chroot_local_user=YES
而后增加以下选项
guest_enable=YES
guest_username=vuser
并确保 pam_service_name 选项的值如下所示
pam_service_name=vsftpd.mysql
  • 第四步:启动 vsftpd 服务
# 启动 vsftpd 服务
$ service vsftpd start
$ chkconfig vsftpd on
# 查看端口开启状况
$ netstat -tnlp | grep :21
tcp      0      0 0.0.0.0:21      0.0.0.0:*      LISTEN      23286/vsftpd
# 应用虚构用户登录,验正配置后果
$ ftp localhost
  • 第五步:配置虚构用户具备不同的拜访权限
# vsftpd 能够在配置文件目录中为每个用户提供独自的配置文件以定义其 ftp 服务拜访权限,每个虚构用户的配置文件名同虚构用户的用户名。配置文件目录能够是任意未应用目录,只须要在 vsftpd.conf 指定其门路及名称即可。# 1、配置 vsftpd 为虚构用户应用配置文件目录
$ vim vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_config
# 2、创立所须要目录,并为虚构用户提供配置文件
$ mkdir /etc/vsftpd/vusers_config/
$ cd /etc/vsftpd/vusers_config/
$ touch tom bob
# 3、配置虚构用户的拜访权限
# 虚构用户对 vsftpd 服务的拜访权限是通过匿名用户的相干指令进行的
# 如果须要让 tom 用户具备上传文件的权限,能够批改 /etc/vsftpd/vusers_config/tom 文件
anon_upload_enable={YES|NO}
anon_mkdir_write_enable={YES|NO}
anon_other_write_enable={YES|NO}

作者: Escape  链接:https://www.escapelife.site/p…

退出移动版