Vsftpd服务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vsftpd服务相关的知识,希望对你有一定的参考价值。

Samba与FTP

Samba FTP
内部访问 支持内、外网访问
权限控制简单 较严格的权限控制
用户较不安全 隐藏本地用户
用户访问量小 支持更多的用户访问

C/S架构:Client --> Server

B/S架构:Browser --> Server

一、FTP


1.端口

(1)控制连接:TCP 21(发送TCP控制请求连接等信息)

(2)数据连接:TCP 20(实现FTP的上传、下载等操作)

2.工作流程

(1)主动模式:服务器主动发起连接

a.客户端访问FTP,输入用户、密码

b.服务器使用本地21连接客户端随机产生端口

c.客户端使用随机端口与服务器21端口建立连接关系

d.客户端使用随机端口上传或下载服务器内容(连接服务端20端口)

注:主动模式,客户端不能开启防火墙

(2)被动模式:服务器被动等待连接

a.客户端访问FTP,输入用户、密码

b.客户端使用随机端口连接服务器的21端口

c.服务器随机产生(需提前定义范围)端口,并将随机端口告知客户端

d.客户端使用随机端口连接服务器产生的随机端口

e.客户端使用随机端口上传或下载服务器内容

注:被动模式,用于客户端开启防火墙时

3.传输模式

(1)文件模式(ASCII):只支持纯文本,不再使用

(2)二进制模式:支持文件、视频、图像等

4.FTP用户类型

(1)匿名:用户名(anonymous)、密码为空;用户名(ftp)、密码(ftp)

(2)本地用户:使用服务器本地存在的用户密码登录

(3)虚拟用户:不存在的用户

5.FTP软件

(1)服务端:Windows(Serv-U、FTP发布服务)、Linux(vsftpd)非常安全的FTP软件

(2)客户端:Windows自带"资源管理器"、flashfxp;wget、aria2c、lftp等

二、搭建匿名的FTP


1.IP配置

vim /etc/sysconfig/network-scripts/ifcfg-eth0 

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.1.10
NETMASK=255.255.255.0

service network restart

2.安装vsftpd软件包

rm -rf /etc/yum.repos.d/*

vim /etc/yum.repos.d/local.repo
[local]
name=loca
baseurl=file:///mnt
gpgcheck=0
mount /dev/cdrom /mnt

yum -y install vsftpd

3.编辑配置文件

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=YES                //启用匿名访问
anon_root=/ftproot/             //指定匿名用户访问目录(默认/var/ftp/)
anon_upload_enable=YES              //允许匿名用户上传
anon_other_write_enable=YES         //允许匿名用户删除文件、文件夹
anon_mkdir_write_enable=YES         //允许匿名用户创建文件夹
anon_umask=022                  //匿名用户上传的文件权限为644

pasv_enable=YES                 //启用被动模式
pasv_min_port=10000             //指定被动模式最小端口
pasv_max_port=11000             //指定被动模式最大端口

local_enable=NO                 //不启用本地用户访问
write_enable=YES                    //允许写入
local_umask=022                 //本地用户上传的文件权限为644
dirmessage_enable=YES               //启用message信息显示(如目录下存在.message文件,会显示该文件内容)
xferlog_enable=YES              //启动xferlog日志文件
connect_from_port_20=YES                //数据连接端口
xferlog_std_format=YES              //指定xferlog日志格式为std
listen=YES                  //启动监听

pam_service_name=vsftpd             //pam认证模块
userlist_enable=YES             //启动userlist列表文件
tcp_wrappers=YES                    //启动TCP_WAPPER控制
umask值(反码) 文件 目录
022 644 755
027 640 750
002 664 775
006 660 771
007 660 770

4.启动服务

mkdir -p /ftproot/anonymous && chmod o+w /ftproot/anonymous
/etc/init.d/vsftpd start && chkconfig --level 35 vsftpd on
/etc/init.d/iptables stop && setenforce 0

三、搭建本地用户FTP


1.IP配置

vim /etc/sysconfig/network-scripts/ifcfg-eth0 

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.1.10
NETMASK=255.255.255.0

service network restart

2.安装vsftpd软件包

rm -rf /etc/yum.repos.d/*

vim /etc/yum.repos.d/local.repo

[local]
name=loca
baseurl=file:///mnt
gpgcheck=0

mount /dev/cdrom /mnt

yum -y install vsftpd

3.编辑配置文件

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO             //禁用匿名访问

pasv_enable=YES                 //启用被动模式
pasv_min_port=10000             //指定被动模式最小端口
pasv_max_port=11000             //指定被动模式最大端口

local_enable=YES                    //启用本地用户访问
local_root=/ftproot/                //指定本地用户访问目录(默认/home/xxx)
write_enable=YES                    //允许写入
local_umask=022                 //本地用户上传的文件权限为644
dirmessage_enable=YES               //启用message信息显示(如目录下存在.message文件,会显示该文件内容)
xferlog_enable=YES              //启动xferlog日志文件
connect_from_port_20=YES                //数据连接端口
xferlog_std_format=YES              //指定xferlog日志格式为std
listen=YES                  //启动监听

pam_service_name=vsftpd             //pam认证模块
userlist_enable=YES             //启动userlist列表文件
tcp_wrappers=YES                    //启动TCP_WAPPER控制

4.新建本地用户

useradd -s /sbin/nologin hehe           //新建本地系统用户hehe
echo "123" | passwd --stdin hehe            //设置hehe密码为123          

setfacl:针对不同用户设置不同权限

setfacl [选项] u/g:用户/组:权限 文件/目录

选项:

-d:设置目录的权限

-m:后续操作,后面必须跟上权限

例:

允许a、b用户拥有所有权限、c用户只能读取

mkdir /a/

useradd -s /sbin/nologin a

useradd -s /sbin/nologin b

useradd -s /sbin/nologin c

setfacl -d -m u:a:rwx /a/ //设置a用户针对/a/目录拥有所有权限

setfacl -d -m u:b:rwx /a/ //设置b用户针对/a/目录拥有所有权限

getfacl /a/ //查看/a/目录所设置的所有权限

四、搭建虚拟用户FTP


1.定义用户密码文件

vim /etc/vsftpd/user
a
123
b
123

注:奇数为用户名,偶数为上一行用户密码

2.转换用户密码文件为数据库文件

db_load -T -t hash -f /etc/vsftpd/user /etc/vsftpd/user.db
//将定义的用户密码使用hash转换为数据库文件

3.新建PAM认证文件

vim /etc/pam.d/haha
#PAM-1.0
auth    required    pam_userdb.so   db=/etc/vsftpd/user
account required    pam_userdb.so   db=/etc/vsftpd/user

4.新建本地用户

useradd -s /sbin/nologin qwe

5.编辑配置文件

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO             //禁用匿名访问

pasv_enable=YES                 //启用被动模式
pasv_min_port=10000             //指定被动模式最小端口
pasv_max_port=11000             //指定被动模式最大端口

guest_enable=YES                    //启用虚拟用户
guest_username=qwe              //指定虚拟用户对应的本地映射用户
user_config_dir=/etc/vsftpd/virtual         //指定虚拟用户配置文件存放目录

local_enable=YES                    //启用本地用户访问
local_root=/ftproot/                //指定本地、虚拟用户访问的目录
write_enable=YES                    //允许写入
local_umask=022                 //本地用户上传的文件权限为644
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES                  //启动监听

pam_service_name=haha               //pam认证模块(注:修改默认vsftpd认证PAM,修改为自建PAM)
userlist_enable=YES             //启动userlist列表文件
tcp_wrappers=YES                    //启动TCP_WAPPER控制

注:如虚拟用户不当前新建配置文件,则使用全局的虚拟用户权限

6.新建虚拟用户配置文件

mkdir /etc/vsftpd/virtual
touch /etc/vsftpd/virtual/a
touch /etc/vsftpd/virtual/b
vim /etc/vsftpd/virtual/a
anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES
anon_umask=022

7.启动服务

/etc/init.d/vsftpd start && chkconfig --level 35 vsftpd on
/etc/init.d/iptables stop && setenforce 0

8.测试

a拥有完全权限
b只能下载,不能上传

五、搭建虚拟用户与匿名用户共存


1.定义用户密码文件

vim /etc/vsftpd/user
a
123
b
123

注:奇数为用户名,偶数为上一行用户密码

2.转换用户密码文件为数据库文件

db_load -T -t hash -f /etc/vsftpd/user /etc/vsftpd/user.db
//将定义的用户密码使用hash转换为数据库文件

3.新建PAM认证文件

vim /etc/pam.d/haha
#PAM-1.0
auth    required    pam_userdb.so   db=/etc/vsftpd/user
account required    pam_userdb.so   db=/etc/vsftpd/user

4.新建本地用户

useradd -s /sbin/nologin qwe

5.编辑配置文件

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=YES                //启动匿名访问
anon_root=/ftproot/             //指定匿名用户访问目录(默认/var/ftp/)

pasv_enable=YES                 //启用被动模式
pasv_min_port=10000             //指定被动模式最小端口
pasv_max_port=11000             //指定被动模式最大端口

guest_enable=YES                    //启用虚拟用户
guest_username=qwe              //指定虚拟用户对应的本地映射用户
user_config_dir=/etc/vsftpd/virtual         //指定虚拟用户配置文件存放目录

local_enable=YES                    //启用本地用户访问
local_root=/ftproot/                //指定本地、虚拟用户访问的目录
write_enable=YES                    //允许写入
local_umask=022                 //本地用户上传的文件权限为644
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES                  //启动监听

pam_service_name=haha               //pam认证模块(注:修改默认vsftpd认证PAM,修改为自建PAM)
userlist_enable=YES             //启动userlist列表文件
tcp_wrappers=YES                //启动TCP_WAPPER控制

注:如虚拟用户不当前新建配置文件,则使用全局的虚拟用户权限

6.新建虚拟用户配置文件

mkdir /etc/vsftpd/virtual
touch /etc/vsftpd/virtual/a
touch /etc/vsftpd/virtual/b
vim /etc/vsftpd/virtual/b
anon_upload_enable=YES              //允许匿名用户上传

7.启动服务

/etc/init.d/vsftpd start && chkconfig --level 35 vsftpd on
/ec/init.d/iptables stop && setenforce 0

8.测试

hehe拥有完全权限

haha只能下载,不能上传

匿名用户只能下载,不能上传

9.Linux访问FTP

lftp FTP服务器IP -u 用户名

lftp> ls //列表显示当前所有内容

lftp> cd xxx //进入指定目录

lftp> get xxx //下载指定文件或目录到当前位置

lftp> pub xxx //上传指定文件或目录到FTP

ftp FTP服务器IP

Name (192.168.1.10:root): xxx //输入FTP服务器登陆用户

Password:xxx //输入FTP服务网登陆密码

lftp> ls //列表显示当前所有内容

lftp> cd xxx //进入指定目录

lftp> get xxx //下载指定文件或目录到当前位置

lftp> pub xxx //上传指定文件或目录到FTP

Centos 7:安装curlftpfs软件包访问ftp

以上是关于Vsftpd服务的主要内容,如果未能解决你的问题,请参考以下文章

Linux中vsftpd服务配置(匿名,用户,虚拟用户)

LINUX 中 VSFTPD安裝

vsftpd服务详解(匿名用户访问,本地用户访问,指定用户访问控制,虚拟用户)

vsftpd匿名用户访问

Vsftpd软件包的获取与安装

vsftpd常见的错误代码