我使用这些行修改了 /etc/ssh/sshd_config 以支持无法使用 SSH 的 sftp 用户组。
Subsystem sftp internal-sftp -l VERBOSE
Match Group sftpusers
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory %h
ForceCommand internal-sftp
我在 sftpusers 组中创建一个用户,其 ssh 功能受到如下限制:
useradd -g sftpusers -s /sbin/nologin <username>
问题是,即使我使用以下命令向其主文件夹中的所有用户和组授予递归权限,当他们创建新文件时,他们会立即失去访问权限,因为默认文件权限不是我递归设置的文件结构到:
chmod -R 777 /home/<username>/
我尝试授予用户文件结构的所有权,但这使得用户无法再进行 sftp(我相信是因为 ChrootDirectory 选项,使其主目录和所有子组件必须由 root 拥有)。我真的很想要一个解决方案,允许用户只能进行 sftp(无 ssh),而无法访问其主目录中的大多数文件,除非特别授予访问权限或由他们创建。
答案1
通过以下步骤,您可能会得到您正在寻找的东西:
递归地仅授予所有者对用户目录中所有文件和文件夹的访问权限(只有 root 或文件所有者才能访问所有内容):
chmod -R 700 /home/<用户目录>/
授予用户和组访问 chroot 的权限,以便他们可以在使用 sftp 时列出文件(运行此命令后,您的 sftp 用户将能够列出用户目录中的内容):
chmod 755 /home/<用户目录>/
授予用户文件的所有权或您希望他们具有完全访问权限的目录的递归所有权:
chown /home/<用户目录>/文件
或者
chown -R /home/<用户目录>/dir
您可以根据需要重复步骤 2 和 3,让他们可以随时随地访问。希望这可以帮助!