好的,所以我在 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
您必须设置ChrootDirectory
为root
.我想这很好,但出于某种原因,这似乎意味着当用户通过 sftp 连接时,他们无法在最初放置的目录中执行任何操作。例如,当user1
他们连接时/var/sftp/user1
,但他们无法在文件夹。他们必须去/var/sftp/user1/uploads
可以上传和下载东西的地方。我将其设置为user1
拥有该/var/sftp/user1/uploads
目录。这对用户来说有点不方便。有什么办法让它们直接在根目录下工作吗?
我不确定的另一件事是您需要为/var/sftp/user1
和/var/sftp/user1/uploads
文件夹分配权限 755。似乎如果我使用任何其他权限(甚至 777),它就不起作用。这是为什么? 755有什么特别之处?