sudo -u username -s“cmd arg”는 명령을 찾을 수 없음을 반환합니다 elasticsearch에서 볼 수 있듯이

명령을 실행하는 데 사용했습니다.

sudo -u elasticsearch -s "ulimit -Hn"

그리고 Ubuntu 11.10에서 시도 할 때까지 사용자 elasticsearch에서 볼 수 있듯이 ulimit -Hn 값을 반환했습니다. 거기 반환합니다 :

/bin/bash: ulimit -Hn: command not found

몇 가지 다른 명령을 시도했는데 인수를 사용할 때 항상 “명령을 찾을 수 없습니다”라는 메시지가 나타납니다.

$ sudo -u elasticsearch -s "ls all.sh"
/bin/bash: ls all.sh: command not found

통해 인수가 필요한 명령을 어떻게 실행할 수 sudo있습니까?



답변

큰 따옴표를 제거해야합니다. “ulimit -Hn”이라는 명령을 단일 명령, 공백 및 모두로 실행하려고합니다. 명령 행 -s에서 마지막 sudo옵션 이어야하며 sudo다음의 모든 인수가 전달되어 전달됩니다 $SHELL -c.

sudo -u elasticsearch -s ulimit -Hn

-s현재 방법을 사용하면 공백이있는 인수를 $SHELL명령 줄에서 이스케이프 처리 하여 전달할 수 있으므로 처리 방법 이 변경 된 것 같습니다.

$ touch '/tmp/foo bar'
$ sudo -s rm '/tmp/foo bar'

오래된 인수 처리 방법은 해당 '/tmp/foo bar'인수를 두 개로 나누고 명령을 깨뜨 렸습니다.


답변