sudoers 조건부/콤보 명령이 가능합니까?

sudoers 조건부/콤보 명령이 가능합니까?

나는 이런 식으로 sudo를 허용하고 싶다:

myuser ALL=NOPASSWD:/usr/bin/pkill -fx "/usr/sbin/nethogs -v 3 -s" || /usr/sbin/nethogs -v 3 -s

그래서 실행 중인 nethogs 인스턴스는 하나만 얻습니다.

visudo는 이를 수락하지만 비밀번호 없이는 이러한 명령을 실행할 수 없습니다...

실패한 시도:

sudo '/usr/bin/pkill -fx "/usr/sbin/nethogs -v 3 -s" || /usr/sbin/nethogs -v 3 -s'
sudo /usr/bin/pkill -fx "/usr/sbin/nethogs -v 3 -s" || sudo /usr/sbin/nethogs -v 3 -s

추신: 이 버전의 nethogs는 sf.net의 cvs에서 컴파일되었습니다.

답변1

파일에서는 프로그램이나 스크립트의 이름이나 경로(및 선택적으로 인수)만 사용할 수 있습니다. sudoers와 같은 셸 구성은 ||작동하지 않습니다.
인용 man sudoers:

command name ::= file name |
                 file name args |
                 file name '""'

이 문제를 해결하는 가장 쉬운 방법은 일련의 명령을 실행하는 스크립트를 생성하고 루트에서만 쓸 수 있도록 설정한 다음 를 통해 실행할 수 있는 권한을 부여하는 것입니다 sudo.


맨페이지에는 실제로 하위 쉘에서 명령을 실행하는 예제가 나와 있지만 구성 sudo에서 이를 허용하는 방법을 찾지 못했습니다 .sudoerssudo-users 메일링 리스트) .

관련 정보