关于有限 FTP/sFTP 用户的基本说明

关于有限 FTP/sFTP 用户的基本说明

我想澄清一下,使用 Nginix 创建有限用户以 WEBSERVER 身份访问我的 VPS 用户的正确方法。

我习惯不安装 FTP,只通过 SFTP 访问。每次设置都可以吗?

我通常会创建一个名为“admin”的受限用户,该用户应该能够通过 SFTP 访问包含网站数据的文件夹

mkdir -p /var/www/mysite.com/
adduser admin
adduser admin www-data
chown -R root:root /var/www
chmod -R 755 /var/www
chmod -R 755 /var/www/mysite.com
chown -R admin:www-data /var/www/mysite.com/

这似乎不是正确的方法,我上传某些文件时总是遇到权限问题(例如通常使用 Wordpress)。我想创建一个用户,其工作方式与“提供商”在客户购买托管服务时提供给他们的用户完全一样(即 FTP,我更喜欢 SFTP 访问)。它适用于个人用户,但我认为使用受限用户比通过 SFTP 使用“root”安全得多。

答案1

您可以使用 sftp,只需像这样设置目录 /var/www/mysite.com:

chmod 2775 /var/www/mysite.com

这将使目录组可写,并将组 www-data 粘贴到此目录下创建的每个文件。如果目录中已有文件,则可以使用以下命令传播目录权限:

find /var/www/mysite.com -type d -exec chmod 2775 {} \;

希望这能帮助您获得您所寻求的“主人感觉”。;)

答案2

设置此设置的最佳方法是使用通过 ProFTPD 或 Pure-FTPD 等软件设置的虚拟用户,这两种软件都支持来自 ldap、mysql 或其他数据库的虚拟用户,并且都在同一包中支持 FTP 和 SFTP。使用虚拟用户,您可以将它们锁定在 FTP 目录中,还可以设置此用户将用于存储和访问文件的 UID 和 GID。请参阅相关文档,了解如何准确实现这一点。

答案3

看起来您遇到的问题与 chroot jailing 要求用户设置的标准有关。人们遇到的两个最大问题是用户的主目录及其上面的所有目录必须只能由 root 用户写入,并且必须由 root 拥有。由于这一规定,创建 jailed 设置的最佳方式(在我看来)是:

mkdir -p /var/www/vhosts/mysite.com/public_html
useradd -d /var/www/vhosts/mysite.com mynewuser
chown -R root:root /var/www/vhosts/mysite.com
chmod 755 /var/www/vhosts/mysite.com
chown mynewuser:www-data /var/www/vhosts/mysite.com/public_html

或者如果您需要 Apache 具有写权限,请将所需目录的权限更改为 775。

我以这种方式进行设置,以便当用户登录时,他们唯一可以访问的目录是“public_html”,并且不知道系统上的任何其他虚拟主机。这给人一种完全隔离的实例的感觉,就像您从任何提供商那里收到的一样。

相关内容