비밀번호가 없도록 구성되지 않은 한 sudo를 사용하여 명령을 실행하지 마십시오.

비밀번호가 없도록 구성되지 않은 한 sudo를 사용하여 명령을 실행하지 마십시오.

이것이 지원 되는지 확실하지 않습니다 sudo. 명령을 실행하고 싶습니다. 이 명령만 NOPASSWD로 구성됩니다. 즉, 명령이 암호 없이 실행될 수 있으면 실행하고 그렇지 않으면 직접 종료하십시오.

지금까지 유일한 옵션은 사용 가능한 모든 명령을 나열하고 sudo -l출력을 수동으로 구문 분석하는 것 같은데, 이는 더러워 보입니다.

다른 옵션이 있나요?

답변1

그다지 예쁘지는 않지만 구문 분석이 부족합니다. sudo -l수행 중인 작업이 대안인지 모르기 때문에 스위치를 사용하여 명령을 실행하면 됩니다 -n.

(비대화형) 옵션은 -nsudo가 사용자에게 비밀번호를 묻는 메시지를 표시하지 않도록 합니다. 명령을 실행하는 데 비밀번호가 필요한 경우 sudo는 오류 메시지를 표시하고 종료됩니다.

예:

me$ sudo -l 
User me may run the following commands on this host:
    (ALL) NOPASSWD: /usr/bin/vim
    (ALL) /usr/bin/nano
me$ sudo -n nano /etc/hosts
sudo: a password is required
me$ echo $?
1
me$ sudo -n vim /etc/hosts
# :q
me$ echo $?
0

sudo문제는 암호가 필요해서 실패했는지, 아니면 실행한 명령이 실패했는지를 종료 코드에서 직접 알 수 없다는 것입니다 . 따라서 출력을 구문 분석해야 합니다. (다행히 오류 메시지는 정적이므로 크게 어렵지는 않습니다. 하지만 현지화에 주의하세요.)

관련 정보