如何添加只有权限访问特定文件夹的ssh用户?
useradd -d /var/www/xyz.com.tr/musteri -s /bin/bash -g sshd musteri
我创建了一个名为 的用户musteri
。我设置了它的主文件夹和组。所以,我想将musteri
用户集成到“/var/www/xyz.com.tr/musteri”中。我不希望它访问另一个文件夹。
答案1
听起来您希望您的 müşteriler 能够对文件夹进行文件传输访问,而不实际给他们 shell。这是一件好事,因为宾福斯指出,为人们提供具有有限访问权限的 shell 是很棘手的,因为 shell 需要访问分散在系统上的各种内容才能运行。
为了让 SFTP 访问特定文件夹,您可以执行以下操作。
- 向系统添加一个新组,例如“sftponly”。
- 添加系统上对该组应具有受限权限的任何用户。您还可以为它们提供受限制的 shell,例如 /bin/true,但这不是必需的。
/etc/ssh/sshd_config
使用这些行更改您的 ssh 配置文件(通常)
子系统 sftp 内部 sftp 比赛组 sftponly Chroot目录 %h 允许TCP转发 否 X11转发号 ForceCommand 内部 sftp
这将激活 SSH 内部的 sftp 子系统,并强制该系统组的成员在登录时仅使用该系统。它还会将它们chroot到其主目录。您可以将其更改为其主目录的子文件夹以及类似的内容ChrootDirectory %h/musteri_sftp
,以便他们无法查看其余的系统文件,但可以直接登录到其主文件夹的特殊子文件夹。
科莱明胶。
答案2
在我看来,这是非常困难的,甚至是不可能的。当用户通过 SSH 连接时,他至少需要一个 shell,在您的情况下是bash
.要执行,/bin/bash
他需要访问权限/bin
。bash
本身需要从/etc
(例如/etc/bash.bashrc
)读取一些内容,因此用户还需要访问/etc
.假设用户不仅想在这个目录中闲逛,他可能想读取一个文件,但要执行例如vim
他还需要访问/usr/bin
.
这只是一个小小的演示,还有一些更多的依赖项,例如我真的不知道如果用户无权访问/tmp
..
你应该考虑一下你的意图。您是否只想让某人对您的网络服务的一部分具有读/写访问权限?然后您可以设置诸如 FTP 之类的东西来将特定目录导出到该用户。因此他无需 SSH 访问即可读/写此文件。
另一个不错的解决方案是存储库。例如,设置一个 GIT 存储库并让用户克隆它。他可以在本地进行更改并向您发送补丁。您可以决定是否应用此补丁,回滚有问题的补丁也很容易。