在 Ubuntu 上设置 sftp 时的权限

在 Ubuntu 上设置 sftp 时的权限

好的,所以我在 Ubuntu 20.04 上设置了一个 sftp 服务器。将有多个用户通过 sftp 访问该框,我希望他们每个人只能访问自己的目录。我不希望他们能够查看、修改、下载等任何其他用户的目录或文件。基本上是一个 chroot jail 场景。

我最终得到了这样的文件夹结构:

/var/
|-- sftp/
    |-- user1/
        |-- uploads/
            |-- file1
            |-- file2
    |-- user2/
        |-- upoads/
            |-- filea
            |-- fil2b

我的/etc/ssh/sshd_config包含这个:

Match Group mygroup
ForceCommand internal-sftp
PasswordAuthentication yes
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no

Match User user1
ChrootDirectory /var/sftp/user1

Match User user2
ChrootDirectory /var/sftp/user2

它基本上可以工作,但有几个方面我不明白。

显然,当您配置 sftp 服务器时,/etc/ssh/sshd_config您必须设置ChrootDirectoryroot.我想这很好,但出于某种原因,这似乎意味着当用户通过 sftp 连接时,他们无法在最初放置的目录中执行任何操作。例如,当user1他们连接时/var/sftp/user1,但他们无法在文件夹。他们必须去/var/sftp/user1/uploads可以上传和下载东西的地方。我将其设置为user1拥有该/var/sftp/user1/uploads目录。这对用户来说有点不方便。有什么办法让它们直接在根目录下工作吗?

我不确定的另一件事是您需要为/var/sftp/user1/var/sftp/user1/uploads文件夹分配权限 755。似乎如果我使用任何其他权限(甚至 777),它就不起作用。这是为什么? 755有什么特别之处?

相关内容