"명령을 찾을 수 없음" 후에 sudo가 더 이상 비밀번호를 묻는 메시지를 표시하지 않는 이유는 무엇입니까?

"명령을 찾을 수 없음" 후에 sudo가 더 이상 비밀번호를 묻는 메시지를 표시하지 않는 이유는 무엇입니까?

나는 아래의 문제를 관찰합니다.

abc@ubuntu:~$ sudo - i 
[sudo] password for abc: 
sudo: -: command not found
abc@ubuntu:~$ sudo -i
root@ubuntu:~# 

sudo 명령은 "명령을 찾을 수 없음" 오류로 인해 실패한 것으로 보이지만 올바른 옵션을 사용한 다음 sudo 시도에서는 루트 로그인을 얻지만 이번에는 암호를 묻지 않습니다. 왜 이렇게 이상한 행동을 하는 걸까요?

보안 관점에서 이 질문을 드리고 있습니다. "명령을 찾을 수 없음" 후에도 사용자는 여전히 "abc"이며 아마도 관리자가 아닐 수 있습니다. 그/그녀는 sudo 비밀번호를 알 필요조차 없으며, 15분(비밀번호 캐시 시간) 내에 "sudo -i"를 실행하면 "루트" 권한을 얻을 수 있습니다. 아니요?

답변1

첫 번째 경우, 쉘은 sudo실행하려는 명령 뒤에 명령이 있다고 생각하고 -, 그러한 명령이 없기 때문에 명령을 찾을 수 없다고 알려줍니다. 이전 명령을 실행하면 sudo기본적으로 비밀번호를 묻는 메시지가 표시됩니다.

두 번째 경우, 쉘은 옵션을 사용하여 sudo명령을 실행하고 있음을 인식합니다 -i. 첫 번째 명령을 실행하려고 할 때 비밀번호를 올바르게 입력했기 때문에 비밀번호를 다시 묻는 메시지가 표시되지 않습니다. (기본적으로 15분 동안 자격 증명을 캐시합니다.)

답변2

$man sudo
...
Security policies may support credential caching
to allow the user to run sudo again for a period
of time without requiring authentication.  The sudoers
policy caches credentials for 15 minutes, unless
overridden in sudoers(5).  By running sudo with
the -v option, a user can update the cached credentials
without running a command.

관련 정보