我已经使用有限的命令设置了受限用户,以使用 .profile 和 PATH 变量运行,但用户可以使用以下命令设置他的路径:
$ export PATH=$PATH:/bin:/sbin:/usr/bin
并可以访问其他命令。
有没有办法限制用户设置他的路径?
答案1
您可以使用readonly
Bash 内置函数将变量设置为只读。但这不太可能阻止那些想要改变环境的人,因为他们可以简单地启动一个新的 shell,而不需要运行 RC 文件并设置自己的环境。还,这不会以任何方式妨碍某人运行不在PATH
.变量PATH
只是一个便利功能,允许用户编写foo
而不是例如/usr/bin/foo
.就是这样。它与安全没有任何关系。
保护环境的关键是首先仔细研究您的威胁模型是什么 - 您是否期望用户尝试读取其他用户的文件、破坏安装、窃听通信、发送垃圾邮件、获取信息root 访问权限,还是其他什么?一旦确定了这一点,您就可以开始研究哪些措施可以真正实现这一目标。
答案2
您应该研究 bash“受限”模式(以bash --restricted
或开头bash -r
),该模式会阻止诸如cd
和 之类的命令阻止通过完整路径运行任何可执行文件,因此它只允许执行$PATH
.
此外,它还可以防止修改环境变量,例如PATH
.
您可以找到 bash“受限”模式的概述这里。
答案3
最后,让它工作,所以bash -r
没有工作,但我发现rbash
安装了二进制文件,这是 bash 的受限版本。
添加为受限用户的外壳后/bin/rbash
,它无法设置路径或以完整路径执行,这就是我想要的。谢谢大家的帮助!