/etc/passwd を開いたら、パスワードのところが x になってた
パスワードはどこにあるん?
【疑問】/etc/passwd にパスワードが書いてない。passwd・shadow・group の各欄と x・!・*、getent【LPICレベル1】
前提のおさらい。ファイルには所有者とグループがあって、chown・chgrp で変える。グループに入ってる人は、グループの権限でファイルを使える
>>1
/etc/shadow にある。/etc/passwd は誰でも読めるから(試したら -rw-r--r-- で root の持ち物)、パスワードの暗号化した値は root と shadow グループしか読めない /etc/shadow(-rw-r-----)に分けてある。x は「shadow を見てね」の印
>>3
一般ユーザーで /etc/shadow を開こうとしたら Permission denied やった
>>1
/etc/passwd の欄は?
>>5: で区切った7つ
ユーザー名 : パスワード(x) : UID : GID : コメント : ホームディレクトリ : ログインシェルroot:x:0:0:root:/root:/bin/bashnobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
>>6
UID 0 が root。Debian の /etc/login.defs は UID_MIN 1000 で、普通のユーザーは1000から。それより小さいのは daemon などのシステム用で、試したマシンでは23個あった
>>6
シェルが /usr/sbin/nologin のユーザーは?
>>8
ログインさせないためのアカウント。nologin を動かしたら This account is currently not available. と出て終了ステータス1。/bin/false を使うこともある
>>3
/etc/shadow の欄は?
>>10
9つ(shadow の man)
ユーザー名 : 暗号化したパスワード : 最後に変えた日 : 変えられるまでの最短日数 : 変えなあかん最長日数 : 警告する日数 : 期限が切れてから使える日数 : アカウントの期限 : 予約
日付の欄は UNIX 時間の起点から数えた日数。最後に変えた日が0なら、次にログインしたときに変更を求められる
>>11
日数で持つんか。1日は86400秒やから、20000日なら
>>11
パスワードの欄の印
先頭が !:ロックされてる(passwd -l で付く)。後ろに元の値が残ってて、外せば戻る* や ! だけ:パスワードでログインできない(SSH の鍵など他の方法は使えることがある)
空:パスワードなしでログインできてしまう
値の先頭の $y$ は yescrypt(Debian の既定)、$6$ は SHA-512
>>2
/etc/group は?
>>14
4つの欄。グループ名 : パスワード : GID : メンバー(, 区切り)
たとえば sudo:x:27:user という行なら user が sudo グループに入ってる(試したマシンの sudo は sudo:x:27: でメンバーなし)。ユーザーの最初のグループ(/etc/passwd の GID)はここのメンバーに書かれへんことが多い。グループのパスワードは /etc/gshadow
>>6
ファイルを直接見る代わりに使うのは?
>>16getent passwd root、getent group sudo、getent passwd 1000 みたいに getent。/etc の下だけやなく、LDAP など /etc/nsswitch.conf で決めた場所からも探してくれる。直接直すなら vipw・vigr で、ほかの人と同時に書き換えないようにする
>>3
passwd は7つで x、shadow は9つで日数、group は4つ。! はロック、* はパスワードなし、調べるのは getent。これで読める
管理人のひとこと
- /etc/passwd(誰でも読める)は7欄:ユーザー名:x:UID:GID:コメント:ホーム:シェル。x は /etc/shadow を使う印。UID 0 は root、普通のユーザーは UID_MIN(Debian は1000)から。シェルが nologin や /bin/false のアカウントはログインできない。
- /etc/shadow(root と shadow グループだけ)は9欄:名前・暗号化したパスワード・最終変更日・最短・最長・警告・猶予・アカウントの期限・予約。日付は起点からの日数で、最終変更日0は次のログインで変更を求める。
- パスワード欄:先頭 ! はロック、* や ! だけはパスワードでログイン不可、空はパスワードなし。
$y$yescrypt、$6$SHA-512。 - /etc/group は4欄:グループ名:パスワード:GID:メンバー(カンマ区切り)。グループのパスワードは /etc/gshadow。参照は
getent passwd|group(nsswitch.conf に従う)、編集は vipw・vigr。