我正在寻找一种方法将用户与系统完全隔离,只允许用户登录系统并与打开的程序交互。
我实现此目的的一种方法是剥夺每个单独文件夹和/或文件的所有权限。
我的目标是让用户登录到我的系统,并只允许用户访问一个 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
链接: