乌班图快速创建ftp

2023-12-25 06:02:19

需求:乌班图22.04安装配置ftp,然后配置一个用户,用户名deviceftp密码aaaa,并且设置端口为60021,并且限制在/app/deviceftp目录下,不允许匿名登录

在Ubuntu 22.04上安装和配置FTP服务器的步骤如下:

  1. 安装FTP服务器

    • 你可以使用vsftpd(非常安全的FTP守护进程),它是一个稳定、安全且快速的FTP服务器。
    • 安装命令:sudo apt-get install vsftpd
  2. 配置FTP服务器

    • 编辑vsftpd的配置文件:sudo nano /etc/vsftpd.conf
    • 在文件中进行以下设置:
      • 禁用匿名登录:确保anonymous_enable=NO
      • 启用本地用户登录:local_enable=YES
      • 允许用户上传文件:write_enable=YES
      • 设置用户根目录:chroot_local_user=YES
      • 添加或取消注释:user_sub_token=$USERlocal_root=/app/$USER
    • 保存并关闭文件。
  3. 添加FTP用户

    • 添加用户:sudo adduser deviceftp
    • 按提示设置密码(例如,你指定的aaaaa)。
    • 将用户的主目录设置为/app/deviceftpsudo usermod -d /app/deviceftp deviceftp
  4. 创建并设置目录

    • 创建目录:sudo mkdir -p /app/deviceftp
    • 设置目录权限:sudo chown deviceftp:deviceftp /app/deviceftp
    • 设置适当的读写权限。
  5. 更改FTP端口

    • 再次编辑vsftpd配置文件:sudo nano /etc/vsftpd.conf
    • 更改端口,添加或修改:listen_port=60021
    • 保存并关闭文件。
  6. 重启FTP服务

    • 重启vsftpd服务以应用更改:sudo systemctl restart vsftpd
  7. 配置防火墙(如果需要)

    • 如果你的服务器运行了防火墙,你需要允许FTP端口(在这里是60021):
      • sudo ufw allow 60021/tcp
    • 启用防火墙:sudo ufw enable(如果尚未启用)
  8. 测试FTP连接

    • 你可以使用FTP客户端软件,如FileZilla,来测试设置。
    • 确保使用新配置的端口60021以及创建的用户凭据进行连接。

请注意,FTP协议本身不是加密的,因此可能不适合传输敏感数据。如果需要安全传输,考虑使用SFTP或FTPS。

要通过命令行测试FTP服务器连接,你可以使用ftplftp命令。这里是如何使用它们的步骤:

使用 ftp 命令

  1. 安装 ftp 客户端(如果尚未安装):

    sudo apt-get install ftp
    
  2. 连接到FTP服务器:

    • 使用命令 ftp -p [服务器IP] 60021 来连接服务器。
    • 在提示时输入用户名和密码(在这个例子中是 deviceftpaaaaa)。
  3. 测试命令:

    • 登录后,你可以使用FTP命令如 ls, put, get 等来测试。
    • 例如,输入 ls 查看远程目录列表。
  4. 退出FTP:

    • 完成测试后,输入 byequit 来退出FTP会话。

使用 lftp 命令

lftp 是一个更强大的FTP客户端,支持FTP、FTPS和SFTP。

  1. 安装 lftp 客户端(如果尚未安装):

    sudo apt-get install lftp
    
  2. 连接到FTP服务器:

    • 使用命令 lftp -u deviceftp -p 60021 [服务器IP] 来连接服务器。
    • 输入密码(aaaaa)。
  3. 测试命令:

    • lftp命令行中,同样可以使用如lsputget等命令来测试服务器。
  4. 退出lftp:

    • 使用命令 exit 退出。

请确保你使用的是服务器的正确IP地址。如果你在本地机器上测试,这通常是127.0.0.1localhost。如果服务器位于你的本地网络之外,请确保使用正确的外部IP地址,并且所需端口在任何网络防火墙和路由器上都已开放。

错误信息 “500 OOPS: vsftpd: refusing to run with writable root inside chroot()” 表明 vsftpd 配置中有一个安全限制。在启用了 chroot 隔离的情况下,vsftpd 不允许用户的根目录是可写的。这是为了增加服务器的安全性。

要解决这个问题,你有两个选择:

选项 1: 修改用户的根目录权限

这个选项涉及改变/app/deviceftp目录的权限,使其变为不可写。

  1. 更改目录权限:
    执行以下命令使根目录变为只读:

    sudo chmod a-w /app/deviceftp
    
  2. 创建一个子目录供上传和下载:
    你可能还需要在/app/deviceftp下创建一个子目录,以便deviceftp用户可以上传和下载文件:

    sudo mkdir /app/deviceftp/upload
    sudo chown deviceftp:deviceftp /app/deviceftp/upload
    

选项 2: 调整 vsftpd 配置以允许可写的根目录

如果你确实需要让根目录是可写的,可以通过在vsftpd配置中添加一个设置来允许这种行为。

  1. 编辑 vsftpd 配置文件:

    sudo nano /etc/vsftpd.conf
    
  2. 添加或取消注释配置:
    在配置文件中添加以下行:

    allow_writeable_chroot=YES
    
  3. 重启 vsftpd:
    保存文件并重启 vsftpd 服务:

    sudo systemctl restart vsftpd
    

完成这些步骤后,再次尝试使用 lftp 连接并执行 ls 命令,看看问题是否得到解决。记住,选项 2 降低了安全性,因此如果你的FTP服务器不是面向公网或安全性要求不高,可以考虑使用这个选项。如果安全性很重要,则建议使用选项 1。

文章来源:https://blog.csdn.net/u011197085/article/details/135189621
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。