/etc/passwd에 없는 프로세스의 uid

/etc/passwd에 없는 프로세스의 uid

. /proc​다른 값 중에서 나는 uid의 모든 프로세스에 대해 를 구문 분석합니다 /proc/$pid/status. 나중에 프로세스의 uid를 내가 구문 분석한 사용자 이름에 매핑합니다 /etc/passwd. 그러나 드물지만 사용자 이름을 찾을 수 없기 때문에 프로그램이 충돌하는 경우가 있습니다. 완전한 uid -> 사용자 이름 매핑을 얻으려면 다른 파일도 구문 분석해야 합니까?

답변1

Linux는 모듈식 계정 데이터베이스를 지원합니다. '파일' 데이터베이스(/etc/passwd) 외에도 사용자 계정은 SSSD, BDB, 네트워크 데이터베이스(LDAP, YP, NIS, Hesiod, Active Directory, SQL)에 저장될 수 있습니다. 데이터베이스 모듈 자체에 의해 동적으로 생성됩니다(systemd DynamicUsers).

이 작업을 수행하려면 다음을 수행해야 합니다.절대/etc/passwd 및 기타 파일을 직접 구문 분석합니다(특별히 로컬 사용자 관리 도구를 만들지 않는 한).

다음과 같은 libc 제공 함수를 사용해야 합니다.getpwuid()또는getgrgid()사용자 이름과 UID를 조회하려면 쉘스크립트에서 getent또는 idCLI 도구를 사용하여 조회를 수행해야 합니다.

일반적으로 매핑이 실패하더라도 계정이 삭제되었거나 프로세스가 자체 UID 범위를 가진 컨테이너에 속할 수 있으므로 충돌해서는 안 됩니다. 그런 일이 발생하면 UID를 표시하십시오.

관련 정보