허용되지 않는 명령을 실행할 때 sudo가 비밀번호를 묻는 메시지를 표시하지 않도록 방지 잘못된 명령을 실행하면

sudo를 통해 비밀번호없이 특정 명령을 실행할 수있는 그룹 권한을 부여했습니다. 사용자 중 한 명이 오타를하거나 잘못된 명령을 실행하면 시스템에서 암호를 입력하라는 메시지가 표시되고 오류가 발생합니다. 이것은 사용자를 혼란스럽게하므로 암호를 묻는 메시지 대신 오류를 표시하고 싶습니다. 이게 가능해?

내 sudoers 파일의 예는 다음과 같습니다.

%mygroup ALL=(ALL) NOPASSWD:/usr/local/bin/myscript.sh *

그들이 잘못된 스크립트를 실행할 때의 예 :

# sudo /usr/local/bin/otherscript.sh
[sudo] password for user:
Sorry, user user is not allowed to execute '/usr/local/bin/otherscript.sh' as root on <hostname>.

원하는 출력 :

Sorry, user user is not allowed to execute '/usr/local/bin/otherscript.sh' as root on <hostname>. Please check the command and try again.

비밀번호 프롬프트가 표시되지 않습니다.

내 google-fu가 실패했으며 사용자 명령을 실행할 수있는 경우 비밀번호를 요청하지 않은 결과 만 반환합니다 .



답변

빠른 읽기에서 sudo(8)

   -n          The -n (non-interactive) option prevents sudo from
               prompting the user for a password.  If a password is
               required for the command to run, sudo will display an error
               message and exit.

그리고 의심 자들에게 :

# grep jdoe /etc/sudoers
jdoe    ALL=(ALL) NOPASSWD: /bin/echo
#

따라서 테스트 :

% sudo echo allowed
allowed
% sudo -n ed
sudo: a password is required
% sudo ed

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

Password:

따라서 이러한 사람들 aliassudo위한 암호는 암호 프롬프트를 방지하기 위해 트릭을 수행 할 것입니다. 이제 이것이 커스텀 컴파일이 필요한 이유 sudo는 모르겠지만 매뉴얼을 읽었습니다.


답변

나를 위해 일한 한 가지 (Sudo 버전 1.8.17p1) 문제의 일부만을 만족시키는 것은 암호 시도 횟수를 0으로 설정하는 것입니다.

Defaults:%mygroup passwd_tries = 0

이것은 암호를 요구하는 명령이 시도 될 때 코드 1로 sudo를 종료시킵니다. 그러나 어떤 종류의 오류 메시지도 생성하지 않습니다.


답변

당신은 할 수 없습니다.

인증을 받기 전까지는 본인이 누구인지 알 수 없으며 기본적으로 비밀번호없이 인증 할 수 없습니다.

USB 키, 지문 스캐너, 음성 인증, 얼굴 인식 또는 기타 여러 가지를 사용하도록 인증을 변경할 수 있지만 요점은 동일합니다.

sudo를 인증하기 전에 인증없이 AND 인증없이 인증 할 수 없습니다. 실행할 수있는 것과 실행할 수없는 것을 알려주는 비즈니스가 없습니다.


답변

@StrongBad는 답변이 될만한 의견을 제시했습니다.

가장 좋은 해결책은 항상 sudo올바른 매개 변수로 호출하는 래퍼 스크립트를 작성하는 것 입니다. (포함 -n)

랩퍼 스크립트는 인수 구문 분석 등을 수행하여 호출 된 sudo 스크립트가 가능한 작게되어 버그가 발생할 가능성이 줄어 듭니다.


답변

이건 불가능 해. 유일한 방법은 소스 코드를 변경하고 자신의 포크를 컴파일하는 것입니다.sudo


답변