sudo는 사용자가 입력한 루트 비밀번호를 어떻게 기억합니까?

sudo는 사용자가 입력한 루트 비밀번호를 어떻게 기억합니까?

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 sudoFILES 섹션을 살펴 보십시오 .

/var/lib/sudo 타임스탬프가 포함된 디렉터리

그리고SECURITY NOTES

sudo는 타임스탬프 디렉터리의 소유권을 확인합니다(기본값은 /var/lib/sudo) [...]

(데비안 6.0.4 매뉴얼 페이지)

관련 정보