비밀번호 없이 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