총 길이 DRuseradd --no-log-init
: [GNU/Linux [Debian]에서 실제로 어떻게 사용하나요?
이 옵션에 대해 읽은 명령 man
과 페이지는 info
다음과 같습니다. »사용자는 파일 ⁄ 출력 에 나열되지 않습니다 lastlog
.faillog
«. 나는 이 PAM
모듈이 실제 로그인 작업의 대부분을 담당한다는 것을 알고 있습니다. 나는 이해 lastlog
하고 faillog
명령하며 후자를 통해 로그인 시도 횟수 등을 설정할 수 있다는 것을 알고 있습니다.
또한 잘못된 로그인 시도가 기록된다는 것도 알고 있습니다 /var/log/utmp
. 이것이 나의 힘을 강화한다의심하다PAM
이 명령은 모듈이 작업을 인계받기 전 "나머지" 명령입니다.
답변1
당신이 보면useradd.c 소스조금은 다음을 보여줍니다.
--no-log-init
명령줄 스위치가 설정되었다고 가정하면 faillog_reset
및 lastlog_reset
함수가 호출됩니다.
if ((!lflg) && (getpwuid (user_id) == NULL)) {
faillog_reset (user_id);
lastlog_reset (user_id);
이 비트가 호출 되면 lastlog_reset
파일이 수정됩니다 lastlog
.
fd = open (LASTLOG_FILE, O_RDWR);
if ( (-1 == fd)
|| (lseek (fd, offset_uid, SEEK_SET) != offset_uid)
|| (write (fd, &ll, sizeof (ll)) != (ssize_t) sizeof (ll))
|| (fsync (fd) != 0)
|| (close (fd) != 0)) {
위의 내용은 lastlog
읽기 및 쓰기를 위해 열려 있는 파일( O_RDWR
)과 if
파일이 성공적으로 열렸는지 확인한 다음 파일에서 위치를 찾고 write
새 사용자의 정보를 해당 파일에 쓰는 명령문을 보여줍니다. 그런 다음 파일이 닫힙니다.
이를 토대로 이 옵션이 사용자의 UID가 lastlog
"데이터베이스" 파일에 추가되는지 여부를 제어한다고 가정합니다.