当前位置: 首页 > news >正文

ubuntu 22.04 安装vsftpd服务

先决条件,确保你已经配置好了存储库。

  1. 安装vsftpd

    为了方便实验,我已经切换到了root用户。

    root@local:~# apt-get install vsftpd
    
  2. 修改配置
    配置文件在 /etc/vsftpd.conf

    root@local:~# grep -vE '^#|^$' /etc/vsftpd.conf
    listen=NO
    listen_ipv6=YES
    anonymous_enable=NO
    local_enable=YES
    write_enable=YES
    local_umask=022
    dirmessage_enable=YES
    use_localtime=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    chroot_list_enable=YES
    chroot_local_user=NO
    chroot_list_file=/etc/vsftpd.chroot_list
    secure_chroot_dir=/var/run/vsftpd/empty
    pam_service_name=vsftpd
    rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
    rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
    ssl_enable=NO
    pasv_enable=YES
    pasv_min_port=10000
    pasv_max_port=10100
    
    • listen=NO: 禁用 vsftpd 的独立监听模式,意思就是托管给与 xinetd 或其他服务管理器,设置为YES代表独立运行,但是如果设置为YES就不会监听端,即使设置了端口号也不会监听。
    • listen_ipv6=YES: 监听IPV6 地址
    • anonymous_enable=NO: 禁止匿名用户访问
    • local_enable=YES: 允许本地用户访问
    • write_enable=YES: 允许本地用户上传文件
    • local_umask=022: 设置文件默认权限,表示用户上传的文件将有 644 权限(755 对于目录)
    • dirmessage_enable=YES: 启用目录消息功能,如果设置为 YES,用户进入目录时会显示 .message 文件的内容,文件在家目录下默认不存在需要自己创建。
    • use_localtime=YES: 使用本地时间显示文件时间。
    • xferlog_enable=YES: 如果设置为 YES,FTP 会话的日志将被记录到 /var/log/xferlog 文件中。
    • connect_from_port_20=YES: 如果设置为 YES,FTP 会话将使用端口 20 进行数据传输。
    • chroot_list_enable=YES: 启用 chroot 列表功能。如果设置为 YES,vsftpd 将使用 /etc/vsftpd.chroot_list 文件来管理哪些用户被限制在自己的主目录中,如果设置为NO /etc/vsftpd.chroot_list 那么/etc/vsftpd.chroot_list 文件中的用户将不会被限制。
    • chroot_local_user=NO: 禁用对所有本地用户的 chroot 限制,如果设置为 NO,只有在 /etc/vsftpd.chroot_list 文件中列出的用户才会被限制在自己的主目录中。
    • chroot_list_file=/etc/vsftpd.chroot_list: vsftpd 将使用此文件来管理哪些用户被限制在自己的主目录中,此文件需要自己创建。
    • secure_chroot_dir=/var/run/vsftpd/empty: 指定安全的 chroot 目录,此目录用于确保 chroot 环境的安全性。
    • pam_service_name=vsftpd: 指定 PAM 服务名称,vsftpd 将使用此名称来查找 PAM 配置文件。
    • rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem: 指定 RSA 证书文件的路径,此文件用于 SSL/TLS 加密(公钥加密)
    • rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key: 指定 RSA 私钥文件的路径,此文件用于 SSL/TLS 加密(私钥解密)
    • ssl_enable=NO: 禁用 SSL/TLS 加密,如果设置为 NO,FTP 会话将不使用 SSL/TLS 加密.
    • pasv_enable=YES: 启用被动模式连接,如果设置为 YES,FTP 会话将支持被动模式连接。
    • pasv_min_port=10000 和 pasv_max_port=10100: 设置被动模式连接的端口范围。

2.1. 由于启用了chroot_list_enable功能,所以需要创建 /etc/vsftpd.chroot_list 文件。

root@local:~# touch /etc/vsftpd.chroot_list
chroot_list_enable=YES	  #  启用禁固目录功能,设置为YES表示/etc/vsftpd.chroot_list文件用的用户将会被限制在自己的家目录,设置为NO表示所有的用户会被限制在家目录,但是排除/etc/vsftpd.chroot_list中的用户
chroot_local_user=NO	# 禁用对所有本地用户的 chroot 限制,如果设置为 NO,只有在 /etc/vsftpd.chroot_list 文件中列出的用户才会被限制在自己的主目录中,设置为YES表示只有/etc/vsftpd.chroot_list 文件中的用户不会被限制。
chroot_list_file=/etc/vsftpd.chroot_list

2.2. 设置完后重启vsftpd使用客户端连接测试。
在这里插入图片描述
如上报错是因为从 vsftpd 3.0.0 版本开始,如果用户被禁锢(chroot)在其家目录中,且家目录具有写权限,vsftpd 会拒绝运行,以防止潜在的安全风险。 意思就是说需要把家目录的 写权限给去掉,但是如果去掉的就无法在家目录下创建文件,也无法上传。处理方法有两种

a. 方法一、 修改配置文件允许家目录保持可写状态,修改完需要重启vsftpd

allow_writeable_chroot=YES

在这里插入图片描述
成功登录,并且可以正常创建文件。

b. 方法二、去掉家目录的 写权限,在家目录下创建一个子目录,确保子目录具有写权限。

如果配置了allow_writeable_chroot=YES参数需要注释掉,并重启ftp

root@local:~# chmod -w /home/ftpuser
root@local:~# ll -d /home/ftpuser
dr-xr-xr-x 2 ftpuser ftpuser 4096 Feb 14 09:56 /home/ftpuser/
root@local:~# mkdir /home/ftpuser/uploads
root@local:~# chown ftpuser:ftpuser  /home/ftpuser/uploads/
root@local:~# ll -d /home/ftpuser/uploads
drwxr-xr-x 2 ftpuser ftpuser 4096 Feb 14 09:58 /home/ftpuser/uploads/

在这里插入图片描述

可以看出正常登录,进来并且可以创建文件。

相关文章:

  • CCF-GESP 等级考试 2024年9月认证C++一级真题解析
  • k8s强制删除状态为 Terminating的Namespace
  • 如何利用Spring的@Value注解实现配置信息的动态注入与管理?
  • 自动化遇到的问题记录(遇到问题就更)
  • 如何测试和验证CVE-2024-1430:Netgear R7000 路由器信息泄露漏洞分析
  • 【C语言】左旋字符串(三种实现方式)
  • 【Git版本控制器】:第一弹——Git初识,Git安装,创建本地仓库,初始化本地仓库,配置config用户名,邮箱信息
  • fps动作系统9:动画音频
  • DeepSeek遇袭后的深思:ManageEngine ITOM如何筑牢安全防线
  • Uniapp 获取定位详解:从申请Key到实现定位功能
  • 告别同步费用!用「缤纷云 + 思源」实现 50G 免费空间 + 思源笔记加密同步,这份薅羊毛攻略藏不住了
  • 游戏引擎学习第101天
  • Redis 数据类型 String 字符串
  • java商城解决方案
  • NixHomepage - 简单的个人网站
  • C#运动控制——轴IO映射
  • Fiori APP配置中的Semantic object 小bug
  • SSE与Websocket详解,SSE实现对话框流式输出
  • react项目引入tailwindcss不生效解决方案
  • 手撕Transformer编码器:从Self-Attention到Positional Encoding的PyTorch逐行实现
  • 网站弹窗特效/最近一周新闻
  • wordpress站点标题图片/长沙网站快速排名提升
  • 深圳网站设计公司排名前十强/洛阳seo网络推广
  • 引流推广app/seo软件工具箱
  • 如何建设网站/网站提交收录入口链接
  • 淮南矿业集团廉政建设网站/把百度网址大全设为首页