创建一个 SFTP 用户只访问一个目录。 [关闭]

Posted

技术标签:

【中文标题】创建一个 SFTP 用户只访问一个目录。 [关闭]【英文标题】:Create a SFTP user to access only one directory. [closed] 【发布时间】:2014-05-30 18:14:54 【问题描述】:

我需要创建一个只能 SFTP 到特定目录的用户并复制一些信息。这就对了。我一直在网上寻找,他们提出了有关 chroot 和修改 sshd_config 的信息。

目前我还可以

添加用户“useradd sftpexport” 在没有主目录“-M”的情况下创建它 设置其登录位置“-d /u02/export/cdrs”(存储信息的位置) 不允许它使用 ssh "-s /bin/false"

useradd sftpexport -M -d /u02/export/cdrs -s /bin/false

任何人都可以建议要编辑什么,以便用户只能登录并复制文件吗?

【问题讨论】:

Linux shell to restrict sftp users to their home directories? 的可能重复项 您是否发现您的useradd 命令有什么问题? (无需创建新用户组) 【参考方案1】:

您可能需要为该用户添加一个受限制的外壳,以便将一些文件放在那里。您可以使用rssh 工具。

usermod -s /usr/bin/rssh sftpexport

在配置/etc/rssh.conf 中启用允许的协议。

【讨论】:

rssh 现在未维护。【参考方案2】:

我更喜欢创建一个用户组sftp 并将该组中的用户限制在他们的主目录中。

首先,编辑您的/etc/ssh/sshd_config 文件并将其添加到底部。

Match Group sftp
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no  

这告诉 OpenSSH sftp 组中的所有用户都将被 chroot 到他们的主目录(%h 在 ChrootDirectory 命令中表示)

添加一个新的 sftp 组,将您的用户添加到该组,限制他的 ssh 访问并定义他的主目录。

groupadd sftp
usermod username -g sftp
usermod username -s /bin/false
usermod username -d /home/username

重启ssh:

sudo service ssh restart

如果您仍然遇到问题,请检查主目录上的目录权限是否正确。为您的设置适当调整 755 值。

sudo chmod 755 /home/username

编辑:根据您的问题的详细信息,您似乎只是缺少 sshd_config 部分。在您的情况下,将sftp 替换为sftpexport。还要确保在/u02/export/cdrs 目录上可以访问文件权限。

一个更好的设置(还有比我将要建议的更好的设置)是将/u02/export/cdrs 目录符号链接到用户主目录。

【讨论】:

问题目录必须归他所有吗?因为它由另一个用户拥有。我也将他添加到与所述用户相同的组中。 请阅读用户权限。这 3 个数字对应于用户、组和其他(世界)。您必须了解这些含义以及如何安全使用它们。做一个谷歌搜索,但这里有一个帖子thegeekstuff.com/2010/04/unix-file-and-directory-permissions bin/false 的一个旁注。对于读者,您可以在复制和粘贴之前检查您是否真的需要它。比如有一个相关的答案serverfault.com/a/519218/394787 不要忘记将/etc/ssh/sshd_config 中的默认子系统从#Subsystem sftp /usr/lib/openssh/sftp-server 更改为Subsystem sftp internal-sftp

以上是关于创建一个 SFTP 用户只访问一个目录。 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

linux SFTP用户创建 不允许用户登录,并且连接只允许在制定的目录下进行操作

搭建sftp服务器并限制用户

sftp服务器搭建(ubuntu)

sftp用户限制设置

sftp限制用户目录

Linux添加sftp用户并限制其访问目录