私は、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
a
usernameとusernameの両方のb
3番目の列は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であり、a
uidとして利用可能なリソースにアクセスできます。b
1001
1001