bad*_*een 38 linux ubuntu permissions group
我在 digitalocean 上有 ubuntu 服务器,我想在我的服务器上为某人的域提供一个文件夹,我的问题是,我不希望该用户看到我的文件夹或文件或能够移出他们的文件夹。
我怎样才能在他们的文件夹中限制这个用户并且不允许他移出并查看其他文件/目录?
bad*_*een 37
我通过这种方式解决了我的问题:
$ sudo addgroup exchangefiles
Run Code Online (Sandbox Code Playgroud)
$ 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目录外做任何事情
我的意思是他的所有文件都必须在文件夹中。
Jan*_*nis 12
限制是一个明智的问题,必须一致定义。您可以做的是为用户定义一个受限的 shell作为他的默认 shell。
例如,/bin/rksh在/etc/profile.
注意:如果您的系统上不存在具有此名称的可执行文件,则创建一个硬链接ln /bin/ksh /bin/rksh并ksh通过其名称确定它是否受到限制。
所述受限制的壳将(例如)防止做一个cd命令,或指定与命令/的调用(显式路径),并且它不允许改变PATH,SHELL或ENV可变的,并且也禁止输出重定向。
你可以仍然提供预定义的shell脚本,将(在脚本执行者控制!)允许用户在一个不受限制的环境中运行该脚本具体(S)的用户。
该命令chroot允许您为用户创建受限根,这个问题解释了它的概念chroot以及如何使用它。
更新:搜索在数字海洋上设置的 chroot jail,会提供特定于其环境的更多文档。这是我认为与您可能需要的东西有关的一对。
如何配置 Chroot 环境以在 Ubuntu 12.04 VPS 上进行测试
这里有一个它涉及到jailkit,这FloHimself建议。