sftp 限制对目录的访问

sftp 限制对目录的访问

我需要通过 SFTP 授予对该文件夹根目录的完全写入权限的访问权限。我成功了,但无法找到一种方法来提供对根目录 / 的写权限。

我读到解决此问题的常见方法是为每个用户创建一个子文件夹,但该子文件夹包含在网站各处使用的现有文件。

简而言之 :

/ should not be readable (this is correct)
/uploads/ is not writable (**but should** by any means)
/uploads/* is writable (and should)

这就是我到目前为止所做的:

/var/www/uploads is owned by root:root with 755 permissions. (775 prevents user to even log in)
/var/www/uploads/* is owned by newuser:sftp 775 permissions.

相关/etc/ssh/sshd_config

Match group sftp
   ChrootDirectory %h
   AllowTcpForwarding no
   X11Forwarding no
   ForceCommand internal-sftp

AllowGroups ssh-users sftp

用户是这样创建的:

useradd -d /var/www/uploads -m newuser -g sftp -s /bin/false

多谢!

答案1

我成功了,但无法找到一种方法来提供对根目录 / 的写权限。

这不可能。chroot您正在 chroot 的用户无法写入该目录。这是手册页中必须定义的sshd_config

在会话启动时sshd(8)检查路径名的所有组成部分是否为 root 拥有的目录不是可由任何其他用户或组写入。

答案2

系统上用户之间共享的目录应具有涵盖所有用户访问权限的权限。

我倾向于在共享目录和内容上使用 1777。它为所有用户提供完全访问权限,同时防止文件所有者以外的人删除。

权限八进制中前面的 1 是粘性位,它将删除和权限更改权限缩小到所有者。

相关内容