在Linux中搭建FTP

打印 上一主题 下一主题

主题 825|帖子 825|积分 2475

安装vsftpd

1、安装vsftpd
  1. sudo yum install -y vsftpd
复制代码

2、运行以下命令,启动FTP服务,并设置开机自启动。
  1. sudo systemctl start vsftpd
  2. sudo systemctl enable vsftpd
复制代码

3、运行以下命令,检察FTP服务监听的端口。
  1. sudo netstat -antup | grep ftp
复制代码
出现如下图所示界面,表示FTP服务已启动,监听的端标语为21。
此时,vsftpd默认已开启匿名访问功能,无需输入用户名密码即可登录FTP服务器,但没有修改或上传文件的权限。

设置vsftpd

1、创建一个Linux用户并设置密码。
2、运行以下命令,为FTP服务创建一个Linux用户。
本示例中,该用户名为 ftptest
  1. sudo adduser ftptest
复制代码
运行以下命令,修改 ftptest 用户的密码。
  1. sudo passwd ftptest
复制代码
运行命令后,根据命令行提示完成FTP用户的密码修改。

3、运行以下命令,创建一个供FTP服务使用的文件目录。
  1. sudo mkdir -p /var/ftp/test
复制代码

4、运行以下命令,创建测试文件。
该测试文件用于FTP客户端访问FTP服务器时使用。
  1. sudo touch /var/ftp/test/testfile.txt
复制代码

5、运行以下命令,更改 /var/ftp/test 目录的拥有者为 ftptest 。
  1. sudo chown -R ftptest:ftptest /var/ftp/test
复制代码

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


  • 运行以下命令,打开vsftpd的设置文件。
  1. sudo vim /etc/vsftpd/vsftpd.conf
复制代码


  • 按 i 进入编辑模式。
  • 设置FTP服务器工作模式。
   FTP服务器支持以下两种工作模式:
  

  • 主动模式(Active Mode):客户端向FTP服务器发送端口信息,由服务器主动毗连该端口。
  • 被动模式(Passive Mode):FTP服务器开启并发送端口信息给客户端,由客户端毗连该端口,服务器被动担当毗连。
  本文先容设置FTP服务器为被动模式。具体的设置参数说明如下,除下面提及的参数,其他参数保持默认值即可。
修改下列参数的值:
  1. #禁止匿名登录FTP服务器。
  2. anonymous_enable=NO
  3. #允许本地用户登录FTP服务器。
  4. local_enable=YES
  5. #监听IPv4 sockets。
  6. listen=YES
复制代码


在行首添加#解释掉以下参数,关闭监听IPv6 sockets:
  1. #listen_ipv6=YES
复制代码

在设置文件的末尾添加下列参数,其中 pasv_address 需修改为FTP服务器的公网IP所在。
  1. #设置本地用户登录后所在目录。
  2. local_root=/var/ftp/test
  3. #全部用户被限制在主目录。
  4. chroot_local_user=YES
  5. #启用例外用户名单。
  6. chroot_list_enable=YES
  7. #指定例外用户列表文件,列表中用户不被锁定在主目录。
  8. chroot_list_file=/etc/vsftpd/chroot_list
  9. #开启被动模式。
  10. pasv_enable=YES
  11. allow_writeable_chroot=YES
  12. #本教程中为Linux实例的公网IP。
  13. pasv_address=FTP服务器公网IP地址
  14. #设置被动模式下,建立数据传输可使用的端口范围的最小值。
  15. #建议您把端口范围设置在一段比较高的范围内,例如50000~50010,有助于提高访问FTP服务器的安全性。
  16. pasv_min_port=50000
  17. #设置被动模式下,建立数据传输可使用的端口范围的最大值。
  18. pasv_max_port=50010
复制代码


  • 按 Esc 键,输入 :wq ,按 Enter 键关闭并保存设置文件。
6、创建 chroot_list 文件,并在文件中写入例外用户名单。


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

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

  1. sudo vim /etc/vsftpd/chroot_list
复制代码



  • 按 i 进入编辑模式。
  • 输入例外用户名单。此名单中的用户不会被锁定在主目录,可以访问其他目录。
   紧张
  没有例外用户时,也必须创建chroot_list文件,内容可为空。
  

  • 按 Esc 键,输入 :wq ,按 Enter 键关闭并保存设置文件。
7、运行以下命令,重启vsftpd服务。
  1. 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,你可以执行以下命令:
  1. sudo mkdir -p /srv/ftp/shared
  2. sudo chown root:ftpusers /srv/ftp/shared
  3. sudo chmod 1777 /srv/ftp/shared
复制代码
解释:


  • chmod 1777:这里的 1 是**粘滞位(sticky bit)**,它确保了用户只能删除本身拥有的文件,而不能删除其他用户的文件。其他部门 777 表示所有用户对该目录具有读写执行权限。
  • chown root:ftpusers:将目录的所属组设置为 ftpusers,并将目录所有者设为 root。
创建 FTP 用户组

创建一个专门用于 FTP 用户的用户组:
  1. sudo groupadd ftpusers
复制代码
然后,将所有允许上传文件的用户添加到该组:
  1. sudo usermod -aG ftpusers ftpuser1
  2. sudo usermod -aG ftpusers ftpuser2
复制代码
你可以将所有必要上传文件的用户都添加到 ftpusers 组。
设置 vsftpd 设置文件

编辑 vsftpd 的设置文件 /etc/vsftpd/vsftpd.conf,添加或确保以下设置:
  1. local_enable=YES
  2. write_enable=YES
  3. file_open_mode=0777
  4. local_umask=0002
复制代码


  • local_enable=YES:允许当地用户登录。
  • write_enable=YES:允许用户具有写入权限。
  • file_open_mode=0777 和 local_umask=0002:这些选项确保文件的默认权限为 775,即创建的文件对其他用户可读写,但只允许文件的所有者删除它。
检查并设置目录权限

为确保文件的粘滞位和目录权限正确,使用以下命令确保上传目录及其子目录继承正确的权限:
  1. sudo chmod +t /srv/ftp/shared
复制代码
这将为目录设置粘滞位,确保用户只能删除本身上传的文件,而不能删除其他用户的文件。
重启 FTP 服务

完成以上设置后,重启 vsftpd 服务以应用更改:
  1. sudo systemctl restart vsftpd
复制代码
测试


  • 用户上传文件:所有用户都可以上传文件到 /srv/ftp/shared 目录。
  • 文件权限:每个用户只能删除本身上传的文件。其他用户可以读取或下载文件,但不能删除他们没有上传的文件。
   总结

  通过以上设置:
  

  • 用户只能删除本身上传的文件,这通过粘滞位(sticky bit)实现。
  • 用户可以读取和下载其他用户上传的文件,但不能删除它们

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

惊雷无声

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表