このツールは Samba スイートの一部である。
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 だけに読み書きアクセス権を与えるべきである。
これは、ユーザアカウントの属性を表すフラグである。 Samba 2.2のリリースでは、 このフィールドはブラケット '[' と ']' で囲まれており、 長さは常に 13 文字になる ('[' と ']'も含む)。 このフィールドの中には、以下のような文字が入る。
U - "User" アカウント、つまり一般のユーザを意味する。 User と Workstation信頼アカウントだけが、 現在の smbpasswd ファイルでサポートされている。
N - アカウントがパスワードを持っていないことを意味する。 LANMANハッシュとNTハッシュのフィールドにある パスワード情報は無視される)。 このフラグによってユーザがパスワードなしでログオンできるのは、 smb.conf(5) ファイル中の null passwords パラメータが設定されていて、 ユーザがパスワードなしでログインできるようになっている場合 のみである。
D - アカウントが無効であることを意味し、 このユーザは SMB/CIFS ログオンが許可されない。
W - アカウントが "Workstation Trust" アカウントであることを意味する。 このアカウントは、Samba の PDC 機能で、 Windows NT Workstation や Server を Samba PDC による ドメインに参加させるために利用される。
将来にコードが拡張されれば、 そのほかのフラグが追加されるだろう。 このフィールドの残った部分は空白文字で埋められている。
このフィールドには、アカウントが更新された最終時間を保持する。 このフィールドには文字列 'LCT-' ("Last Change Time" を意味する) に続けて、 最後に更新が行われた UNIX 時間 (西暦 1970 年からの経過秒数) を 数字で表した文字列をつける。
コロンで区切られた他のフィールドは、 現在すべて無視される。
オリジナルの Samba ソフトウェアと関連するユーティリティは、 Andrew Tridgell によって作成された。現在 Samba は Samba Team によって、 Linux カーネルの開発と同様の オープンソースプロジェクトとして開発が行なわれている。
オリジナルの Samba マニュアルページは Karl Auer によって作成された。 マニュアルページは YODL 形式( ftp://ftp.icce.rug.nl/pub/unix/ で入手可能な優れたオープンソースソフトウェア) に変換され、 Samba 2.0 リリースに伴い、Jeremy Allison によって更新された。 Samba 2.2 における DocBook 形式への変換は、 Gerald Carter によって行なわれた。