【问题标题】:Create a SFTP user to access only one directory. [closed]创建一个 SFTP 用户只访问一个目录。 [关闭]
【发布时间】: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 ssh sftp sshd


【解决方案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
猜你喜欢
  • 2019-12-30
  • 2017-04-11
  • 1970-01-01
  • 2015-08-07
  • 1970-01-01
  • 2012-05-18
  • 2014-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多