「getent passwd」によると、rootアカウントとnoneアカウントが2つあるのはなぜですか?

「getent passwd」によると、rootアカウントとnoneアカウントが2つあるのはなぜですか?

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と2つの別々のエントリが生成されるのはなぜですか? !また、これらのアイテムのシェルが異なるのはなぜですか?rootnobodyroot

答え1

この 2 つの項目が存在する理由は、およびソースの両方をNSS持つためです。passwdsystemd

/etc/nsswitch.confファイルでこれを確認できます。最後の2行にはとrootが含まれており、nobody両方のユーザーの最初のインスタンスはから来ます。getent passwdsystemd/etc/passwd

関連情報