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服务的主要内容,如果未能解决你的问题,请参考以下文章