
입력해야 하는 비밀번호 수를 줄이기 위해 PAM과 pam_timestamp 모듈을 사용하려고 합니다.
테스트 프로그램을 통해https://learning.oreilly.com/library/view/linux-security-cookbook/0596003919/ch04s01.html#linuxsckbk-CHP-4-SECT-1.2:
#include <security/pam_appl.h>
#include <security/pam_misc.h>
#include <pwd.h>
#include <sys/types.h>
#include <stdio.h>
#define MY_CONFIG "myconfig"
static struct pam_conv conv = { misc_conv, NULL };
main( )
{
pam_handle_t *pamh;
int result;
struct passwd *pw;
if ((pw = getpwuid(getuid( ))) == NULL)
perror("getpwuid");
else if ((result = pam_start(MY_CONFIG, pw->pw_name, &conv, &pamh)) != PAM_SUCCESS)
fprintf(stderr, "start failed: %d\n", result);
else if ((result = pam_authenticate(pamh, 0)) != PAM_SUCCESS)
fprintf(stderr, "authenticate failed: %d\n", result);
else if ((result = pam_acct_mgmt(pamh, 0)) != PAM_SUCCESS)
fprintf(stderr, "acct_mgmt failed: %d\n", result);
else if ((result = pam_end(pamh, result)) != PAM_SUCCESS)
fprintf(stderr, "end failed: %d\n", result);
else
fprintf(stderr, "SUCCESS!\n");
}
Pam 구성 테스트 /etc/pam.d/myconfig
- 이것은 매뉴얼 페이지에서 바로 나온 내용입니다.
auth sufficient pam_timestamp.so verbose
auth required pam_unix.so
session required pam_unix.so
session optional pam_timestamp.so
그런데 테스트 프로그램을 실행하면 항상 비밀번호를 묻는데, 타임스탬프 파일이 생성된 후에는 비밀번호를 묻지 않을 것이라고 예상했습니다.
nfultz@neal-slg2:/tmp/pamapp$ ./a.out
Password:
SUCCESS!
nfultz@neal-slg2:/tmp/pamapp$ ./a.out
Password:
authenticate failed: 7
중요한 경우 Ubuntu 23.04에 있습니다.