搭建vsftd服务

本文详细介绍了如何在Linux上搭建vsftpd服务,包括安装、配置和使用过程。讲解了ftp的工作模式,重点阐述了主动模式和被动模式的区别,并提供了vsftpd的配置文件说明,如匿名用户设置、本地用户访问控制、端口配置等。此外,还展示了客户端如何使用ftp和lftp工具与服务器交互,包括上传、下载、删除文件及切换目录等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vsftd服务
作用:提供各主机之间文件共享服务,可以应用在互联网中,实现外地登陆服务器下载公司文件的功能,不区分客户端,在windows和linux中都可以使用

ftp 文件传输协议,简单来说,支持ftp协议的服务器就是ftp服务器

在ftp的使用中,用户经常遇到两个概念:
上传(upload)文件就是将文件从自己计算机中拷贝到远程主机上
下载(download)文件就是从远程主机上拷贝文件到自己的计算机上

ftp的工作模式分为2类:
1.主动模式
2.被动模式

两种工作模式的参考对象为服务端

特殊使用2个端口
ftp 21连接 20数据

主动
C(1025)连接端口-----------连接通道----------->21 连接端口 S
一直在线
预先开启1026(数据端口)

S 20 数据端口 ----------------数据通道------------>1026 C
按需打开关闭

客户端使用大于1024端口(1025)连接服务器的21号端口,并且会事先开启一个大于1024端口让服务器来连接,服务器得知客户端准备的端口后,用20号端口与客户端连接,创建数据链路时服务端处于主动连接客户端的状态固称为主动传输模式

被动
C(1025)连接端口-----------连接通道----------->21 连接端口 S
预先开启1028(数据端口)
一直在线

C 1026 数据端口----------------数据通道---------->1028 数据端口 S

客户端使用大于1024端口(1025)连接服务器的21号端口,服务器接到请求后,开启一个大于1024端口(1028)等待客户端来连接,通知客户端这个等待连接的端口是1028,客户端接到服务器的信息后,开启一个新的端口(1026)与1028进行连接,创建数据链路时服务端处于被动连接客户端的状态固称为被动传输模式

ftp的服务端
vsftpd

ftp客户端软件
lftp
ftp

三类用户
本地用户:服务器上存在的用户
匿名用户:匿名用户实际上有一个与之对应的系统用户 ftp这个用户默认是匿名用户所对应的用户 匿名用户映射为ftp用户
虚拟用户

确保已完成以下工作:
1.已关闭防火墙
2.已关闭selinux
3.已关闭NetworkManager
4.已配置固定的ip地址
5.yum配置好

环境:
服务器 ip:192.168.1.252 主机名:server.uplooking.com
客户端 ip:192.168.1.251 主机名:client.uplooking.com

1.查看软件包是否安装
[root@server mnt]# rpm -qa | grep vsftp

2.安装软件包
[root@server mnt]# yum install vsftpd -y

查看软件安装产生的文件
[root@server mnt]# rpm -ql vsftpd
/etc/logrotate.d/vsftpd 日志切割
/etc/pam.d/vsftpd pam认证
/etc/rc.d/init.d/vsftpd 启动脚本
/etc/vsftpd 配置文件目录
/etc/vsftpd/ftpusers 访问控制
/etc/vsftpd/user_list 访问控制
/etc/vsftpd/vsftpd.conf 主配置文件
/usr/sbin/vsftpd 守护进程
/var/ftp 匿名用户的家目录
/var/ftp/pub 默认上传下载的目录

3.启动服务
[root@server mnt]# /etc/init.d/vsftpd restart

4.查看服务是否被监听
[root@server mnt]# netstat -tulnp | grep vsftpd
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 3943/vsftpd

提供可以下载的文件
[root@server mnt]# cd /var/ftp/pub/
[root@server pub]# echo “welcome to ftp” >> ftp.txt
[root@server pub]# cat ftp.txt
welcome to ftp
[root@server pub]# echo 111222 > 1.txt
[root@server pub]# cat 1.txt
111222

配置文件说明
vim /etc/vsftpd/vsftpd.conf

-----------------匿名用户----------------------------
允许匿名用户访问ftp
anonymous_enable=YES

匿名用户可以上传
anon_upload_enable=YES

匿名用户可以创建文件夹
anon_mkdir_write_enable=YES

支持匿名用户可以删除目录和文件(只可以删除空目录 rmdir test)
anon_other_write_enable=YES

匿名用户只可以下载可读的文件 想下载文件必须有读权限
anon_world_readable_only=YES

当匿名用户上传文件的时候可以改变其上传文件的拥有人
chown_uploads=YES
chown_username=root

匿名用户上传文件的umask
anon_umask=077 文件的权限600 目录的权限700

rwxrwxrwx rw-rw-rw-
—rwxrwx —rwxrwx


rwx------ 700 rw------- 600

-------------------------全局配置----------------------
进入目录的时候有消息提示
dirmessage_enable=YES
如果想切换远程目录的时候有消息提示需要在该目录下创建一个.message消息
例:vim /var/ftp/pub/.message
----welcome to ftp
-----please do not upload unknown file

日志设置
xferlog_enable=YES 启动日志
xferlog_file=/var/log/xferlog 设置日志存放的位置和文件名
xferlog_std_format=YES //启动,日志将会写成xferlog标准格式

主动模式端口
connect_from_port_20=YES

空间会话超时时间 连接后600秒无操作退出
idle_session_timeout=600

数据连接超时 限制下载过大的文件 下载文件的时间不能超过120秒
data_connection_timeout=120

修改默认的安全用户 之前的安全用户ftp
nopriv_user=ftpsecure

禁用异步传输
async_abor_enable=YES

定义登陆ftp的横幅
ftpd_banner=Welcome to blah FTP service.

不允许递归显示
ls_recurse_enable=YES

监听ipv4地址
listen=YES

-----------------------------------本地用户------------------------------------------
允许本地用户访问ftp
local_enable=YES

允许本地用户上传
write_enable=YES

本地用户上传文件的umask
local_umask=022

-----------限制用户切换路径------
所有人不能切换
chroot_local_user=YES 开启切换功能
chroot_list_enable=NO
chroot_list_file=/etc/vsftpd/chroot_list

黑名单
chroot_local_user=NO
chroot_list_enable=YES 开启列表功能
chroot_list_file=/etc/vsftpd/chroot_list 列表文件 在此文件中的用户禁锢

白名单
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list 列表文件 在此文件中的用户可以切换目录

[root@server pub]# vim /etc/vsftpd/chroot_list
jim

-----------------------------访问控制---------------------------------------------
1.支持pam认证
pam_service_name=vsftpd pam认证的名字

黑名单 在清单的用户不允许访问ftp服务
vim /etc/vsftpd/ftpusers
jim

所有在/etc/vsftpd/user_list文件内的用户不允许访问ftp
黑名单
userlist_enable=YES 是否启用文件控制
userlist_deny=YES 文件内的用户是否能访问ftp服务
/etc/vsftpd/user_list

所有在/etc/vsftpd/user_list文件内的用户允许访问ftp
白名单
userlist_enable=YES 是否启用文件控制
userlist_deny=NO 文件内的用户是否能访问ftp服务
/etc/vsftpd/user_list

vim /etc/vsftpd/user_list
jim

tcp_wrappers=YES 启用

可以使用tcp_wrappers做访问控制

ldd /usr/sbin/vsftpd | grep libwra

libwrap.so.0 => /lib64/libwrap.so.0 (0x00007fb74c5fb000)

/etc/hosts.deny 拒绝 主机名/ip地址/network/域名
vsftpd:192.168.1.5

/etc/hosts.allow 只允许

--------------------------用户限制 资源访问---------------------

max_clients=3 //限制并发客户端连接数 3个
Default: 2000
max_per_ip=2 //限制同一IP地址的并发连接数 2个
Default: 50
anon_max_rate=2000 //限制匿名用户最大传输速率,单位为字节 默认是0 无限制
Default: 0
local_max_rate=2000 //限制本地用户最大传输速率,单位为字节 默认是0 无限制
Default: 0
listen_address=192.168.1.252 //设置监听的ip地址

客户端使用
1.查看软件包是否安装
[root@client tmp]# rpm -qa | grep ftp

2.安装软件包

yum install ftp lftp -y

查看软件包产生的文件
[root@client tmp]# rpm -ql ftp
/usr/bin/ftp
[root@client tmp]# rpm -ql lftp
/etc/lftp.conf
/usr/bin/lftp

lftp 192.168.1.252
用法: lftp [OPTS]
[root@client tmp]# lftp 192.168.1.252
lftp 192.168.1.252:~> ?
! //本地命令
lcd //切换本地目录

ls [<args>]    //查看远程文件           
cd <rdir>   //切换远程目录
cat [-b] <files>   //查看远程文件内容    
more <files>     //查看远程文件内容    
exit [<code>|bg]   //退出
get [OPTS] <rfile> [-o <lfile]  下载
mget [OPTS] <files>   //批量下载
put [OPTS] <lfile> [-o <rfile>]      //上传   
mput [OPTS] <files>       //批量上传 

mirror [OPTS] [remote [local]]   //下载上传目录
mkdir [-p] <dirs>    //远程创建目录

pwd [-p]   //显示远程绝对路径
mv <file1> <file2>  //剪切远程文件
    
rm [-r] [-f] <files>   //删除远程文件
mrm <files>      //批量删除远程文件
rmdir [-f] <dirs>   //删除远程目录

lftp 192.168.1.252:/> ls
drwxr-xr-x 2 0 0 4096 Apr 17 15:38 pub
lftp 192.168.1.252:/> pwd
ftp://192.168.1.252/
lftp 192.168.1.252:/> cd pub/
lftp 192.168.1.252:/pub> ls
-rw-r–r-- 1 0 0 7 Apr 17 15:38 1.txt
-rw-r–r-- 1 0 0 15 Apr 17 15:37 ftp.txt
lftp 192.168.1.252:/pub> cat 1.txt
111222
7 bytes transferred
lftp 192.168.1.252:/pub> cat ftp.txt
welcome to ftp
15 bytes transferred
lftp 192.168.1.252:/pub> get ftp.txt //下载远程文件ftp.txt到本地当前工作目录
15 bytes transferred
lftp 192.168.1.252:/pub> exit
[root@client tmp]# ls
1.txt a.txt ftp.txt
[root@client tmp]# cat ftp.txt
welcome to ftp

下载文件的实现
[root@client tmp]# lftp 192.168.1.252
lftp 192.168.1.252:~> ls
drwxr-xr-x 2 0 0 4096 Apr 17 15:38 pub
lftp 192.168.1.252:/> cd pub/
lftp 192.168.1.252:/pub> ls
-rw-r–r-- 1 0 0 7 Apr 17 15:38 1.txt
-rw-r–r-- 1 0 0 15 Apr 17 15:37 ftp.txt
lftp 192.168.1.252:/pub> get 1.txt -o /mnt //下载远程文件1.txt到本地指定工作目录/opt
7 bytes transferred
lftp 192.168.1.252:/pub> exit
[root@client tmp]# cd /mnt
[root@client mnt]# ls
1.txt hgfs redhat
[root@client mnt]# cat 1.txt
111222

ftp使用:
[root@client Desktop]# ftp 192.168.1.252
Connected to 192.168.1.252 (192.168.1.252).
220 (vsFTPd 2.2.2)
Name (192.168.1.252:root): ftp //匿名用户登陆
331 Please specify the password.
Password: //直接回车匿名用户不输密码
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,1,252,77,71).
150 Here comes the directory listing.
drwxr-xrwx 3 0 0 4096 Apr 18 10:21 pub
226 Directory send OK.
ftp> ? //查看帮助
Commands may be abbreviated. Commands are:

! 本地操作
lcd 切换本地目录

mkdir 创建目录
bye 退出
exit 退出
get 下载
put 上传
cd 切换目录
ls 查看文件
rmdir 删除目录
delete 删除文件
ftp>

匿名用户使用
上传文件和创建目录的实现
服务端:
[root@server pub]# vim /etc/vsftpd/vsftpd.conf
anon_upload_enable=YES --匿名用户可以上传
anon_mkdir_write_enable=YES --匿名用户可以创建文件夹

[root@server pub]# /etc/init.d/vsftpd restart 重启服务

[root@server pub]# ll -d /var/ftp/pub/
drwxr-xr-x 2 root root 4096 4月 17 23:38 /var/ftp/pub/

[root@server pub]# chmod o+w /var/ftp/pub/ 修改权限

[root@server pub]# ll -d /var/ftp/pub/
drwxr-xrwx 2 root root 4096 4月 17 23:38 /var/ftp/pub/

客户端:
上传此文件
[root@client mnt]# echo “client test” >> clienttest.txt
[root@client mnt]# lftp 192.168.1.252
lftp 192.168.1.252:~> ls
drwxr-xrwx 2 0 0 4096 Apr 17 15:38 pub
lftp 192.168.1.252:/> cd pub/
lftp 192.168.1.252:/pub> ls
-rw-r–r-- 1 0 0 7 Apr 17 15:38 1.txt
-rw-r–r-- 1 0 0 15 Apr 17 15:37 ftp.txt
lftp 192.168.1.252:/pub> put clienttest.txt
12 bytes transferred
lftp 192.168.1.252:/pub> lcd /etc
lcd 成功, 本地目录=/etc
lftp 192.168.1.252:/pub> put passwd
1613 bytes transferred
lftp 192.168.1.252:/pub> put /etc/yum.repos.d/test.repo
529 bytes transferred
lftp 192.168.1.252:/pub> mkdir test1
mkdir 成功, 建立 `test1’

删除文件的实现
服务端:
[root@server pub]# vim /etc/vsftpd/vsftpd.conf
anon_other_write_enable=YES --支持匿名用户可以删除目录和文件

[root@server pub]# /etc/init.d/vsftpd restart 重启服务

客户端:
[root@client opt]# lftp 192.168.1.252
lftp 192.168.1.252:~> ls
drwxr-xrwx 5 0 0 4096 Apr 18 09:44 pub
lftp 192.168.1.252:/> cd pub/
lftp 192.168.1.252:/pub> ls
-rw-r–r-- 1 0 0 7 Apr 17 15:38 1.txt
-rw------- 1 14 50 0 Apr 18 09:42 client.txt
drwx------ 2 14 50 4096 Apr 18 09:44 client1
-rw------- 1 14 50 12 Apr 17 16:34 clienttest.txt
-rw-r–r-- 1 0 0 15 Apr 17 15:37 ftp.txt
-rwxrwxrwx 1 0 0 664 Apr 18 09:32 gshadow
-rw------- 1 14 50 1613 Apr 17 16:37 passwd
drwxr-xr-x 2 0 0 4096 Apr 18 09:32 server1
-rw------- 1 14 50 529 Apr 17 16:38 test.repo
drwx------ 2 14 50 4096 Apr 17 16:42 test1
lftp 192.168.1.252:/pub> rm client.txt
rm 成功, 删除 client.txt' lftp 192.168.1.252:/pub> rmdir test1/ rmdir 成功, 删除test1/’
lftp 192.168.1.252:/pub> rm -r client1
rm 成功, 删除 `client1’
lftp 192.168.1.252:/pub> exit

本地用户使用
普通用户不需要做什么设置,使用在服务器端的用户

服务器:
1.提供普通用户
useradd jim
useradd tom

2.为用户设置密码
passwd jim
passwd tom

客户端
用法: lftp [OPTS]
-u [,] 使用指定的用户名/口令进行验证

lftp -u jim,1 192.168.1.252
lftp jim@192.168.1.5:~>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值