我已经为一个帐户分配了登录 shell /bin/rbash
,并发现了一个似乎rbash
基本上无用的漏洞。
该帐户.bash_login
刚刚运行.bashrc
:
. $HOME/.bashrc
并.bashrc
设置PATH
为仅包含允许的命令的目录:
PATH=/restrict/bin
这名义上是可行的。但是,我发现,如果我ssh
进入帐户并在输入密码后立即按下 Control-C,则有一定几率(可能是五分之一)会被rbash
中断并在运行 之前进入 shell 提示符.bashrc
,此时PATH
尚未更改,用户最终可以不受限制地访问/bin
。
请告诉我我遗漏了什么,因为除了实际修复和重新编译之外,解决方案似乎很难。我还对为获得“安全性”而修改bash
的一长串具体行为持谨慎态度。我会为此目的而放弃,除非脚本已经深深扎根于我的用户心中。rbash
bash
bash
答案1
一个解决方案是设置.bash_login
文件中的路径,完全跳过从.bashrc
编辑:
回过头来看这个之后,我意识到仅仅设置变量$PATH
实际上并没有完成任何事情,因为用户可以将它更改为包含其他目录,这些目录包含二进制文件受限制的就您所说的意义而言,它也不会阻止直接调用可执行文件。在符合 POSIX 的 shell 中,您可以将变量设置为只读 ( readonly PATH=/restricted/bin
)。为了解决后者,您必须限制用户/组不访问其他 bin 文件/文件夹。