禁止用户与系统进行任何交互

禁止用户与系统进行任何交互

我正在寻找一种方法将用户与系统完全隔离,只允许用户登录系统并与打开的程序交互。

我实现此目的的一种方法是剥夺每个单独文件夹和/或文件的所有权限。

我的目标是让用户登录到我的系统,并只允许用户访问一个 Java 可执行文件,然后用户可以启动该可执行文件并进行交互。

有更好的方法吗?

谢谢

答案1

您可能希望将这些用户的默认 shell 设置为/bin/rbash--restricted bash ( bash -r)。看man rbash。这可以通过命令来完成chsh -s /bin/rbash {USER}

为了防止他们执行您想要的命令之外的其他命令,请将其 PATH 变量环境设置为仅包含您希望他们在其 中运行的可执行文件的文件夹~/.bash_profile

export PATH="$HOME/bin"

编辑:

此时,攻击者仍有可能突破rbash。实际上,ssh允许运行远程命令。他们仍然可以执行类似的操作ssh ... cp /bin/bash bin,将 bash 添加到他们可以运行的命令集中。问题是,当直接从 ssh 运行时,bash(或 rbash)似乎不读取.bash_profile,nor .profile,nor /etc/profile

链接(2)提出了该问题的解决方案。man sshd_config描述了可以在 中设置的所有选项/etc/ssh/sshd_config。显然,脚本~/.ssh/rc(以及/etc/sshrc参见链接(4))在我们需要时运行 - 每当用户 ssh 某些命令时。但我没有测试过。

此时,可能仍可能无法使用 .rbash 来中断 rbash scp

此外,您还需要在/etc/ssh/sshd_config.这是通过注释行来完成的:

Subsystem sftp       /usr/lib/openssh/sftp-server

链接:

相关内容