Linux shell 将 sftp 用户限制到他们的主目录?

Posted

技术标签:

【中文标题】Linux shell 将 sftp 用户限制到他们的主目录?【英文标题】:Linux shell to restrict sftp users to their home directories? 【发布时间】:2010-12-04 08:34:55 【问题描述】:

我需要授予对我服务器上我的 webroot 中的目录的 SFTP 访问权限。我已将 ben_files 设置为用户并将他的主目录设置为

/var/www/vhosts/mydomain.com/files

如果他使用普通的旧 FTP 连接,那一切都很好 - 他仅限于该目录,但要启用 SFTP,我必须将他添加到 bin/bash shell,这会突然打开我的整个服务器...

有没有办法让他访问 SFTP 但不打开我所有的目录?我真的希望他只能呆在家里;)

谢谢!

【问题讨论】:

【参考方案1】:

您还可以使用以下命令将用户 shell 设置为 /bin/false:

usermod -s /bin/false 用户名

限制他们 ssh'ing 并且只能 sftp(或 ftp,如果已设置)

我将它用于 sftp usres,以及提到的 chroot 设置(由其他答案涵盖)。

【讨论】:

当我将 shell 设置为 /bin/false 时,我不能再 sftp 或 scp 到它! /bin/false 限制任何类型的登录尝试。你的信息是假的。请改用/sbin/nologin【参考方案2】:

使用 pam_chroot。

这是一本很好的手册:http://www.howtoforge.com/chroot_ssh_sftp_debian_etch

【讨论】:

【参考方案3】:

OpenSSH≥4.8 支持ChrootDirectory 指令。

添加到/etc/sshd_config/etc/ssh/sshd_config 或您设置的全局sshd 配置文件是:

匹配用户 ben_files # 以下两个指令强制 ben_files 成为 chrooted # 并且只有 sftp 可用。不需要其他 chroot 设置。 ChrootDirectory /var/www/vhosts/mydomain.com/files ForceCommand 内部 sftp # 对于额外的偏执,禁止所有类型的端口转发。 AllowTcpForwarding 否 网关端口号 X11转发号

【讨论】:

嗨,我收到一些错误 - 启动 sshd:/etc/ssh/sshd_config:第 113 行:错误的配置选项:匹配和 /etc/ssh/sshd_config:第 115 行:错误的配置选项:ForceCommand。这些都停止 sshd 再次恢复。有什么想法吗? 您可能没有足够新的 SSH 版本。 啊,是的,我在你的回答中错过了这一点 - 我们在 4.3,我会考虑升级。 哇哦,4.3到现在4岁了;你还在用吗?升级! 5.3 是当前的最新版本。 @ephemient 是的,他们被拒绝使用 sftp。但是,我意识到我的问题是对主目录的所有权。我将它设置为 root:root 755,一切都很好【参考方案4】:

看看rssh。它可能已经为您的 o/s 分发打包。

【讨论】:

它没有打包,但是很完美!我会尽快安装;)谢谢! rssh 现在无人维护,并且缺少安全更新。【参考方案5】:

你可以尝试将他的shell设置为/bin/rbash

受限外壳 如果 bash 以名称 rbash 开头,或者 -r 选项为 提供于 调用时,shell 会受到限制。受限制的外壳是 用过的 设置比标准外壳更受控制的环境。 它 行为与 bash 相同,但以下内容除外 是 不允许或不执行:

   ·      changing directories with cd

还有更多...

在使用此功能之前,请确保您完全了解允许和禁止的内容。

【讨论】:

rbash 在发行版中,但它似乎不允许 sftp - 我想我必须查看配置。谢谢你的提示!

以上是关于Linux shell 将 sftp 用户限制到他们的主目录?的主要内容,如果未能解决你的问题,请参考以下文章

Linux 限制SFTP用户目录和权限

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

Linux下限制用户通过SFTP访问指定目录

linux怎么限制用户ssh登录允许sftp登录

同一台 Centos (Linux)服务器设置多个sftp 账号,并限制用户只能访问指定文件路径

linux怎么限制用户ssh登录允许sftp登录