내 UID를 포함/정의하는 /etc/passwd 외에 파일이 있습니까?

내 UID를 포함/정의하는 /etc/passwd 외에 파일이 있습니까?

UID와 GID를 이해해 보세요.
다양한 온라인 독서를 통해 내 UID가 에 저장되어 있다고 믿게 되지만 /etc/passwd, 내가 작업하는 서버에서는 그렇지 않은 것 같습니다.

$ whoami
user1
$ cat /etc/passwd | grep user1
$

/etc/passwd내 UID를 포함할 수 있는 이 파일 외에 다른 파일이 있습니까 ?

(어딘가에 UID가 포함된 파일이 있기 때문에 UID가 GID와 유사하다고 가정합니다. 해당 파일에서 관심 있는 GID를 찾았습니다 /etc/group.)

명령을 사용하여 UID를 얻을 수 있다는 것을 알고 있지만 id -u이 질문에 대해서는 특히 UID가 있는지 알고 싶습니다.문서그것을 포함하고 있습니다.

답변1

"는" /etc/passwd사용자 계정 데이터베이스를 저장하고 쿼리하는 여러 방법 중 하나입니다.

많은 유닉스 계열 시스템에서는이름 서비스 스위치(원래 Solaris에서) 다양한 방법을 사용하여 일부 시스템 이름을 ID로 변환하는 일을 담당합니다.

해당 구성은 일반적으로 /etc/nsswitch.conf.

여기서는 많은 데이터베이스에 대한 항목과 해당 데이터베이스의 처리 방법(그룹, 비밀번호, 서비스, 호스트, 네트워크...)을 찾을 수 있습니다. hosts호스트 이름을 네트워크 프로토콜 주소로 변환하는 데 사용되는 데이터베이스 의 경우 /etc/hosts.

프로세스가 사용자 이름에 대한 정보를 요청할 때(예: 표준 기능 사용 ) 항목을 getpwnam()찾는 데 사용할 방법을 이 파일에서 찾습니다 .passwd

이것이 방법이라면 files조회 /etc/<db>될 것입니다. GNU 시스템에서는 일반적 /lib/<system>/libnss_files.so.<version>으로 동적으로 로드되는 일부 모듈에 의해 이 작업이 수행됩니다.

그러나 NIS+, LDAP, SQL 등 더 많은 것을 가질 수도 있습니다. 이러한 방법 중 일부는 GNU libc에 포함되어 있으며 일부는 별도로 설치할 수 있습니다. Debian 또는 파생 제품에서는 apt-cache search 'NSS module'예제의 출력을 참조하세요.

사용자 데이터베이스가 중앙 집중화된 엔터프라이즈 환경에서 가장 널리 사용되는 중앙 데이터베이스는 NIS이고 그 다음은 NIS+이며 이제는 LDAP 또는 Microsoft의 Active Directory(또는 Unix 복제본)입니다.

존재하는 경우 get{pw/host/grp}...()GNU libc의 함수도 쿼리합니다.이름 서비스 캐시 데몬/run/nscd/socket전체 NSS 스택을 호출하고 백엔드 데이터베이스를 직접 쿼리하는 대신에 . 그런 다음 nscd향후 쿼리 속도를 높이기 위해 캐시에 의해 쿼리가 완료됩니다 . 일부 NSS 모듈은 자체적으로 캐시할 수도 있습니다.

GNU/Linux 시스템에서 널리 사용되는 접근 방식은 다음을 사용하는 것입니다.시스템 보안 서비스( sss). sssd요청을 처리하고 이를 다른 데이터베이스(예: LDAP/AD)로 전달하는 동시에 일부 캐싱도 수행하는 별도의 데몬( )이 함께 제공됩니다 . 그런 다음 대부분의 DB에 작동하는 방법이 /etc/nsswitch.conf있으며 sss백엔드는 sssd구성에서 구성됩니다. sssd이 경우 PAM(인증 담당)이 일반적으로 쿼리도 수행합니다.

이는 일반적으로 명령줄 쿼리 /etc/passwd(또는 /etc/group... /etc/hosts)에서 계정(또는 그룹/호스트...) 정보를 얻는 것이 잘못된 이유를 명확히 하는 데 도움이 됩니다. 대부분의 최신 시스템에는 getent명령 대신(Solaris에서도) 명령 이 있거나 더 편리하게는 perl모든 표준 기능에 액세스하는 데 사용할 수 있는 인터페이스가 있습니다 get<db>*().

$ getent passwd bin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
$ perl -le 'print for getpwnam("bin")'
bin
x
2
2


bin
/bin
/usr/sbin/nologin
$ getent services domain
domain                53/tcp
$ perl -le 'print for getservbyname("domain", "tcp")'
domain

53
tcp
$ perl -le 'print for getservbyname("domain", "udp")'
domain

53
udp

답변2

기술적으로는 그렇습니다어딘가에 파일이 좀 있어요여기에는 주어진 각 사용자 이름에 대한 uid가 포함됩니다.

Linux에서 간단한 로컬 계정을 생성하는 경우 해당 계정은 /etc/passwd필드 #3에 있습니다 :.

그러나 Linux가 ActiveDirectory 인증을 사용하는 경우 다른 서버에서 모든 사용자 이름/uid 정보를 가져온 다음 이를 Linux 시스템의 일부 [텍스트] 파일에 저장합니다. 모르겠습니다. 메모리에 저장될 수도 있습니다.나는 이것의 세부 사항을 알고 싶습니다.

Linux는 여러 로그인 또는 인증 체계를 지원하며 그 중 하나는 AD와 LDAP입니다. LDAP가 사용자 이름과 UID 매핑을 어디에 저장하는지 모르겠습니다.하지만 나는 또한 알고 싶습니다.

그래서...내 UID를 포함/정의하는 /etc/passwd 외에 파일이 있습니까? . 이는 단순한 기존 로컬 /etc/passwd 방법과 사용되는 방법 외에도 Linux가 지원하는 다양한 로그인/인증 방법에 따라 달라집니다. 그럼 다음 질문은Linux에서는 어떤 로그인 인증 방법을 지원하며 어떤 방법이 사용되고 있는지 확인하는 방법을 설명합니다..

관련 정보