Linux下使用vsftp搭建FTP

ftp文件服务器简介:

  • vsftpd 是“very secure FTP daemon”的缩写,是一个完全免费的、开放源代码的ftp服务器软件。特点 是:非常高的安全性需求、带宽限制、良好的可伸缩性等。

工作原理:

  • vsftpd使用ftp协议,该协议属于应用层协议。它是典型的c/s架构,ftp服务端用来存储文件,ftp客户端 可以通过ftp协议连接服务端实现上传和下载资源。
  • FTP主动模式:客户端从一个任意的端口N(N>1024)连接到FTP服务器的port21命令端口,客户端开始监听端口N+1,并发送FTP命令“port+1”到FTP服务器,FTP服务器以数据端口(20)连接到客户端指定的数据端口(N+1)
  • FTP被动模式:客户端从一个任意的端口N(N1024)连接到FTP服务器的port21命令端口,客户端开始监听端口N+1,客户端提交PASV命令,服务器会开启一个任意的端口(P>1024),并发送 PORT命令给客户端。客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据
    在这里插入图片描述在这里插入图片描述

vsftp服务器安装配置

1.安装部署:

  • server:192.168.2.10
  • client:192.168.2.20

1.1、server端安装vsftp服务并启动服务

[root@bogon ~]# yum -y install vsftp    --安装vsftp
[root@bogon ~]# systemctl start vsftpd    --开启vsftpd服务
[root@bogon ~]# systemctl enable vsftpd   --设置开机自启vsftpd服务
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.

1.2、client端安装lftp

[root@bogon ~]# yum -y install lftp

2、匿名用户访问

  • 用ftp客户端匿名登录需要输入用户名及密码验证,匿名用户名为:ftp或者anonymous,密码为空。 用lftp客户端匿名登录则不需要输入以上信息。
  • lftp客户端链接
[root@bogon ~]# lftp 192.168.2.10
lftp 192.168.2.10:~> 
  • 下载命令

2.1、get下载单个文件:

  • 首先在服务端/var/ftp/pub下创建file1…file10
[root@bogon pub]# touch /var/ftp/pub/file{1..10}
  • 在客户端查看上面创建的文件
lftp 192.168.2.10:~> cd pub/
lftp 192.168.2.10:/pub> ls
-rw-r--r--    1 0        0               0 Apr 17 04:22 file1
-rw-r--r--    1 0        0               0 Apr 17 04:22 file10
-rw-r--r--    1 0        0               0 Apr 17 04:22 file2
-rw-r--r--    1 0        0               0 Apr 17 04:22 file3
-rw-r--r--    1 0        0               0 Apr 17 04:22 file4
-rw-r--r--    1 0        0               0 Apr 17 04:22 file5
-rw-r--r--    1 0        0               0 Apr 17 04:22 file6
-rw-r--r--    1 0        0               0 Apr 17 04:22 file7
-rw-r--r--    1 0        0               0 Apr 17 04:22 file8
-rw-r--r--    1 0        0               0 Apr 17 04:22 file9
  • 可以先切换到本地指定目录(data)进行文件的下载,保存:
lftp 192.168.2.10:/pub> lcd /data       ---切换本地目录/data
lcd ok, local cwd=/data
lftp 192.168.2.10:/pub> get file1		---下载文件file1到/data下

ps:当客户端已经连接上服务端,cd是用于切换服务器中的目录命令,如果想切换客户端本地的目录则 使用lcd命令。

2.2、mget批量下载:

lftp 192.168.2.10:/pub> mget file*    ---下载所有以file开头的文件到/data下
mget: /data/file1: File exists        ---报错:/data/file文件已存在
Transfer of 1 of 10 files failed      ---10个文件一个传输报错的
  • 默认配置只能进行文件的读取和下载,不能进行写入和上传文件:
lftp 192.168.2.10:/pub> put /etc/fstab 
put: Access failed: 550 Permission denied. (fstab)
lftp 192.168.2.10:/pub> mkdir abc
mkdir: Access failed: 550 Permission denied. (abc)

可以看到上传命令和创建命令都失败了,没有相应的权限!

3、开启匿名用户创建文件,重命名,删除,上传权限:

在服务端打开vsftp配置文件/etc/vsftpd/vsftpd.conf

  • 开启上传权限
  • anon_upload_enable=YES
  • 开启创建文件权限
  • anon_mkdir_write_enable=YES
  • 开启重命名,删除权限
  • anon_other_write_enable=YES

3.1、重启服务,再次进入,发现还是没法创建目录,但是报错信息不一样,如下:

lftp 192.168.2.10:/pub> mkdir abc
mkdir: Access failed: 550 Create directory operation failed. (abc)
  • 这是因为目录没有写权限,给pub目录授权,如下:
[root@bogon pub]# chmod o+w /var/ftp/pub/
[root@bogon pub]# ll -d /var/ftp/pub/
drwxr-xrwx. 2 root root 137 4月  17 12:22 /var/ftp/pub/
  • 再次进去,创建目录:
[root@bogon ~]# lftp 192.168.2.10
lftp 192.168.2.10:~> cd pub/
lftp 192.168.2.10:/pub> mkdir abc
mkdir ok, `abc' created

小总结:要想匿名用户有写的权限,一是需要服务端配置文件开启写的权限,二是所在的目录本身有其 他用户写的权限!

  • 上传命令

4、 put上传单个文件

注意:要想使用上传命令,需要开启上传权限和可写权限。

  • 直接上传不改名,可以省去-o refile,如果不知道本地目录有哪些文件,可以使用!dir查看,如下:
lftp 192.168.2.10:/pub> !dir    ---查看当前本地文件
anaconda-ks.cfg
lftp 192.168.2.10:/pub> put /etc/passwd   上传/etc/passwd到服务器的/var/ftp/pub下
1023 bytes transferred
  • 上传文件之后,想改名,就要带-o refile了,如下
lftp 192.168.2.10:/pub> put /etc/fstab -o fs      
508 bytes transferred
lftp 192.168.2.10:/pub> ls
drwx------    2 14       50              6 Apr 17 05:09 abc
-rw-r--r--    1 0        0               0 Apr 17 04:22 file1
-rw-r--r--    1 0        0               0 Apr 17 04:22 file10
-rw-r--r--    1 0        0               0 Apr 17 04:22 file2
-rw-r--r--    1 0        0               0 Apr 17 04:22 file3
-rw-r--r--    1 0        0               0 Apr 17 04:22 file4
-rw-r--r--    1 0        0               0 Apr 17 04:22 file5
-rw-r--r--    1 0        0               0 Apr 17 04:22 file6
-rw-r--r--    1 0        0               0 Apr 17 04:22 file7
-rw-r--r--    1 0        0               0 Apr 17 04:22 file8
-rw-r--r--    1 0        0               0 Apr 17 04:22 file9
-rw-------    1 14       50            508 Apr 17 05:20 fs
-rw-------    1 14       50           1023 Apr 17 05:17 passwd

5、 mput批量上传

5.1、多文件上传

  • 上传多个文件,可以使用put和mput命令上传,多个文件之间用空格分隔,如果想使用通配符,只有mput命 令支持:
lftp 192.168.2.10:/pub> put /etc/group /etc/favicon.png 
1608 bytes transferred         
Total 2 files transferred
lftp 192.168.2.10:/pub> ls
drwx------    2 14       50              6 Apr 17 05:09 abc
-rw-------    1 14       50           1079 Apr 17 05:23 favicon.png
-rw-r--r--    1 0        0               0 Apr 17 04:22 file1
-rw-r--r--    1 0        0               0 Apr 17 04:22 file10
-rw-r--r--    1 0        0               0 Apr 17 04:22 file2
-rw-r--r--    1 0        0               0 Apr 17 04:22 file3
-rw-r--r--    1 0        0               0 Apr 17 04:22 file4
-rw-r--r--    1 0        0               0 Apr 17 04:22 file5
-rw-r--r--    1 0        0               0 Apr 17 04:22 file6
-rw-r--r--    1 0        0               0 Apr 17 04:22 file7
-rw-r--r--    1 0        0               0 Apr 17 04:22 file8
-rw-r--r--    1 0        0               0 Apr 17 04:22 file9
-rw-------    1 14       50            508 Apr 17 05:20 fs
-rw-------    1 14       50            529 Apr 17 05:23 group
-rw-------    1 14       50           1023 Apr 17 05:17 passwd
lftp 192.168.2.10:/pub> mput /etc/f*
1695 bytes transferred       
Total 4 files transferred
lftp 192.168.2.10:/pub> ls
drwx------    2 14       50              6 Apr 17 05:09 abc
-rw-------    1 14       50           1079 Apr 17 05:24 favicon.png
-rw-r--r--    1 0        0               0 Apr 17 04:22 file1
-rw-r--r--    1 0        0               0 Apr 17 04:22 file10
-rw-r--r--    1 0        0               0 Apr 17 04:22 file2
-rw-r--r--    1 0        0               0 Apr 17 04:22 file3
-rw-r--r--    1 0        0               0 Apr 17 04:22 file4
-rw-r--r--    1 0        0               0 Apr 17 04:22 file5
-rw-r--r--    1 0        0               0 Apr 17 04:22 file6
-rw-r--r--    1 0        0               0 Apr 17 04:22 file7
-rw-r--r--    1 0        0               0 Apr 17 04:22 file8
-rw-r--r--    1 0        0               0 Apr 17 04:22 file9
-rw-------    1 14       50             70 Apr 17 05:24 filesystems
-rw-------    1 14       50            508 Apr 17 05:20 fs
-rw-------    1 14       50            508 Apr 17 05:24 fstab
-rw-------    1 14       50             38 Apr 17 05:24 fuse.conf
-rw-------    1 14       50            529 Apr 17 05:23 group
-rw-------    1 14       50           1023 Apr 17 05:17 passwd

6、下载目录

lftp 192.168.2.10:/pub> mirror abc
Total: 1 directory, 0 files, 0 symlinks

7、删除目录

lftp 192.168.2.10:/pub> rmdir abc
rmdir ok, `abc' removed

8、本地用户访问

注意:如果使用本地用户访问,需要服务端有对应的用户存在才行。

  • 服务端设置用户名及密码:
[root@bogon pub]# useradd sxy
[root@bogon pub]# echo "123" | passwd  --stdin sxy
更改用户 sxy 的密码 。
passwd:所有的身份验证令牌已经成功更新。

8.1、修改配置文件,可以设置不让匿名用户登录,只能本地用户登录:

vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
  • 重启服务再次访问
systemctl  restart vsftpd
[root@www ~]# [root@bogon ~]# lftp 192.168.2.10
lftp 192.168.2.10:~> ls
`ls' at 0 [Sending commands...] 
上面这个登录,表示匿名用户已经无法登录了。
[root@bogon ~]# lftp sxy:123@192.168.2.10
lftp sxy@192.168.2.10:~> ls 
然后用本地用户登录,就ok了。

上传和下载和匿名用户一样的使用方法。

8.2、 限制系统用户越狱:

  • 在安装vsftpd后不做配置的话,系统用户是可以向上切换到其他目录的。在配置文件中,添加如下选项
vim /etc/vsftpd/vsftpd.conf
chroot_local_user=YES 
chroot_list_enable=NO
 allow_writeable_chroot=YES
chroot_local_user: 是否将所有用户限制在主目录,YES为启用,NO禁用.(该项默认值是NO) 
chroot_list_enable: 是否启动限制用户(特例)的名单 YES为启用,NO禁用(包括注释掉也为禁 用)
  • 综合理解:
chroot_local_user=YESchroot_local_user=NO
chroot_list_enable=YES1、所有用户都被限制在其主目 录下; 2、使用chroot_list指定的用户 列表, 这些用户为“例外“,不受限制。1、所有用户不被限制其主目录 下; 2、使用chroot_list指定得用户 列表, 这些用户作为“例外”,受到限 制。
chroot_list_enable=NO1、所有用户都被限制在其主目 录下; 2、不使用chroot_list指定的用 户列表, 没有任何“例外“。1、所有用户都不被限制在其主 目录下; 2、不使用chroot_list指定的用 户列表, 没有任何“例外“。
  • 如果想全部限制,所有用户都不能切换家目录,就可以像上面的配置:
    chroot_local_user=YES
    chroot_list_enable=NO
    allow_writeable_chroot=YES
  • 如果想让部分用户有切换的家目录的权限,则需要开启限制:
    chroot_local_user=YES
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd/chroot_list
    chroot_list中写上要放行用户
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值