리눅스에서 비밀번호 데이터베이스 파일(/etc/passwd)을 변경할 수 있나요?

리눅스에서 비밀번호 데이터베이스 파일(/etc/passwd)을 변경할 수 있나요?

/etc/passwd비밀번호 데이터베이스 파일( )을 다른 파일로 변경할 수 있나요 ? 이 인증 메커니즘은 내부적으로 어떻게 작동합니까? pam 에 의존합니까?

답변1

당신 말이 맞습니다: /etc/passwd그리고 PAM의 일부인 /etc/shadow에서 상담을 받습니다 . pam_unix.so적어도 최신 Linux에서는 그렇습니다. 패치를 통해 이를 변경할 수 있습니다 pam_unix.so. 맨페이지를 믿으려면 시스템 데이터베이스의 위치를 ​​변경할 수 없습니다.

그리고 당신은 정말로 원하지 않습니다. /etc/passwd인증에만 사용되는 것이 아니라 (역) 이름 확인 및 사용자의 전체 이름, 셸 등과 같은 항목을 조회하는 데도 사용됩니다. 이름과 위치는 너무 표준화되어 있으므로 이동하면 PAM 외부의 문제가 거의 확실하게 중단됩니다. 예상했던 것보다 훨씬 더 많은 패치를 적용해야 합니다.

업데이트:보안을 위해 파일을 숨기려는 경우에는 /etc/{passwd,shadow,group}걱정하지 마세요. 모호함에 의한 보안은 정책으로서 거의 도움이 되지 않습니다. 그것들을 그대로 두고 나머지 정책을 강화하십시오.

업데이트: 가능한 해결책

다른 사용자/그룹 데이터베이스 세트에 액세스해야 하는 맞춤형 소프트웨어가 있는 경우 관련 PAM 및 NSS 모듈과 패치의 복사본을 만들 수 있습니다.그들을사용자 정의 데이터베이스를 사용합니다. 원본 Unix 데이터베이스는 그대로 유지되므로 소프트웨어가 혼동되지 않습니다. 하지만 필요할 때마다 사용자 정의 모듈을 사용하고 자신에게 적합한 정책을 사용하도록 PAM 및 NSS를 설정할 수 있습니다.

유닉스 데이터베이스를 기본적으로 깨끗한 상태로 유지하면 원하는 것을 얻을 수 있습니다. 이것이 PAM/NSS 모듈이 하는 radius일과 거의 같습니다 .ldap추가의(대체 아님) 자격 증명 및 사용자/그룹 정보의 소스입니다.

한 단계 더 나아가서 PAM 및 NSS로 돌아가서 unix 데이터베이스 조회를 완전히 비활성화할 수 있습니다. 오래된 소프트웨어를 위해 파일을 그대로 두십시오(당연히 사용자/그룹 데이터베이스에 대한 보기는 정확하지 않지만 적어도 깨지지는 않습니다).

답변2

당신이 찾고 있는 것은 모듈입니다 pam_pwdfile. Debian/Ubuntu에서 패키지는 다음과 같습니다 libpam-pwdfile(RedHat 파생 배포판에 대해서는 확실하지 않음).

패키지에 포함 된 README설명서에는 사용 방법이 설명되어 있습니다.

답변3

기본적으로 가능한지는 잘 모르겠지만 약간의 해킹이 있으면 확실히 가능합니다. 이렇게 하려면 다음을 수행해야 합니다.

  1. nsswitch 라이브러리(/lib/libnss_files.so 또는 libnss_db.so - /etc/nsswitch.conf 확인)를 조정/해킹하여 다른 파일을 읽도록 하십시오.
  2. pam_unix 모듈을 조정/해킹하여 다른 파일을 읽을 수 있도록 하세요.

답변4

NIS 또는 LDAP를 사용하여 사용자를 인증합니다. 해당 비밀번호는 /etc/{password/shadow} 파일에 저장되지 않습니다.

관련 정보