如何在 sudo 中執行它?
我有從 php 執行的這一行
sudo -u db2inst1 -s -- "/opt/ibm/db2/current/bin/db2 connect to PLC; /opt/ibm/db2/current/bin/db2 \"update EDU.contact set MOBILE_PHONE = '123'\""
它在 Sudo 版本1.7.2上執行良好。
現在我有了新的伺服器
SUSE Linux Enterprise Server 11 (x86_64)
。沒有 sudo 所以我從儲存庫安裝它(Sudo 版本1.6.9p17)但是知道上面的語法不起作用。它拋出bin/bash: /opt/ibm/db2/current/bin/db2 connect to PLC; /opt/ibm/db2/current/bin/db2 "update EDU.contact set MOBILE_PHONE = '123'": No such file or directory
知道我怎樣才能完成這項工作嗎?
如果我
/opt/ibm/db2/current/bin/db2 connect to PLC; /opt/ibm/db2/current/bin/db2 "update EDU.contact set MOBILE_PHONE = '123'"
在 db2inst1 帳戶下執行,一切正常。
我真的不太清楚你為什麼會收到這個錯誤。我有一個帶有 sudo 1.8.3 的系統,文件清楚地說
sudo -s "echo hi"
應該可以工作,但事實並非如此。我一直這樣做的方式是做同樣的事情
-s [command]
,但手動。sudo sh -c 'echo hi'
或者在你的情況下
sudo -u db2inst1 sh -c "/opt/ibm/db2/current/bin/db2 connect to PLC; /opt/ibm/db2/current/bin/db2 \"update EDU.contact set MOBILE_PHONE = '123'\""
它更兼容,因為
-s
爭論並不總是存在(不幸的是,我有一些非常舊的機器在工作)。編輯:
你得到的錯誤中發生的事情是它正在尋找一個執行檔,該執行檔
db2 "update EDU.contact set MOBILE_PHONE = '123'"
在一個名為的目錄中逐字命名/opt/ibm/db2/current/bin/db2 connect to PLC; /opt/ibm/db2/current/bin
(是的,它作為一個目錄查找db2 connect to PLC;
)。這顯然是不存在的。