smbpasswd — Samba の暗号化パスワードファイル
smbpasswd
このファイルはSamba(7)システムの一部である。
smbpasswd は Samba の暗号化パスワードファイルである。 このファイルには、ユーザー名、UNIX のユーザー ID、ユーザーの SMB ハッシュ化パスワード、さらにアカウントのフラグ情報とパスワードの 最終変更時間が含まれている。このファイルの形式は Samba とともに 拡張されており、以前のバージョンとは幾分異なった形式になっている。
Samba 2.2 における smbpasswd ファイルの形式は、一般的な UNIX の
passwd(5)
ファイルに類似している。
これは、各ユーザーの情報が行ごとに格納された ASCII ファイルである。
各行のそれぞれのフィールドは、コロン (:) で区切られている。
'#' で始まる行は無視される。
smbpasswd ファイルには、各ユーザーごとに以下の情報が含まれている:
ユーザーの名前である。この名前は、標準の UNIX passwd ファイルに存在している必要がある。
UNIX の uid である。この値は、標準の UNIX passwd ファイル内の同名ユーザーが持つ uid フィールドの値と 一致しなければならない。 一致していないと、Samba は smbpasswd ファイルのエントリーを有効なユーザーのエントリーとして認識しない。
これは、ユーザーのパスワードから生成された
LANMANハッシュであり、32 桁の 16 進数でエンコードされている。
LANMANハッシュは、ユーザーのパスワードをキーとして用いて、
ある一定の文字列を DES で暗号化することで生成される。これは、
Windows 95/98 マシンで利用されるパスワードと同じである。
このパスワードハッシュは辞書攻撃に弱いとみなされていて、
もし二人のユーザーが同じパスワードを持つ場合、このエントリーも
同一のものになってしまう (UNIX パスワードのようにパスワードが
"加工 (salted)" されていない)。
ユーザーが null パスワードを持つ場合、このフィールドの先頭の 16
進数文字列の部分に "NO PASSWORD" という文字が入る。
16 進数文字列が 32 個の 'X' 文字からなる場合、
このユーザーアカウントは無効
であると見なされ、ユーザーは Samba
サーバーにログオンすることができない。
警告!! SMB/CIFS の認証プロトコルはチャレンジ/レスポンス方式で あるため、パスワードハッシュさえ知っていれば、 誰でもネットワーク上でそのユーザーになりすますことができる。 このため、これらのハッシュは 暗号化されていないテキスト と同等のものであり、root 以外には 絶対に 漏らしてはならない。これらのパスワードを保護するため、 smbpasswd ファイルは、root だけが読みとりや実行アクセス可能な ディレクトリに置き、ファイル自身は root だけに読み書き アクセス権を与えるべきである。
これは、ユーザーのパスワードから生成された Windows NT ハッシュであり、 32 桁の 16 進数でエンコードされて いる。Windows NT ハッシュは、ユーザーのパスワードを 16 ビット/リトルエディアンの UNICODE で表現したものに対し、MD4 ハッシュアルゴリズム (RFC1321を参照) を適用することで 生成される。
このパスワードハッシュは パスワードの大文字/小文字の 情報を保持しており、よりセキュアなハッシュアルゴリズムを 使用するため、LANMAN ハッシュより非常にセキュアであると 考えられる。しかし、やはり同じパスワードを持つユーザーが 二人いる場合、このエントリーも同一のものになってしまう (UNIX パスワードのようにパスワードが "加工(salted)" されていない)。
警告!! SMB/CIFS の認証プロトコルはチャレンジ/レスポンス方式で あるため、パスワードハッシュさえ知っていれば、 誰でもネットワーク上でそのユーザーになりすますことができる。 このため、これらのハッシュは 暗号化されていないテキスト と同等のものであり、root 以外には 絶対に 漏らしてはならない。これらのパスワードを保護するため、 smbpasswd ファイルは、root だけが読みとりや実行アクセス可能な ディレクトリに置き、ファイル自身は root だけに読み書き アクセス権を与えるべきである。
これは、ユーザーアカウントの属性を表すフラグで ある。このフィールドはブラケット '[' と ']' で囲まれており、長さは常に 13 文字 になる ('[' と ']'も含む)。このフィールドの中には、以下のような文字が入る:
U - "User" アカウント、つまり一般のユーザーを意味する。
N -
アカウントがパスワードを持っていないことを意味する
(LANMAN ハッシュと NT ハッシュのフィールドにある
パスワード情報は無視される)。このフラグによって、
smb.conf(5) ファイル中の
null passwords
パラメーターが
設定されていている場合にのみ、ユーザーはパスワードなしで
ログインできるようになる。
D - アカウントが無効であることを意味し、このユーザーは SMB/CIFS ログオンが許可されない。
X - これは、パスワードが 満了していないことを意味する。
W - アカウントが "Workstation Trust" アカウントであることを意味する。 このアカウントは、Samba の PDC 機能で、Windows NT Workstation や Server を Samba PDC によるドメインに 参加させるために利用される。
将来的にコードが拡張されれば、そのほかのフラグが
追加されるかもしれない。このフィールドの残った部分は空白文字で
埋められている。この場所でサポートされているフラグに関してさらなる情報は、
pdbedit
マニュアルページを参照して欲しい。
このフィールドには、アカウントが更新された 最終時間を保持する。このフィールドには文字列 'LCT-' ("Last Change Time" を意味する) に続けて、最後に更新が行われた UNIX 時間 (西暦 1970 年からの経過秒数) を数字で表した文字列が 続く。
コロンで区切られた他のフィールドは、 現在すべて無視される。