前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vsftpd超实用技巧详解(一)-服务器搭建及基本使用

vsftpd超实用技巧详解(一)-服务器搭建及基本使用

原创
作者头像
用户8639654
修改2021-08-17 18:17:47
8380
修改2021-08-17 18:17:47
举报
文章被收录于专栏:云计算运维

简介

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

工作原理:

vsftpd使用ftp协议,该协议属于应用层协议。它是典型的c/s架构,ftp服务端用来存储文件,ftp客户端可以通过ftp协议连接服务端实现上传和下载资源。

ftp使用tcp的21端口进行命令传输,然后用tcp 的20端口进行数据传输(主动模式)。

安装部署:

代码语言:javascript
复制
yum install vsftpd  ftp lftp -y

vsftpd: 为服务端软件
ftp、lftp: 为客户端工具,推荐使用lftp

启动服务:

代码语言:javascript
复制
systemctl  start vsftpd

匿名用户登录访问:

用ftp客户端匿名登录需要输入用户名密码验证,匿名用户名为:ftp或者anonymous,密码为空。

用lftp客户端匿名登录则不需要输入以上信息。

代码语言:javascript
复制
ftp客户端连接:

[root@www ~]# ftp 192.168.0.103
Connected to 192.168.0.103 (192.168.0.103).
220 (vsFTPd 3.0.2)
Name (192.168.0.103:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
lftp客户端连接:

[root@www ~]# lftp 192.168.0.103
lftp 192.168.0.103:~>

这里我们重点讲lftp使用方法,ftp客户端工具使用方法大致相同。

下载命令:

get用于下载单个文件:

代码语言:javascript
复制
可以先切换到**本地指定目录**(data)进行文件的下载,保存:

lftp 192.168.0.103:/> lcd /data/
lcd 成功, 本地目录=/data
lftp 192.168.0.103:/> get file003.txt

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

mget用于批量下载:

代码语言:javascript
复制
lftp 192.168.0.103:/> mget file00*
Total 7 files transferred

默认配置只能进行文件的读取和下载,不能进行写入和上传文件:

代码语言:javascript
复制
lftp 192.168.0.103:~> put /etc/fstab 
put: Access failed: 550 Permission denied. (fstab)
lftp 192.168.0.103:/> mkdir abc
mkdir: Access failed: 550 Permission denied. (abc)

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

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

代码语言:javascript
复制
#开启上传权限
anon_upload_enable=YES
#开启创建文件权限
anon_mkdir_write_enable=YES
#开启重命名,删除权限
anon_other_write_enable=YES

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

代码语言:javascript
复制
lftp 192.168.0.103:/> mkdir abc
mkdir: Access failed: 550 Create directory operation failed. (abc)

这是因为目录没有写权限,给pub目录授权,如下:

代码语言:javascript
复制
[root@localhost ~]# chmod o+w /var/ftp/pub/
[root@localhost ~]# ll /var/ftp/pub/ -d
drwxr-xrwx 3 root root 192 8月   7 08:37 /var/ftp/pub/

再次进入,创建目录,如下:

代码语言:javascript
复制
lftp 192.168.0.103:/pub> mkdir abc
mkdir 成功, 建立 `abc'

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

上传命令:

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

代码语言:javascript
复制
语法:put [OPTS] <lfile> [-o <rfile>]

一、直接上传不改名,可以省去-o refile,如果不知道本地目录有哪些文件,可以使用!dir查看,如下:

lftp 192.168.0.103:/pub> !dir
anaconda-ks.cfg  favicon.png
lftp 192.168.0.103:/pub> put /etc/fstab 
501 bytes transferred

上面这个例子中,我们将本地文件fstab上传到了匿名用户的pub目录中。

代码语言:javascript
复制
二、上传文件之后,想改名,就要带-o refile了,如下

lftp 192.168.0.103:/pub> put /etc/fstab -o fs
501 bytes transferred
lftp 192.168.0.103:/pub> ls
drwx------    2 14       50              6 Aug 08 06:27 abc
-rw-------    1 14       50            501 Aug 08 06:34 fs
-rw-------    1 14       50            501 Aug 08 06:34 fstab

上面这个例子中, 我们将本地文件fstab上传到了匿名用户的pub目录并修改了文件名。
三、多文件上传

上传多个文件,可以使用put和mput命令上传,多个文件之间用空格分隔,如果想使用通配符,只有mput命令支持:

lftp 192.168.0.103:/pub> put /etc/fstab /etc/favicon.png 
1580 bytes transferred
Total 2 files transferred
lftp 192.168.0.103:/pub> ls
drwx------    2 14       50              6 Aug 08 06:27 abc
-rw-------    1 14       50           1079 Aug 08 06:40 favicon.png
-rw-------    1 14       50            501 Aug 08 06:40 fstab

lftp 192.168.0.103:/pub> mput /etc/f*
1688 bytes transferred         
Total 4 files transferred
lftp 192.168.0.103:/pub> ls
drwx------    2 14       50              6 Aug 08 06:27 abc
-rw-------    1 14       50           1079 Aug 08 06:41 favicon.png
-rw-------    1 14       50             70 Aug 08 06:41 filesystems
-rw-------    1 14       50            501 Aug 08 06:41 fstab
-rw-------    1 14       50             38 Aug 08 06:41 fuse.conf

本地用户登录访问:

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

代码语言:javascript
复制
服务端设置用户名及密码:

[root@localhost ~]# id lutixia
uid=1000(lutixia) gid=1000(lutixia) 组=1000(lutixia)
[root@localhost ~]# echo "lutixia" |passwd --stdin lutixia
更改用户 lutixia 的密码 。
passwd:所有的身份验证令牌已经成功更新。

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

代码语言:javascript
复制
vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO
local_enable=YES

重启服务。然后再次访问:

代码语言:javascript
复制
systemctl  restart vsftpd

[root@www ~]# lftp 192.168.0.103
lftp 192.168.0.103:~> ls
`ls' at 0 [正在发送命令...]

上面这个登录,表示匿名用户已经无法登录了。

[root@www ~]# lftp lutixia:lutixia@192.168.0.103
lftp lutixia@192.168.0.103:~> ls
lftp lutixia@192.168.0.103:~> 

然后用本地用户登录,就ok了。

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

故障解决:

如果重启时,报错如下:

代码语言:javascript
复制
[root@localhost ~]# systemctl restart vsftpd
Job for vsftpd.service failed because the control process exited with error code. See "systemctl status vsftpd.service" and "journalctl -xe" for details.

[root@localhost ~]# journalctl -xe
-- Unit vsftpd.service has begun starting up.
8月 08 02:59:14 localhost.localdomain vsftpd[12751]: 500 OOPS: bad bool value in config file for: anonymous_en
8月 08 02:59:14 localhost.localdomain systemd[1]: vsftpd.service: control process exited, code=exited status=2

解决办法:这种问题一般就是空格导致的,是每一行配置后面都不能有空格,也不能跟注释。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 工作原理:
  • 安装部署:
  • 启动服务:
  • 匿名用户登录访问:
  • 下载命令:
  • get用于下载单个文件:
  • mget用于批量下载:
  • 上传命令:
  • 本地用户登录访问:
  • 故障解决:
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档