创建一个 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-permissionsbin/false
的一个旁注。对于读者,您可以在复制和粘贴之前检查您是否真的需要它。比如有一个相关的答案serverfault.com/a/519218/394787
不要忘记将/etc/ssh/sshd_config
中的默认子系统从#Subsystem sftp /usr/lib/openssh/sftp-server
更改为Subsystem sftp internal-sftp
以上是关于创建一个 SFTP 用户只访问一个目录。 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章