当前位置:首页 » 《资源分享》 » 正文

在Linux中搭建FTP

5 人参与  2024年12月11日 14:01  分类 : 《资源分享》  评论

点击全文阅读


安装vsftpd

1、安装vsftpd

sudo yum install -y vsftpd

2、运行以下命令,启动FTP服务,并设置开机自启动。

sudo systemctl start vsftpdsudo systemctl enable vsftpd

3、运行以下命令,查看FTP服务监听的端口。

sudo netstat -antup | grep ftp

出现如下图所示界面,表示FTP服务已启动,监听的端口号为21。

此时,vsftpd默认已开启匿名访问功能,无需输入用户名密码即可登录FTP服务器,但没有修改或上传文件的权限。

配置vsftpd

1、创建一个Linux用户并设置密码。

2、运行以下命令,为FTP服务创建一个Linux用户。

本示例中,该用户名为 ftptest

sudo adduser ftptest

运行以下命令,修改 ftptest 用户的密码。

sudo passwd ftptest

运行命令后,根据命令行提示完成FTP用户的密码修改。

3、运行以下命令,创建一个供FTP服务使用的文件目录。

sudo mkdir -p /var/ftp/test

4、运行以下命令,创建测试文件。

该测试文件用于FTP客户端访问FTP服务器时使用。

sudo touch /var/ftp/test/testfile.txt

5、运行以下命令,更改 /var/ftp/test 目录的拥有者为 ftptest

sudo chown -R ftptest:ftptest /var/ftp/test

6、修改 vsftpd.conf 配置文件。

运行以下命令,打开vsftpd的配置文件。
sudo vim /etc/vsftpd/vsftpd.conf
i 进入编辑模式。配置FTP服务器工作模式。

FTP服务器支持以下两种工作模式:

主动模式(Active Mode):客户端向FTP服务器发送端口信息,由服务器主动连接该端口。

被动模式(Passive Mode):FTP服务器开启并发送端口信息给客户端,由客户端连接该端口,服务器被动接受连接。

本文介绍配置FTP服务器为被动模式。具体的配置参数说明如下,除下面提及的参数,其他参数保持默认值即可。

修改下列参数的值:

#禁止匿名登录FTP服务器。anonymous_enable=NO#允许本地用户登录FTP服务器。local_enable=YES#监听IPv4 sockets。listen=YES

在行首添加#注释掉以下参数,关闭监听IPv6 sockets:

#listen_ipv6=YES

在配置文件的末尾添加下列参数,其中 pasv_address 需修改为FTP服务器的公网IP地址。

#设置本地用户登录后所在目录。local_root=/var/ftp/test#全部用户被限制在主目录。chroot_local_user=YES#启用例外用户名单。chroot_list_enable=YES#指定例外用户列表文件,列表中用户不被锁定在主目录。chroot_list_file=/etc/vsftpd/chroot_list#开启被动模式。pasv_enable=YESallow_writeable_chroot=YES#本教程中为Linux实例的公网IP。pasv_address=FTP服务器公网IP地址#设置被动模式下,建立数据传输可使用的端口范围的最小值。#建议您把端口范围设置在一段比较高的范围内,例如50000~50010,有助于提高访问FTP服务器的安全性。pasv_min_port=50000#设置被动模式下,建立数据传输可使用的端口范围的最大值。pasv_max_port=50010

Esc 键,输入 :wq ,按 Enter 键关闭并保存配置文件。

6、创建 chroot_list 文件,并在文件中写入例外用户名单。

运行以下命令,创建 chroot_list 文件。

Alibaba Cloud Linux/CentOS 7.x/CentOS 8.x

sudo vim /etc/vsftpd/chroot_list

i 进入编辑模式。

输入例外用户名单。此名单中的用户不会被锁定在主目录,可以访问其他目录。

重要

没有例外用户时,也必须创建chroot_list文件,内容可为空。

Esc 键,输入 :wq ,按 Enter 键关闭并保存配置文件。

7、运行以下命令,重启vsftpd服务。

sudo systemctl restart vsftpd

测试搭建的FTP服务器

FTP客户端、Windows命令行工具或浏览器均可用来测试FTP服务器。本文以Windows 系统的本地主机作为FTP客户端,介绍FTP服务器的访问步骤。

1、在本地主机,打开 这台电脑

2、在地址栏中输入 ftp://<FTP服务器公网IP地址>:<FTP端口> ,本文中为Linux实例的公网IP地址。例如:ftp://IP:21  。

3、在弹出的 登录身份 对话框中,输入已设置的FTP用户名和密码,然后单击 登录

登录后,您可以查看到FTP服务器指定目录下的文件,例如:测试文件 testfile.txt 。

设置权限

为了实现 FTP 用户只能删除自己上传的文件,而只能读取或下载其他人上传的文件但不能删除,你可以通过以下方法进行配置。这个设置会涉及到用户权限的管理,以及利用 Linux 文件系统的权限机制来实现。

假设你正在使用 vsftpd 作为 FTP 服务器,以下是实现此功能的步骤:

创建一个公共的上传目录

首先,为所有 FTP 用户创建一个共享的上传目录。假设该目录为 /srv/ftp/shared,你可以执行以下命令:

sudo mkdir -p /srv/ftp/sharedsudo chown root:ftpusers /srv/ftp/sharedsudo chmod 1777 /srv/ftp/shared

解释:

chmod 1777:这里的 1 是**粘滞位(sticky bit)**,它确保了用户只能删除自己拥有的文件,而不能删除其他用户的文件。其他部分 777 表示所有用户对该目录具有读写执行权限。

chown root:ftpusers:将目录的所属组设置为 ftpusers,并将目录所有者设为 root

创建 FTP 用户组

创建一个专门用于 FTP 用户的用户组:

sudo groupadd ftpusers

然后,将所有允许上传文件的用户添加到该组:

sudo usermod -aG ftpusers ftpuser1sudo usermod -aG ftpusers ftpuser2

你可以将所有需要上传文件的用户都添加到 ftpusers 组。

设置 vsftpd 配置文件

编辑 vsftpd 的配置文件 /etc/vsftpd/vsftpd.conf,添加或确保以下配置:

local_enable=YESwrite_enable=YESfile_open_mode=0777local_umask=0002

local_enable=YES:允许本地用户登录。

write_enable=YES:允许用户具有写入权限。

file_open_mode=0777local_umask=0002:这些选项确保文件的默认权限为 775,即创建的文件对其他用户可读写,但只允许文件的所有者删除它。

检查并设置目录权限

为确保文件的粘滞位和目录权限正确,使用以下命令确保上传目录及其子目录继承正确的权限:

sudo chmod +t /srv/ftp/shared

这将为目录设置粘滞位,确保用户只能删除自己上传的文件,而不能删除其他用户的文件。

重启 FTP 服务

完成以上配置后,重启 vsftpd 服务以应用更改:

sudo systemctl restart vsftpd

测试

用户上传文件:所有用户都可以上传文件到 /srv/ftp/shared 目录。

文件权限:每个用户只能删除自己上传的文件。其他用户可以读取或下载文件,但不能删除他们没有上传的文件。

总结

通过以上设置:

用户只能删除自己上传的文件,这通过粘滞位(sticky bit)实现。

用户可以读取和下载其他用户上传的文件,但不能删除它们


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/199605.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1