RHEL 平台基于 vsftpd 服务搭建 FTP 服务

RHEL 平台基于 vsftpd 服务搭建 FTP 服务

本文参考刘遄老师的 Linux 就该这么学撰写.

FTP

  • FTP: File Transfer Protocol, 文件传输协议
  • FTP使用:
    • 20 端口: 数据端口
    • 21 端口: 命令端口
  • 两种工作模式:
    • 主动模式: FTP 服务器主动向客户端发起连接请求
    • 被动模式: FTP 服务器等待客户端发起连接请求 (FTP 的默认工作模式)
  • vsftpd (very secure FTP daemon, 非常安全的 FTP 守护进程), Linux 的 FTP 程序.

配置 vsftpd 服务

关闭防火墙

iptables -F
service iptables save

安装 vsftpd

在 RHEL 或 CentOS 中, 使用 yum 直接安装:

yum install -y vsftpd

vsftpd 有三种认证模式:

  • 匿名开放模式: 可以通过匿名用户(anonymous) 登录到 FTP 服务器.
  • 本地用户模式: 通过 Linux 系统本地账户密码进行认证.
  • 虚拟用户模式: 为 FTP 服务单独建立用户数据库文件, 虚拟出用户进行认证, 这些用户并不是服务器用户.

安装 ftp

ftp 是一个简单的 ftp 客户端, 使用 yum 安装他:

yum install -y ftp 

匿名开放模式

匿名开放模式的方式最简单, 可以适用于简单的使用场景, 可以使用防火墙来提供基本的安全.

参数 作用
anonymous_enable=YES 允许匿名访问模式
anon_umask=022 匿名用户上传文件的 umask 值
anon_upload_enable=YES 允许匿名用户上传文件
anon_mkdir_write_enable=YES 允许匿名用户创建目录
anon_other_write_enable=YES 允许匿名用户修改目录名称或删除目录

允许匿名用户修改目录名称或删除目录是很危险的权限.

修改完配置文件后, 需要重启 vsftpd 服务:

systemctl restart vsftpd

无法上传文件?

我们可以使用 ftp 命令登录 ftp 服务器, 可以成功登录:

image-20181024101330239

在开启了上面的参数后, 我们应当能够创建创建文件, 我们可以尝试一下 mkdir a

image-20181024101422486

但是却失败了, 我们想一下可能是什么原因:

  1. 文件夹的权限问题
  2. SELinux 的防护
文件夹权限问题

我们先查看一下文件夹的权限:

image-20181024101606491

/var/ftp 路径下, 有一个 pub 文件夹, 我们看到它是属于 root 的, 而且其他人只有 rx 权限.

我们修改一下所属用户:

chown -R ftp pub
image-20181024101733063

这下我们登录进去之后再次尝试, 你会发现还是会碰到创建失败的问题.

可能还是 SELinux 的问题

如果你开启了 GUI, 可以看到 SELinux 报警:

image-20181024102217211

说明是 SELinux 的问题.

我们可以先查看一下 SELinux 关于 ftp 的 bool 值:

image-20181024101911104

我们可以看到这些 bool 值都是 off 的状态.

通过查阅资料, 需要 ftpd_full_access 设置为 yes 才行:

setsebool -P ftpd_full_access=off

这样就可以使用匿名用户上传文件了.

本地用户模式

参数 作用
anonymous_enable=NO 禁用匿名访问模式
local_enable=YES 允许本地用户模式
write_enable=YES 设置可写权限
local_umask=022 本地用户模式创建文件的 umask 值
userlist_enable=YES 启用 "禁止用户名单", 名单文件为 ftpusers 和 user_list
userlist_deny=YES 如果为 NO, 只允许 user_list 文件中的用户登录, 如果为 YES, 则禁止 user_list 文件中的用户登录

需要注意的是在 ftpusers 和 user_list 中的禁止用上列表.

注意 SELinux 的设置

虚拟用户模式

创建用户 FTP 认证的用户数据库文件

  1. 创建用户文件, 奇数行位用户名, 偶数行为密码.例如, 创建 /etc/vsftpd/vuser.list 文件, 中写入用户名和密码.
  2. 使用 db_load 创建加密文件: db_load -T -t hash -f vuser.list vuser.db
  3. 修改文件权限 chmod 600 vuser.db
  4. 删除明文文件.

创建用于映射虚拟用户的系统本地用户

useradd -d /var/ftproot -s /sbin/nologin virtual

创建名叫 virtual 的用户, shell 设置为 /sbin/nologin, home 设置为 /var/ftprooot.

创建 ftp 目录

mkdir /var/ftproot
chown -R virtual:virtual /var/ftproot/
chmod -R 755 /var/ftproot/

创建支持虚拟用户的 PAM 文件

vim /etc/pam.d/vsftpd.vu
# 写入:
auth required pam_userdb.so db=/etc/vsftpd/vuser 
account required pam_userdb.so db=/etc/vsftpd/vuser

注意, 写入时, 不写 .db 后缀

修改 vsftpd 配置文件

参数 作用
anonymous_enable=NO 禁用匿名模式
local_enable=YES 允许本地用户模式
guest_enable=YES 允许虚拟用户模式
guest_username=virtual 指定虚拟用户账户
pam_service_name=vsftpd.vu 指定 PAM 文件
allow_writeable_chroot=YES 允许对禁锢的FTP根目录执行写入操作, 而且不拒绝用户的登录请求

为不同用户设置不同的权限

  1. 创建文件夹, 保存权限文件 mkdir /etc/vsftpd/vuser_dir
  2. 为用户创建文件: touch zhangsan touch lisi
  3. 修改配置文件 (这里我试了一下, 按照上面的配置, 如果不写下面的话默认是有写入和创建目录权限的)
vim zhangsan
anon_upload_enable=YES
anon_mkdir_write_enable=YES 
anon_other_write_enable=YES

到此, 我们已经完成了通过虚拟用户的 FTP 服务器的搭建, 对于不同的用户, 我们有不同的权限, 我们用客户端使用 zhangsan 账户登录进去之后, 可以上传文件, 修改文件名, 删除文件等, 而使用 lisi 账户, 就无法修改文件名或删除文件.

我们推荐使用虚拟用户进行 FTP 服务的搭建, 因为这样的安全性更高.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容