CentOS 搭建 Vsftpd 服务,一次性成功,收藏了
csdh11 2024-11-30 14:01 5 浏览
文件传输协议
- 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源提供
nbsp;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认证所需文件
nbsp;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认证
建立虚拟用户映射的系统用户及对应的目录
nbsp;useradd -s /sbin/nologin -d /var/ftproot vuser
nbsp;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服务
nbsp;service vsftpd start
nbsp;chkconfig vsftpd on
# 查看端口开启情况
nbsp;netstat -tnlp | grep :21
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 23286/vsftpd
# 使用虚拟用户登录,验正配置结果
nbsp;ftp localhost
- 第五步:配置虚拟用户具有不同的访问权限
# vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问权限,每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任意未使用目录,只需要在vsftpd.conf指定其路径及名称即可。
# 1、配置vsftpd为虚拟用户使用配置文件目录
nbsp;vim vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_config
# 2、创建所需要目录,并为虚拟用户提供配置文件
nbsp;mkdir /etc/vsftpd/vusers_config/
nbsp;cd /etc/vsftpd/vusers_config/
nbsp;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}
相关推荐
- Micheal Nielsen's神经网络学习之二
-
依然是跟着MichaelNielsen的神经网络学习,基于前一篇的学习,已经大概明白了神经网络的基本结构和BP算法,也能通过神经网络训练数字识别功能,之后我试验了一下使用神经网络训练之前的文本分类,...
- CocoaPods + XCTest进行单元测试 c单元测试工具
-
在使用XCTest进行单元测试时,我们经常会遇到一些CocoaPods中的开源框架的调用,比如“Realm”或“Alamofire”在测试的时候,如果配置不当,会导致“frameworknotfo...
- Java基础知识回顾第四篇 java基础讲解
-
1、&和&&的区别作为逻辑运算符:&(不管左边是什么,右边都参与运算),&&(如果左边为false,右边则不参与运算,短路)另外&可作为位运算符...
- 项目中的流程及类似业务的设计模式总结
-
说到业务流程,可能是我做过的项目中涉及业务最多的一个方面了。除了在流程设计之外,在一些考核系统、产业审批、还有很多地方,都用到相似的设计思路,在此一并总结一下。再说到模式,并不是因为流行才用这个词,而...
- 联想三款显示器首批获得 Eyesafe Certified 2.0 认证
-
IT之家7月31日消息,据外媒报道,三款全新联想显示器是全球首批满足EyesafeCertified2.0的设备。据报道,联想获得EyesafeCertified2.0认证的显...
- maven的生命周期,插件介绍(二) 一个典型的maven构建生命周期
-
1.maven生命周期一个完整的项目构建过程通常包括清理、编译、测试、打包、集成测试、验证、部署等步骤,Maven从中抽取了一套完善的、易扩展的生命周期。Maven的生命周期是抽象的,其中的具体任务都...
- 多线程(3)-基于Object的线程等待与唤醒
-
概述在使用synchronized进行线程同步中介绍了依赖对象锁定线程,本篇文章介绍如何依赖对象协调线程。同synchronized悲观锁一样,线程本身不能等待与唤醒,也是需要对象才能完成等待与唤醒的...
- jquery mobile + 百度地图 + phonegap 写的一个"校园助手"的app
-
1jquerymobile+百度地图+phonegap写的一个"校园助手"的app,使用的是基于Flat-UI的jQueryMobile,请参考:https://github.com/...
- Apache 服务启动不了 apache系统服务启动不了
-
{我是新手,从未遇到此问题,请各位大大勿喷}事由:今天早上上班突然发现公司网站出现问题。经过排查,发现是Apache出现问题。首先检查配置文件没有出问题后,启动服务发现Apache服务能启动,但是没法...
- 健康债和技术债都不能欠 公众号: 我是攻城师(woshigcs)
-
在Solr4.4之后,Solr提供了SolrCloud分布式集群的模式,它带来的主要好处是:(1)大数据量下更高的性能(2)更好扩展性(3)更高的可靠性(4)更简单易用什么时候应该使用Sol...
- Eye Experience怎么用?HTC告诉你 eyebeam怎么用
-
IT之家(www.ithome.com):EyeExperience怎么用?HTC告诉你HTC上周除了发布HTCDesireEYE自拍机和HTCRE管状运动相机之外,还发布了一系列新的智能手机...
- Android系统应用隐藏和应用禁止卸载
-
1、应用隐藏与禁用Android设置中的应用管理器提供了一个功能,就是【应用停用】功能,这是针对某些系统应用的。当应用停用之后,应用的图标会被隐藏,但apk还是存在,不会删除,核心接口就是Packag...
- 计算机软件技术分享--赠人玫瑰,手遗余香
-
一、Netty介绍Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。也就是说,Netty...
- Gecco爬虫框架的线程和队列模型 爬虫通用框架
-
简述爬虫在抓取一个页面后一般有两个任务,一个是解析页面内容,一个是将需要继续抓取的url放入队列继续抓取。因此,当爬取的网页很多的情况下,待抓取url的管理也是爬虫框架需要解决的问题。本文主要说的是g...
- 一点感悟(一) 初识 初读感知的意思
-
时间过得很快,在IT业已从业了两年多。人这一辈子到底需要什么,在路边看着人来人往,大部分人脸上都是很匆忙。上海真是一个魔都,它有魅力,有底蕴,但是一个外地人在这里扎根置业,真的是举全家之力,还贷3...
- 一周热门
-
-
Boston Dynamics Founder to Attend the 2024 T-EDGE Conference
-
IDC机房服务器托管可提供的服务
-
详解PostgreSQL 如何获取当前日期时间
-
新版腾讯QQ更新Windows 9.9.7、Mac 6.9.25、Linux 3.2.5版本
-
一文看懂mysql时间函数now()、current_timestamp() 和sysdate()
-
流星蝴蝶剑:76邵氏精华版,强化了流星,消失了蝴蝶
-
PhotoShop通道
-
查看 CAD文件,电脑上又没装AutoCAD?这款CAD快速看图工具能帮你
-
WildBit Viewer 6.13 快速的图像查看器,具有幻灯片播放和编辑功能
-
CentOS 搭建 Vsftpd 服务,一次性成功,收藏了
-
- 最近发表
-
- Micheal Nielsen's神经网络学习之二
- CocoaPods + XCTest进行单元测试 c单元测试工具
- Java基础知识回顾第四篇 java基础讲解
- 项目中的流程及类似业务的设计模式总结
- 联想三款显示器首批获得 Eyesafe Certified 2.0 认证
- maven的生命周期,插件介绍(二) 一个典型的maven构建生命周期
- 多线程(3)-基于Object的线程等待与唤醒
- jquery mobile + 百度地图 + phonegap 写的一个"校园助手"的app
- Apache 服务启动不了 apache系统服务启动不了
- 健康债和技术债都不能欠 公众号: 我是攻城师(woshigcs)
- 标签列表
-
- serv-u 破解版 (19)
- huaweiupdateextractor (27)
- thinkphp6下载 (25)
- mysql 时间索引 (31)
- mydisktest_v298 (34)
- sql 日期比较 (26)
- document.appendchild (35)
- 头像打包下载 (61)
- oppoa5专用解锁工具包 (23)
- acmecadconverter_8.52绿色版 (39)
- oracle timestamp比较大小 (28)
- f12019破解 (20)
- np++ (18)
- 魔兽模型 (18)
- java面试宝典2019pdf (17)
- beamoff下载 (17)
- unity shader入门精要pdf (22)
- word文档批量处理大师破解版 (36)
- pk10牛牛 (22)
- server2016安装密钥 (33)
- mysql 昨天的日期 (37)
- 加密与解密第四版pdf (30)
- pcm文件下载 (23)
- jemeter官网 (31)
- iteye (18)