如何使用 Control-C 防止 rbash 转义

如何使用 Control-C 防止 rbash 转义

我已经为一个帐户分配了登录 shell /bin/rbash,并发现了一个似乎rbash基本上无用的漏洞。

该帐户.bash_login刚刚运行.bashrc

. $HOME/.bashrc

.bashrc设置PATH为仅包含允许的命令的目录:

PATH=/restrict/bin

这名义上是可行的。但是,我发现,如果我ssh进入帐户并在输入密码后立即按下 Control-C,则有一定几率(可能是五分之一)会被rbash中断并在运行 之前进入 shell 提示符.bashrc,此时PATH尚未更改,用户最终可以不受限制地访问/bin

请告诉我我遗漏了什么,因为除了实际修复和重新编译之外,解决方案似乎很难。我还对为获得“安全性”而修改bash的一长串具体行为持谨慎态度。我会为此目的而放弃,除非脚本已经深深扎根于我的用户心中。rbashbashbash

答案1

一个解决方案是设置.bash_login文件中的路径,完全跳过从.bashrc

编辑

回过头来看这个之后,我意识到仅仅设置变量$PATH实际上并没有完成任何事情,因为用户可以将它更改为包含其他目录,这些目录包含二进制文件受限制的就您所说的意义而言,它也不会阻止直接调用可执行文件。在符合 POSIX 的 shell 中,您可以将变量设置为只读 ( readonly PATH=/restricted/bin)。为了解决后者,您必须限制用户/组不访问其他 bin 文件/文件夹。

相关内容