创建SFTP用户以仅访问一个目录。

时间:2014-04-16 04:14:54

标签: linux shell ssh sftp sshd

我需要创建一个只能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

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

2 个答案:

答案 0 :(得分:29)

我更喜欢创建用户组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目录符号链接到用户主目录。

答案 1 :(得分:2)

您可能需要为此用户添加受限制的shell,可以在其中放置一些文件。您可以使用rssh工具。

usermod -s /usr/bin/rssh sftpexport

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