machinectl
Ubuntu 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つの別々のエントリが生成されるのはなぜですか? !また、これらのアイテムのシェルが異なるのはなぜですか?root
nobody
root
答え1
この 2 つの項目が存在する理由は、およびソースの両方をNSS
持つためです。passwd
systemd
/etc/nsswitch.conf
ファイルでこれを確認できます。最後の2行にはとroot
が含まれており、nobody
両方のユーザーの最初のインスタンスはから来ます。getent passwd
systemd
/etc/passwd