読むだけでちょっと賢くなる、架空のまとめスレ

【疑問】/etc/passwd にパスワードが書いてない。passwd・shadow・group の各欄と x・!・*、getent【LPICレベル1】

18レスカテゴリ:Linux
1: 名無しさん

/etc/passwd を開いたら、パスワードのところが x になってた
パスワードはどこにあるん?

2: 名無しさん

前提のおさらい。ファイルには所有者とグループがあって、chown・chgrp で変える。グループに入ってる人は、グループの権限でファイルを使える

3: 名無しさん

>>1
/etc/shadow にある。/etc/passwd は誰でも読めるから(試したら -rw-r--r-- で root の持ち物)、パスワードの暗号化した値は root と shadow グループしか読めない /etc/shadow(-rw-r-----)に分けてある。x は「shadow を見てね」の印

4: 名無しさん

>>3
一般ユーザーで /etc/shadow を開こうとしたら Permission denied やった

5: 名無しさん

>>1
/etc/passwd の欄は?

6: 名無しさん

>>5
: で区切った7つ
ユーザー名 : パスワード(x) : UID : GID : コメント : ホームディレクトリ : ログインシェル
root:x:0:0:root:/root:/bin/bash
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin

7: 名無しさん

>>6
UID 0 が root。Debian の /etc/login.defs は UID_MIN 1000 で、普通のユーザーは1000から。それより小さいのは daemon などのシステム用で、試したマシンでは23個あった

8: 名無しさん

>>6
シェルが /usr/sbin/nologin のユーザーは?

9: 名無しさん

>>8
ログインさせないためのアカウント。nologin を動かしたら This account is currently not available. と出て終了ステータス1。/bin/false を使うこともある

10: 名無しさん

>>3
/etc/shadow の欄は?

11: 名無しさん

>>10
9つ(shadow の man)
ユーザー名 : 暗号化したパスワード : 最後に変えた日 : 変えられるまでの最短日数 : 変えなあかん最長日数 : 警告する日数 : 期限が切れてから使える日数 : アカウントの期限 : 予約
日付の欄は UNIX 時間の起点から数えた日数。最後に変えた日が0なら、次にログインしたときに変更を求められる

12: 名無しさん

>>11
日数で持つんか。1日は86400秒やから、20000日なら

13: 名無しさん

>>11
パスワードの欄の印
先頭が !:ロックされてる(passwd -l で付く)。後ろに元の値が残ってて、外せば戻る
* や ! だけ:パスワードでログインできない(SSH の鍵など他の方法は使えることがある)
空:パスワードなしでログインできてしまう
値の先頭の $y$ は yescrypt(Debian の既定)、$6$ は SHA-512

14: 名無しさん

>>2
/etc/group は?

15: 名無しさん

>>14
4つの欄。グループ名 : パスワード : GID : メンバー(, 区切り)
たとえば sudo:x:27:user という行なら user が sudo グループに入ってる(試したマシンの sudo は sudo:x:27: でメンバーなし)。ユーザーの最初のグループ(/etc/passwd の GID)はここのメンバーに書かれへんことが多い。グループのパスワードは /etc/gshadow

16: 名無しさん

>>6
ファイルを直接見る代わりに使うのは?

17: 名無しさん

>>16
getent passwd root、getent group sudo、getent passwd 1000 みたいに getent。/etc の下だけやなく、LDAP など /etc/nsswitch.conf で決めた場所からも探してくれる。直接直すなら vipw・vigr で、ほかの人と同時に書き換えないようにする

18: 名無しさん

>>3
passwd は7つで x、shadow は9つで日数、group は4つ。! はロック、* はパスワードなし、調べるのは getent。これで読める

管理人のひとこと