Linux에서 sudo를 사용하면 루트 비밀번호를 묻는 메시지가 표시되지만 처음 실행할 때만 해당됩니다. 다른 sudo 명령을 실행하면 이전에 비밀번호를 입력했음을 기억하고 이를 묻지 않습니다.
thomas@ubuntu:~$ sudo id
[sudo] password for thomas: ******
uid=0(root) gid=0(root) groups=0(root)
thomas@ubuntu:~$ sudo id
uid=0(root) gid=0(root) groups=0(root)
sudo는 어떻게 합니까? 이 정보는 어디에 저장되나요? 내 생각에는 터미널 ID(예: pts/1)를 기억하지만 어디에 저장되어 있습니까? 첫 번째 sudo 프로세스는 이 명령을 실행한 후 종료됩니다. 그렇죠?
sudo가 setuid 프로그램이라는 것을 알고 있으므로 항상 루트 권한을 가지고 있지만 사용자가 비밀번호를 입력한 정보를 저장할 적절한 장소가 아직 생각나지 않습니다. 데몬 프로세스가 관련되어 있나요?
답변1
이 정보는 어디에 저장되나요?
그 아래에 있거나 tty 번호로 정렬된 파일 /var/db/sudo
이 /var/run/sudo
있는 사용자 이름 디렉토리를 찾을 수 있습니다.
비밀번호를 다시 입력해야 할 때까지 세션이 지속되는 기간을 포함하여 부여되는 실제 권한은 sudoer 설정 방법에 따라 다릅니다. 다양한 것을 허용/제한하는 설정이 있지만 타임스탬프만 저장하는 파일에는 저장되지 않습니다. 세션이 지속되는 기간 또는 sudo가 비밀번호를 다시 입력해야 하는 시기는 현재 시간의 증가와 이 디렉터리의 세션 타임스탬프, 그리고 세션 지속을 허용하도록 sudo가 설정된 기간에 따라 결정됩니다.
답변2
man sudo
FILES 섹션을 살펴 보십시오 .
/var/lib/sudo 타임스탬프가 포함된 디렉터리
그리고SECURITY NOTES
sudo는 타임스탬프 디렉터리의 소유권을 확인합니다(기본값은 /var/lib/sudo) [...]
(데비안 6.0.4 매뉴얼 페이지)