ftp服务详解

介绍

FTP服务器可以在局域网中快速传输文件,是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。 FTP是File Transfer Protocol(文件传输协议)。顾名思义,就是专门用来传输文件的协议。简单地说,支持FTP协议的服务器就是FTP服务器。

安装

服务端:

yum install -y vsftpd

客户端:

yum install -y ftp lftp

配置ftp服务

cat /etc/vsftpd/vsftpd.conf
# 是否开启匿名用户,匿名都不安全,设置为NO
anonymous_enable=NO

# 打开主动模式
port_enable=YES
# 启动被动式联机(passivemode)
pasv_enable=YES

# 允许本机账号登录FTP,这个设定值必须要为YES时,在/etc/passwd内的账号才能以实体用户的方式登入我们的vsftpd主机
local_enable=YES
# 允许账号都有写操作
write_enable=YES

# 本地用户创建文件或目录的掩码,意思是指:文件目录权限:777-022=755,文件权限:666-022=644
local_umask=022

# 进入某个目录的时候,是否在客户端提示一下
dirmessage_enable=YES

# 当设定为YES时,使用者上传与下载日志都会被记录起来
xferlog_enable=YES
# 设置日志std格式
xferlog_std_format=YES
# 上传与下载日志存放路径
xferlog_file=/var/log/ftp_xferlog

# 开放port模式的20端口的连接
connect_from_port_20=YES
# 默认端口21
# listen_port=21
# 监听ipv4端口,开了这个就说明vsftpd可以独立运行,不用依赖其他服务,这里设置为NO
listen=NO
# 监听ipv6端口
listen_ipv6=YES
# 被动模式起始端口,0为随机分配
pasv_min_port=64000
# 被动模式结束端口,0为随机分配
pasv_max_port=65000

# 禁止client使用ASCII格式上传/下载档案,如果设置为YES,可能会导致DoS的攻击
ascii_upload_enable=NO
ascii_download_enable=NO

# 通过搭配能实现以下几种效果:
# ①当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd/chroot_list文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录
# ②当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd/chroot_list文件中列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录
# ③当chroot_list_enable=NO,chroot_local_user=YES时,所有的用户均不能切换到其他目录
# ④当chroot_list_enable=NO,chroot_local_user=NO时,所有的用户均可以切换到其他目录
chroot_list_enable=YES
chroot_local_user=YES
chroot_list_file=/etc/vsftpd/chroot_list

# 当启用了 chroot_local_user=YES时,vsftpd 默认要求用户的主目录不能有写权限,如果设置 allow_writeable_chroot=YES:则允许被限制的用户主目录拥有写权限
allow_writeable_chroot=YES

# 当 userlist_enable=YES 与 userlist_deny=NO 组合时:
# /etc/vsftpd/user_list 成为严格的白名单:只有该文件中明确列出的用户,才被允许登录 FTP 服务器。
# 未在 user_list 中出现的用户:无论其他条件(如密码是否正确)如何,都会被直接拒绝登录。
# /etc/vsftpd/ftpusers 仍保持强黑名单特性:即使某个用户在 user_list 白名单中,但只要同时出现在 ftpusers 中,依然会被禁止登录(ftpusers 的优先级更高)。
userlist_enable=YES
userlist_deny=NO


# Tcp wrappers : Transmission Control Protocol (TCP) Wrappers 为由 inetd 生成的服务提供了增强的安全性
tcp_wrappers=YES

# FTP访问目录
local_root=/data/ftp

# pam模块的名称,我们放置在/etc/pam.d/vsftpd,认证用
pam_service_name=vsftpd

根据上述配置文件配置完之后,实现:

  1. 允许登录的用户写入到/etc/vsftpd/user_list文件中,其他的禁止。
  2. 所有用户都被限制到/data/ftp目录,不能访问/data/ftp目录以外的目录,想要不受限制,可以把用户加入到/etc/vsftpd/chroot_list文件中。

创建用户:

useradd zfh -g ftp 
useradd zsa -g ftp 
passwd zfh
passwd zsa

# 将创建的用户添加到/etc/vsftpd/user_list文件中
tail -n /etc/vsftpd/user_list
zfh
zsa

创建目录文件与赋予权限:

mkdir -p /data/ftp
touch /etc/vsftpd/chroot_list

chown root:ftp /data/ftp
chmod -R 775 /data/ftp

启动ftp服务:

systemctl restart vsftpd.service
systemctl status vsftpd.service
systemctl enable vsftpd.service

搭建完成,之后测试是否正常即可。

注意

如果想要实现多个用户限制在不同的目录下作业,把local_root选项注释,登录时就会进入各个对应用户的家目录。

posted @ 2025-08-11 20:25  阿峰博客站  阅读(13)  评论(0)    收藏  举报