누군가가`ls -l` 명령을 실행할 때마다 왜 / etc / passwd가 사용됩니까?


28

APUE 에서 읽고 호기심을 느끼십시오.

비밀번호 파일은 사용자가 UNIX 시스템에 로그인 할 때마다 그리고 누군가가 ls -l명령을 실행할 때마다 사용됩니다 .


3
참고로 strace ls -l나중에 시도 하면 openat(AT_FDCWD, "/etc/passwd", O_RDONLY|O_CLOEXEC) = 4진술이 표시됩니다.

7
물론 오늘날 현실은 더 복잡합니다. /etc/passwdBSD 에는 없습니다 . 활동적인 사람 nscd은 사물을 바꿀 것입니다. NSS도 마찬가지입니다. 따라서이 질문은 7 판 세계관을 기반으로합니다.
JdeBP

4
그렇다면 유닉스 환경에서 @JdeBP 고대 프로그래밍 ?
앤드류 헨리

@JdeBP 아닌가요 ? 많은 프로그램 (스크립트 및 바이너리)이 / etc / passwd의 존재에 의존하여 (아마도 잘못되었지만 여전히) 중단 될 것이라고 생각했기 때문에 놀랐습니다.
피터-모니카

FILES 섹션을 포함하여 해당 매뉴얼 페이지를 올바르게 읽으면 공개되지 않습니다. (-:
JdeBP

답변:


50

파일 시스템은 숫자 UID (사용자 ID) 및 GID (그룹 ID) 값을 사용자 이름 및 그룹 이름 (문자열)이 아닌 파일과 직접 연관시킵니다. 따라서 ls -l명령 (및 파일의 사용자 및 그룹 소유자를 표시하는 다른 명령)은 어딘가에서 사용자 및 그룹 이름을 가져와야합니다. /etc/passwd파일은 하나의 소스 (아마도 원본과 가장 일반적인 소스)입니다. 매뉴얼은 이것을 PASSWD (5) (즉, /etc/passwd파일 의 매뉴얼 페이지 )에서 제공합니다.

ls (1)와 같은 많은 유틸리티는 사용자 ID를 사용자 이름에 매핑하는 데 사용합니다.


17
답을 보완하기 위해 : POSIX는에 대한 옵션 -n을 지정 합니다 ls. 이렇게하면 UID 및 GID가 사용자 이름 및 그룹 이름으로 변환되지 않습니다. 내가 테스트 한 ls -nGNU 핵심 유틸 '로 ls모두 접근 방지 옵션 /etc/passwd/etc/group같은 예상을.
pabouk
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.