루트 비밀번호를 변경한 후에도 /etc/nshadow 파일이 여전히 존재하는 이유는 무엇입니까?

루트 비밀번호를 변경한 후에도 /etc/nshadow 파일이 여전히 존재하는 이유는 무엇입니까?

Linux에서 루트 비밀번호를 변경한 후 몇 가지 예외를 발견했습니다. 루트 비밀번호를 변경한 후 입력 해 보면 ls -al /etc/ | grep shadow다음과 같습니다.

-r--------  1 root root   653 Mar  9  2018 gshadow
-r--------  1 root root   800 Jul 25 06:43 shadow
-r--------  1 root root   796 Jul 25 06:43 shadow-

그러나 때로는 결과가 위와 다른 경우도 있습니다.

-r--------  1 root root   653 Mar  9  2018 gshadow
-r--------  1 root root   ?   Jul 25 06:43 nshadow
-r--------  1 root root   ?   Jul 25 06:43 shadow
-r--------  1 root root   ?   Jul 25 06:43 shadow-

나는 단지 예를 보여주고 있을 뿐이며 이러한 파일(nshadow,shadow,shadow-)의 정확한 크기를 기억할 수 없습니다.

내가 조사한 바에 따르면 /etc/nshadow비밀번호가 변경되면 passwd에 의해 기록되고 passwd의 이름이 변경됩니다 /etc/nshadow. /etc/shadow그러나 이것이 올바른지는 모르겠습니다.

어쨌든, 이것은 무엇입니까 /etc/nshadow? 이 파일이 생성되는 이유는 무엇입니까? 내게 이유를 말해줘 :(

답변1

예, 이 passwd명령은 먼저 파일의 수정 사항을 /etc/shadow전체로 쓰고 nshadow 파일이 실제로 디스크에 기록되었는지 확인한 다음 이름 을 /etc/nshadow바꿉니다 .fsync()/etc/nshadow/etc/shadow

/etc/shadow이는 가능한 가장 짧은 시간이라도 파일이 불완전할 가능성을 없애기 위해 수행됩니다 . POSIX 사양에는 단일 파일 시스템 내에서 파일 이름 바꾸기 작업을 수행해야 한다고 명시되어 있습니다.원자즉, 다른 작업에서는 이름 바꾸기 작업을 "아직 시작되지 않음" 또는 "완전히 완료됨"으로만 처리해야 하며 어떠한 종류의 "진행 중" 중간 상태로도 처리해서는 안 됩니다.

이 명령을 사용하여 오래된 비섀도 비밀번호 파일을 섀도우 형식으로 변환하면 pwconv명령은 및도 생성합니다 /etc/npasswd. /etc/nshadow일부 버전에서는 pwconv시스템 관리자가 이러한 파일을 수동으로 해당 위치로 이동해야 할 수도 있습니다.

시스템에 존재하는 경우 /etc/nshadow과거에 실행된 명령의 남은 부분일 수도 있고 일부 비밀번호 변경 작업이 끝날 때 시스템 호출이 실패하여 존재할 수도 있습니다. 이러한 오류는 파일 시스템 손상이나 기타 문제가 발생할 수 있음을 나타냅니다.pwconvrename("/etc/nshadow", "/etc/shadow")

파일의 타임스탬프가 이면 nshadowJul 25 06:43당시 시스템에서 무슨 일이 일어났는지 알고 싶을 수도 있습니다. 해결된 문제가 있습니까? 아니면 pwconv어떤 이유로든 이 명령을 실행한 사람이 있습니까?

일부 자동화 도구를 사용하여 루트 비밀번호를 변경하는 경우 자동화 도구가 실제로 수행하는 작업이 무엇인지 정확히 알고 싶을 수 있습니다. 어쩌면 pwconv어떤 이유로든 작동할 수도 있습니다.

관련 정보