如何在 sudo 中運行它?

如何在 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 帳戶下運行,一切都會正常。

答案1

我真的不太確定你為什麼會收到這個錯誤。我有一個帶有 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;一個目錄)。這顯然不存在。

相關內容