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;이것은 분명히 존재하지 않습니다.

관련 정보