使 ChrootDirectory 目录可由 SFTP 用户写入

tsh*_*ang 6 ssh sftp openssh

如果用户通过 SFTP 登录到一台计算机,则可以使用ChrootDirectory关键字来给人一种用户位于根目录中的错觉。但该目录只能由root用户写入。我希望这个用户有这样的写入能力,而且 OpenSSH 似乎没有提供这个功能,除非我错过了什么?

我知道 SFTP 用户可以被授予对其中任何文件/目录的写访问权限ChrootDirectory,但这还不够好。我希望用户还可以直接在该“根”目录下创建/删除文件,而无需创建该用户具有写访问权限的子目录的解决方法。

dev*_*ull 0

我的内部 SFTP 也遇到了同样的问题。我为解决这个问题所做的是:

sshd_config文件中:

Match group     sftpusers
  ChrootDirectory %h
Run Code Online (Sandbox Code Playgroud)

/etc/groups文件中,将 sftp 用户添加到sftpusers组中(如果不存在则创建它):

sftpusers:x:6000:user1,user2
Run Code Online (Sandbox Code Playgroud)

对于 ChrootDirectory,请确保您的chown目录位于以下目录(警告 - 请注意您正在运行此命令的目录,确保它仅在用户登录的目录上运行,命令-R意味着递归,因此如果您不希望此命令包含子文件夹,请将其删除。此外,SFTP 用户不应该被授予对根级系统目录(如 )的访问权限/etc,最好在类似目录下创建一个文件夹/usr/local/alcatraz并授予他们访问该目录的权限)

chown -R root:sftpusers userChrootDirectory
Run Code Online (Sandbox Code Playgroud)

Chmod 目录以获得您想要的权限,例如:

drwxrws---
Run Code Online (Sandbox Code Playgroud)

如果您需要更多信息,请告诉我,这只是重点内容,应该可以帮助您到达您想要的位置。

  • 对于openssh,此方法(向chroot目录添加组写权限)将不起作用。引自 openssh(至少版本 7.2)`sshd_config(5)` 手册页:“在会话启动时,sshd(8) 检查路径名的所有组成部分是否为 root 拥有的目录,任何其他用户或组都不可写入。 ” (2认同)