【发布时间】:2016-01-28 08:47:15
【问题描述】:
我正在尝试以网格用户身份运行一个命令。
Code-1 不工作。授予权限不可用错误。
code-2 正在运行。有什么问题?
代码 1
bash "start ora.cssd" do
code <<-EOH
/u01/app/grid/11.2.0.4/bin/crsctl start resource ora.cssd -init
EOH
user "grid"
end
代码-2
bash "start ora.cssd" do
code <<-EOH
sudo su - grid -c "/u01/app/grid/11.2.0.4/bin/crsctl start resource ora.cssd -init"
EOH
end
我无法理解为什么 bash 无法在 code-1 sn-p 中以网格用户身份运行该命令
code-1 sn-p 的准确错误日志:
Recipe: Oracle11G::startGridservices
* execute[start ora.cssd] action run[2015-04-21T14:31:43+00:00] INFO: Processing execute[start ora.cssd] action run (Oracle11G::startGridservices line 4)
================================================================================
Error executing action `run` on resource 'execute[start ora.cssd]'
================================================================================
Errno::EACCES
-------------
Permission denied - /u01/app/grid/11.2.0.4/bin/crsctl start resource ora.cssd -init
==========================
我以 root 用户运行上述命令,但没有出现权限被拒绝问题。
su -c "/u01/app/grid/11.2.0.4/bin/crsctl 启动资源 ora.cssd -init" 网格
CRS-5702:资源“ora.cssd”已在“ip-10-10-10-10”上运行 CRS-4000:命令启动失败,或完成但出现错误。
【问题讨论】:
-
code和user关键字的顺序重要吗?你到底得到了什么错误? -
两者的主要区别在于第二个是登录shell(
su -),它有效地加载了使用环境,第一个与su -c "command " grid相同,继承了厨师环境,所以我高度怀疑你正在运行的脚本需要这个用户的环境变量。但是来自厨师的有效错误日志会有所帮助(可能使用-l debug来获取更多信息(非常冗长) -
我编辑了我的问题,但确实有错误。如果我从命令提示符运行,该特定命令可以与用户网格一起正常工作
-
@SASI 尝试使用
su -c "the full command" grid以root 身份运行它,看看会发生什么(我很确定你会在那里获得访问被拒绝,因为它尝试写入主目录或类似的东西) -
正在询问网格用户的密码
标签: ruby bash chef-infra recipe