代码改变世界

堡垒机里 `su - oracle` 被拦截,怎么绕过限制切换用户

2026-10-09 07:03  AlfredZhao  阅读(44)  评论(0)    收藏  举报

笔者最近在堡垒机上遇到一个很典型的问题:默认只能通过 root 用户登录,登录后想切到 oracle 用户,结果 su - oracle 直接被拦住了。这篇文章记录一下现象和解决办法。

01 | 问题现象

在堡垒机里,默认只能选择通过 root 用户登录。登录成功之后,笔者想切换到 oracle 用户,于是执行:

su - oracle

回车后并没有提示输入密码,而是直接报错:

BH:Command is not permitted

看起来像是被某种安全策略限制住了,不允许切换到其他用户。

02 | 原因判断

从报错信息 BH:Command is not permitted 来看,堡垒机对命令做了拦截。它识别到的是 su 这个命令本身,于是直接拒绝执行。

也就是说,限制针对的是命令的调用方式,而不是切换用户这个动作本身。

03 | 解决办法:使用 su 的全路径

既然直接写 su 会被拦截,那可以换一种调用方式——使用 su 的全路径。

先确认 su 的完整路径:

which su

输出结果:

/usr/bin/su

然后用全路径执行用户切换:

/usr/bin/su - oracle

这次成功切换到了 oracle 用户。

04 | 小结

遇到堡垒机提示 BH:Command is not permitted、不让执行 su - oracle 时,可以尝试用 su 的全路径来调用。核心思路就是:先 which su 找到真实路径,再用 /usr/bin/su - oracle 完成切换。

关注我,和AI一起成长~