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 '""'

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


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

관련 정보