이것이 지원 되는지 확실하지 않습니다 sudo
. 명령을 실행하고 싶습니다. 이 명령만 NOPASSWD로 구성됩니다. 즉, 명령이 암호 없이 실행될 수 있으면 실행하고 그렇지 않으면 직접 종료하십시오.
지금까지 유일한 옵션은 사용 가능한 모든 명령을 나열하고 sudo -l
출력을 수동으로 구문 분석하는 것 같은데, 이는 더러워 보입니다.
다른 옵션이 있나요?
답변1
그다지 예쁘지는 않지만 구문 분석이 부족합니다. sudo -l
수행 중인 작업이 대안인지 모르기 때문에 스위치를 사용하여 명령을 실행하면 됩니다 -n
.
(비대화형) 옵션은
-n
sudo가 사용자에게 비밀번호를 묻는 메시지를 표시하지 않도록 합니다. 명령을 실행하는 데 비밀번호가 필요한 경우 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
문제는 암호가 필요해서 실패했는지, 아니면 실행한 명령이 실패했는지를 종료 코드에서 직접 알 수 없다는 것입니다 . 따라서 출력을 구문 분석해야 합니다. (다행히 오류 메시지는 정적이므로 크게 어렵지는 않습니다. 하지만 현지화에 주의하세요.)