笔者最近在堡垒机上遇到一个很典型的问题:默认只能通过 root 用户登录,登录后想切到 oracle 用户,结果 su - oracle 直接被拦住了。这篇文章记录一下现象和解决办法。
01 | 问题现象
在堡垒机里,默认只能选择通过 root 用户登录。登录成功之后,笔者想切换到 oracle 用户,于是执行:
bash
su - oracle
回车后并没有提示输入密码,而是直接报错:
bash
BH:Command is not permitted
看起来像是被某种安全策略限制住了,不允许切换到其他用户。
02 | 原因判断
从报错信息 BH:Command is not permitted 来看,堡垒机对命令做了拦截。它识别到的是 su 这个命令本身,于是直接拒绝执行。
也就是说,限制针对的是命令的调用方式,而不是切换用户这个动作本身。
03 | 解决办法:使用 su 的全路径
既然直接写 su 会被拦截,那可以换一种调用方式------使用 su 的全路径。
先确认 su 的完整路径:
bash
which su
输出结果:
bash
/usr/bin/su
然后用全路径执行用户切换:
bash
/usr/bin/su - oracle
这次成功切换到了 oracle 用户。
04 | 小结
遇到堡垒机提示 BH:Command is not permitted、不让执行 su - oracle 时,可以尝试用 su 的全路径来调用。核心思路就是:先 which su 找到真实路径,再用 /usr/bin/su - oracle 完成切换。
关注我,和AI一起成长~