将用户限制在主目录中,同时仍允许创建和删除文件/文件夹的权限

将用户限制在主目录中,同时仍允许创建和删除文件/文件夹的权限

我正在尝试让客户端 SFTP 访问我服务器(Ubuntu 10.10)上其网站的根目录,以便他们可以自己管理他们的网站。

虽然我成功地将用户限制在某个目录中并授予他们 SFTP 访问权限,但他们只被允许在子目录(他们拥有的目录)中创建和删除新文件。这意味着我必须授予他们访问其站点根目录的父目录的权限。

到目前为止,我已经遵循了教程如下:

addgroup filetransfer
usermod -G filetransfer username
chown root:root /home/username
chmod 755 /home/username
cd /home/username
mkdir docs public_html
chown username:username *

我如何才能将他们限制在其网站的根目录(例如 public_html)内,同时仍允许他们创建和删除文件。我读过的所有教程都建议根目录必须是用户主目录的所有者,这样他们就无法在该目录中进行写访问。

我对管理自己的服务器还比较陌生,因此如果能提供任何建议我将非常感激。

非常感谢。

答案1

您应该说明您为实现此目的所采取的具体措施。如果您还没有这样做,您可能应该尝试使用 chroot(建议如下:http://www.unixwiz.net/techtips/chroot-practices.html)。

对于您的特定问题,您需要为用户提供其根文件夹的写入权限。要么将他们设置为所有者,并确保设置了写入权限。我不确定为什么这是一个坏主意:

# chown someuser /user/root/folder
# chmod u+w /user/root/folder

或者,如果您想保留 root 作为所有者,您可以通过组来执行此操作:

# addgroup somegroup
# adduser someuser somegroup
# chgrp somegroup /user/root/folder
# chmod g+w /user/root/folder

编辑

正如所提供链接中的评论所提到的,看来 root 必须是相关目录的所有者,chroot 才能正常工作。但似乎没有什么可以阻止更改组。因此,按照本教程的命名,这可以解决问题:

# chown root:filetransfer /home/username
# chmod 775 /home/username

注意现在的权限775而不是 755,这将授予属于文件传输组的所有用户写权限。

编辑2

不,这还不够。也许这根本不可行。

答案2

对于 Ubuntu 系统——

我使用了这个命令以及以下参数:

sudo useradd -d /home/node -m node

然后使用此用户名和 sftp 进入 ssh 进行测试 - 我成功限制了这个用户名,并且为该用户名提供了一个 bin/shell 框架,但功能有限。

这是我几天前遇到的最简单、最好的解决方案。

相关内容