"getent passwd"에 따르면 루트 계정과 없음 계정이 두 개 있는 이유는 무엇입니까?

"getent passwd"에 따르면 루트 계정과 없음 계정이 두 개 있는 이유는 무엇입니까?

machinectlUbuntu 20.04 호스트에서 다음을 사용하여 추가 출력을 검색합니다.

  • machinectl pull-tar https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64-root.tar.xz focal
  • machinectl start focal
  • systemd-run --machine focal --pty /bin/bash

"초점" 클라우드 이미지를 사용할 수 있는 한 이를 재현할 수 있어야 합니다.

출력은 다음과 같습니다.

root@ubuntu:/# getent passwd|grep -P '^(nobody|root):'
root:x:0:0:root:/root:/bin/bash
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
root:x:0:0:root:/root:/bin/sh
nobody:x:65534:65534:nobody:/:/usr/sbin/nologin
root@ubuntu:/# cat /etc/passwd|grep -P '^(nobody|root):'
root:x:0:0:root:/root:/bin/bash
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin

이상하게도 getent shadow같은 차이가 표시되지 않습니다.

root@ubuntu:/# getent shadow|grep -P '^(nobody|root):'
root:*:18697:0:99999:7:::
nobody:*:18697:0:99999:7:::
root@ubuntu:/# cat /etc/shadow|grep -P '^(nobody|root):'
root:*:18697:0:99999:7:::
nobody:*:18697:0:99999:7:::

누군가 여기서 무슨 일이 일어나고 있는지 설명해 줄 수 있습니까? getent passwd및 에 대해 두 개의 별도 항목이 생성되는 이유는 무엇입니까 ? ! 또한 이러한 항목의 쉘이 다른 이유는 무엇입니까?rootnobodyroot

답변1

이 두 항목이 존재하는 이유는 및 소스를 NSS모두 갖기 위해서 입니다.passwdsystemd

/etc/nsswitch.conf파일에서 이를 확인할 수 있습니다 . 마지막 두 줄에는 root및 가 포함되어 있으며 nobody두 사용자의 첫 번째 인스턴스는 에서 나옵니다.getent passwdsystemd/etc/passwd

관련 정보