如何将用户限制在一个文件夹中并且不允许他们移出他的文件夹

bad*_*een 38 linux ubuntu permissions group

我在 digitalocean 上有 ubuntu 服务器,我想在我的服务器上为某人的域提供一个文件夹,我的问题是,我不希望该用户看到我的文件夹或文件或能够移出他们的文件夹。

我怎样才能在他们的文件夹中限制这个用户并且不允许他移出并查看其他文件/目录?

bad*_*een 37

我通过这种方式解决了我的问题:

创建一个新组

$ sudo addgroup exchangefiles
Run Code Online (Sandbox Code Playgroud)

创建chroot目录

$ sudo mkdir /var/www/GroupFolder/
$ sudo chmod g+rx /var/www/GroupFolder/
Run Code Online (Sandbox Code Playgroud)

创建组可写目录

$ sudo mkdir -p /var/www/GroupFolder/files/
$ sudo chmod g+rwx /var/www/GroupFolder/files/
Run Code Online (Sandbox Code Playgroud)

把它们都给新组

$ sudo chgrp -R exchangefiles /var/www/GroupFolder/
Run Code Online (Sandbox Code Playgroud)

之后我去了/etc/ssh/sshd_config并添加到文件的末尾:

Match Group exchangefiles
  # Force the connection to use SFTP and chroot to the required directory.
  ForceCommand internal-sftp
  ChrootDirectory /var/www/GroupFolder/
  # Disable tunneling, authentication agent, TCP and X11 forwarding.
  PermitTunnel no
  AllowAgentForwarding no
  AllowTcpForwarding no
  X11Forwarding no
Run Code Online (Sandbox Code Playgroud)

现在我要向我的组中添加名为 obama 的新用户:

$ sudo adduser --ingroup exchangefiles obama
Run Code Online (Sandbox Code Playgroud)

现在一切都完成了,所以我们需要重新启动 ssh 服务:

$ sudo service ssh restart
Run Code Online (Sandbox Code Playgroud)

注意:用户现在不能在file目录外做任何事情 我的意思是他的所有文件都必须在文件夹中。

  • 我将用户切换为`sudo su - obama`,但它仍然可以看到其他人的文件@badr (4认同)

Jan*_*nis 12

限制是一个明智的问题,必须一致定义。您可以做的是为用户定义一个受限的 shell作为他的默认 shell

例如,/bin/rksh/etc/profile.

注意:如果您的系统上不存在具有此名称的可执行文件,则创建一个硬链接ln /bin/ksh /bin/rkshksh通过其名称确定它是否受到限制。

所述受限制的壳将(例如)防止做一个cd命令,或指定与命令/的调用(显式路径),并且它不允许改变PATHSHELLENV可变的,并且也禁止输出重定向。

可以仍然提供预定义的shell脚本,将(在脚本执行者控制!)允许用户在一个不受限制的环境中运行该脚本具体(S)的用户。


X T*_*ian 6

该命令chroot允许您为用户创建受限根,这个问题解释了它的概念chroot以及如何使用它。

更新:搜索在数字海洋上设置的 chroot jail,会提供特定于其环境的更多文档。这是我认为与您可能需要的东西有关的一对。

如何配置 Chroot 环境以在 Ubuntu 12.04 VPS 上进行测试

如何允许受限制的 SSH 访问 chroot 入狱用户

这里有一个它涉及到jailkit,这FloHimself建议。