ftp

Posted

tags:

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

Samba

1)内部访问

2)权限控制简单

3)用户较不安全

4)用户访问量小

FTP

1)支持内、外网访问

2)较严格的权限控制

3)隐藏本地用户

4)支持更多的用户访问

5)带宽

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控制

反码

local_umask=022

文件:666
目录:777

文件:644
目录:755

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

三、搭建本地用户

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

1.安装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

2.编辑配置文件

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控制

3.新建本地用户

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/目录所设置的所有权限

四、搭建虚拟用户

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=NO //允许匿名用户上传

7.启动服务

/etc/init.d/vsftpd start && chkconfig --level 35 vsftpd on

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

怎么创建一个ftp的服务器?尽量简洁

请教FTP命令??

如何登陆FTP网址

ftp客户端工具,ftp客户端工具实现的方法及连接管理方法

怎么通过PHP来支持FTP和HTTP上传

华为手机怎么打开ftp地址?