나는 아래의 문제를 관찰합니다.
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.