AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1135312
Accepted
Raul Chiarella
Raul Chiarella
Asked: 2023-07-01 03:09:44 +0800 CST2023-07-01 03:09:44 +0800 CST 2023-07-01 03:09:44 +0800 CST

纯 FTP 服务器让我从“Bind Mounted HTML”文件夹下载文件,但在上传 Index.html 时会向 STOR 命令抛出 533 错误

  • 772

昨天我使用 Pure-FTPd 完成了 FTP 服务器的配置。我使用的方法是“虚拟用户”方法。

下面的命令基本上是我为了使其工作而执行的命令:

PureFTPd (Debian 10)

Instalar FTP usando o Pure-FTPd no Debian 10:

sudo apt install -y pure-ftpd-common pure-ftpd # Install Pure-FTPd
sudo ss -lnpt | grep pure-ftpd # Check what port is Pure-FTPd is running

Initial Steps for Preparing Pure-FTPd to work:

System User and Group:

sudo su -
groupadd ftpgroup  # Create FTP Group
useradd -g ftpgroup -d /dev/null -s /etc ftpuser  # Create Emulated System User for Virtual FTP User
mkdir /home/ftpusers  # Create Base Home dir for Virtual Users

chown root:root /home/ftpusers -R  # Set root Permissions so Pure-FTPd can create folders Automatically
chgrp ftpgroup /home/ftpusers  # Set permissions to FTP Group for Virtual Users Permissions
chmod g+rx /home/ftpusers

PureFTPd Config


echo "yes" > /etc/pure-ftpd/conf/Daemonize  # Run as Daemon
echo "yes" > /etc/pure-ftpd/conf/NoAnonymous  # Prohibit Anonymous
echo "yes" > /etc/pure-ftpd/conf/ChrootEveryone  # Enable chroot
echo “yes” > /etc/pure-ftpd/conf/VerboseLog  # Enable Verbose Logging
echo yes > /etc/pure-ftpd/conf/CreateHomeDir  # Create Folders Automatically
echo no > /etc/pure-ftpd/conf/PAMAuthentication  # ??? Check Later
echo no > /etc/pure-ftpd/conf/UnixAuthentication  # ??? Check Later - Disable login, maybe?

>/var/log/pure-ftpd/transfer.log && chmod 755 /var/log/pure-ftpd/transfer.log  # Enable Logging

Config. Pure-FTPd => /etc/pure-ftpd/pure-ftpd.conf

# This limits accounts to only what is in the Pure-FTPd database
AUTH="-lpuredb:/etc/pure-ftpd/pureftpd.pdb"

# Disallow anonymous connections. Only accept authenticated users.
NoAnonymous                  yes

# File creation mask. <umask for files>:<umask for dirs> - Use 177:077 if you’re paranoid.
Umask                        003:002

# Enable Passive mode to avoid Firewall NAT problems.
PassivePortRange 40000 60000

Config. Common Pure-FTPd => vi /etc/default/pure-ftpd-common

id -u ftpuser # Get UID/GID of FTP User first.
Change UPLOADUID/UPLOADGID on pure-ftpd-common file.

Those commands are needed for some reason, otherwise, user can’t login:
ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/40PureDB
ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/50pure

Virtual User PureFTPd

pure-pw useradd victor -u ftpuser -g ftpgroup -d /home/ftpusers/victor
pure-pw passwd victor -m

Reload PureFTPd
pure-pw mkdb -f /etc/pure-ftpd/pureftpd.passwd -F /etc/pure-ftpd/pureftpd.pdb  # Update PureFTPd Database
service pure-ftpd restart

但是,在此之后,我的下一个需求是从 NGINX 安装中创建一个 HTML 文件夹,供客户端通过 FTP 传输文件。按照上面的命令,以及他的 Chrooted FTP 文件夹 - 一切正常!如果我尝试使用 MobaXTerm 或其他 FTP 客户端将任何内容上传到他的 FTP 文件夹,我可以做到。

但是,如果我尝试将其上传到我使用以下命令创建的 HTML 绑定文件夹,它不会让我这样做:

CHRoot HTML Folder

mkdir -p /home/ftpusers/victor/sites  # Create Websites Folder for Victor
mount --bind /var/www/html /home/ftpusers/victor/sites  # Bind Mount because Link command does not work

Config. for FSTab in order to mount it at boot:

/mnt/data/html /var/www/html none nofail,bind 0 0
/var/www/html /home/ftpusers/victor/sites none nofail,bind 0 0
groups www-data  # Check what groups NGINX user is in
chown -R :<group> /var/www/html  # Just to be sure let’s redo HTML Permission for NGINX.
chmod -R g+w /var/www/html  # Group can Edit/Write

usermod -a -G www-data ftpuser  # Add our FTP User to NGINX Group
groups ftpuser # Now FTP User is in the same groups as NGINX User

Read and Write tests for FTP using cURL => All Tests worked when the owners were ftpuser  ftpgroup.

When Owners were www-data www-data it does not let my FTP User replace and upload files... Even tho, I added the FTP User above as being in the group that is owning the files.

curl ftp://localhost:21/testfile_read -u 'victor:ftp_password' -O  # Read Permissions from Outside HTML folder
curl ftp://localhost:21/sites/testfile_html_read -u 'victor:ftp_password' -O  # Read Permissions from Inside HTML folder.

curl -T testfile_write ftp://localhost:21/ -u 'victor:ftp_password'  # Write Permissions from Outside HTML folder.
curl -T testfile_html_write ftp://localhost:21/sites/ -u 'victor:ftp_password' # Write Permissions from Inside HTML folder.

权限 MobaXTerm 的权限

所以,看起来这是 www-data 和绑定文件夹本身的权限问题...但它没有意义,因为我将 FTP 用户添加到已经可以编辑/写入的组中...?

我快疯了,请问有人可以帮助我吗?

TL;DR:我需要帮助,允许 FTP 用户读取和写入其 chroot FTP 文件夹中的绑定 HTML 文件夹。目前,即使我将 FTP 用户添加到 www-data 组,我在尝试将文件上传到绑定的 HTML 文件夹时仍收到 553 错误(权限被拒绝)。

总之,我想为 FTP 用户提供访问和修改绑定的 HTML 文件夹所需的权限。尽管将用户添加到 www-data 组,但在尝试将文件上传到该文件夹​​时遇到 553 错误。任何帮助将不胜感激。

ftp
  • 1 1 个回答
  • 17 Views

1 个回答

  • Voted
  1. Best Answer
    Raul Chiarella
    2023-07-06T04:14:31+08:002023-07-06T04:14:31+08:00

    我完成这项工作的唯一方法是:

    sudo chown root /var/www
    sudo chmod 755 /var/www
    
    sudo chgrp ftpgroup /var/www/ -R
    sudo chown www-data /var/www/html/ -R
    
    sudo chmod 775 /var/www/html/ -R
    

    正是这样,即使是这里使用的斜线也很重要。我相信这并不完全安全,必须有另一种更安全的方法来做到这一点,但我找不到它。

    • 0

相关问题

  • 知道任何适用于 Windows 的快速可编写脚本的 ftp 客户端吗?[关闭]

  • 无法连接到我的 FTP 服务器,为什么?

  • 无法再连接到 FTP 站点

  • 您更喜欢哪个 FTP 客户端,为什么?

  • XP下设置FTP服务器时出错

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve