これを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

これを機能させるにはどうしたらよいか、何かアイデアはありますか?

db2inst1 アカウントで実行すると、/opt/ibm/db2/current/bin/db2 connect to PLC; /opt/ibm/db2/current/bin/db2 "update EDU.contact set MOBILE_PHONE = '123'"すべて正常に動作します。

答え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;

関連情報