You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决无法在同一sudo会话中执行weblogic用户下命令的问题

问题根因

你脚本中写的sudo su - weblogic会启动一个独立的交互式bash会话,当前脚本会阻塞在这一步,直到你手动退出该weblogic会话后,后续的touch、chmod命令才会继续执行——而此时执行用户已经切回原用户djaiswa2,自然没有weblogic属主路径的写入权限,所以触发权限报错。

修复方案

方案1:将待执行命令直接通过参数传给su

无需进入交互式会话,通过-c参数把要执行的命令批量传递给weblogic用户的会话执行:

#!/bin/bash
sudo su - weblogic -c '
touch /opt/middleware/.ssh/authorized_keys
chmod 755 /opt/middleware/.ssh/authorized_keys
'

注意:如果待执行命令里包含单引号,需要提前做转义处理。

方案2:用sudo直接指定执行用户(写法更简洁)

不需要嵌套su命令,直接通过sudo的-u参数指定运行命令的用户:

#!/bin/bash
sudo -u weblogic touch /opt/middleware/.ssh/authorized_keys
sudo -u weblogic chmod 755 /opt/middleware/.ssh/authorized_keys

注意要提前确认djaiswa2用户的sudoers配置中,允许其无密码执行对应weblogic权限的命令,否则执行时会触发密码输入校验。

方案3:多命令场景可拆分脚本调用

如果需要以weblogic执行的命令逻辑较多,可以单独封装为独立脚本,比如存为/opt/middleware/update_ssh_key.sh,赋予执行权限后再调用:

# 单独的weblogic执行脚本 /opt/middleware/update_ssh_key.sh
#!/bin/bash
touch /opt/middleware/.ssh/authorized_keys
chmod 755 /opt/middleware/.ssh/authorized_keys

原调用脚本写法如下:

#!/bin/bash
sudo su - weblogic -s /bin/bash /opt/middleware/update_ssh_key.sh

内容的提问来源于stack exchange,提问作者Eagertolearn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 07:24:02