Linuxはユーザーをどのように識別しますか?

Linuxはユーザーをどのように識別しますか?

私は、2人のユーザーが同じ名前を持っている場合、ファイル権限を強制するときにシステムが実際に別のユーザーであるかどうかをどうやって知ることができますか?

/home/old-arch新しい元のパーティションを持つようにシステムを再インストールする前に(自分だけ/homeのパーティションがあり、フォーマットしない)、家の名前を変更したいので、/home/arch新しいシステムが私にそのパーティションを提供するかどうか疑問に思います。ファイルを以前の権限で認識するか、別のものとして認識しますarch

ベストアンサー1

/etc/{shadow,passwd}同じユーザー名を持つ複数のユーザーを強制的に使用すると、同じ名前を持つ複数の項目が存在します。

$ cat /etc/passwd
...
a:x:1001:1002::/home/a:/bin/bash
a:x:1002:1003::/home/b:/bin/bash

# cat /etc/shadow
a:...:17702:0:99999:7:::
a:...:17702:0:99999:7:::

そのユーザーとしてログインしようとすると、一致する最初のユーザーとしてログインします。

$ ssh a@<host>
Password:
$ id
uid=1001(a) gid=1002(a) groups=1002(a)
$ pwd
/home/a

同じ名前で2番目のユーザーとしてログインできません。

Linuxはユーザー名ではなくuidでユーザーを追跡します。

ただし、2つの異なるユーザー名が同じユーザーIDである可能性があります。別のバージョンを検討してください/etc/passwd

$ cat /etc/passwd
...
a:x:1001:1002::/home/a:/bin/bash
b:x:1001:1002::/home/b:/bin/bash

ausernameとusernameの両方のb3番目の列は1001です。これはuid /ユーザーIDです。これで、1人a以上のユーザーがbログインすると(他のパスワードを使用しても)すべてが「ユーザー1001」になり、オペレーティングシステムのa観点からユーザーとして表示されます。ここで最初に一致するものも返されます(ほとんどの場合)。

$ ssh a@host
Password: <a's password>
$ id
uid=1001(a) gid=1002(a) groups=1002(a)

$ ssh b@host
Password: <b's password>
$ id
uid=1001(a) gid=1002(a) groups=1002(a)

と両方ともuidであり、auidとして利用可能なリソースにアクセスできます。b10011001

おすすめ記事