승인되지 않은 명령을 실행할 때 sudo가 비밀번호를 묻는 메시지를 표시하지 않도록 방지

승인되지 않은 명령을 실행할 때 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가 실패하고 사용자가 비밀번호를 묻지 않는 경우에만 결과를 반환합니다.명령이 실행되도록 허용합니다.

답변1

빠른 읽기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:

따라서 이러한 사람들에게는 비밀번호 프롬프트를 방지하는 데 도움이 될 수 있습니다 alias. sudo이제 왜 사용자 정의 컴파일이 필요한지 sudo모르겠습니다. 그냥 매뉴얼을 읽었습니다.

답변2

나에게 도움이 되었지만(Sudo 버전 1.8.17p1) 귀하의 질문 중 일부만 만족한 것은 비밀번호 시도 횟수를 0으로 설정하는 것이었습니다.

Defaults:%mygroup passwd_tries = 0

이로 인해 비밀번호가 필요한 명령을 시도할 때 sudo가 코드 1로 종료됩니다. 그러나 어떤 종류의 오류 메시지도 생성하지 않습니다.

답변3

당신은 할 수 없습니다.

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

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

인증하지 않으면 인증할 수 없습니다.그리고인증하기 전에 sudo가 실행할 수 있는 것과 실행할 수 없는 것을 알려줄 필요가 없습니다.

답변4

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

관련 정보