smbpasswd (5)

Samba 2.0.5a

29 Feb 1999 (JP-1999/05/11)

NAME

smbpasswd - Samba 暗号化パスワードファイル

SYNOPSIS

smbpasswd は Samba の暗号化パスワードファイルである。

DESCRIPTION

このファイルは Samba システムの一部である。

smbpasswd は Samba の暗号化パスワードファイルである。 このファイルには、ユーザ名、UNIX ユーザ ID と ユーザの SMB ハッシュ化パスワード、さらにアカウントのフラグ情報と パスワードの最終変更時間が含まれている。 このファイルの形式は Samba とともに拡張されており、 以前のバージョンとはいくつか異なる形式になっている。

ファイル形式

Samba 2.0 における smbpasswd ファイルの形式は、 一般的な UNIX の passwd (5) ファイルと非常によく似ている。 これは、各ユーザごとに 1 行が割り当てられている ASCII ファイルである。 各行のそれぞれのフィールド同士は、コロン ':' で区切られる。 エントリが '#' で始まっていると、その行は無視される。 smbpasswd ファイルには、各ユーザごとに以下の情報が含まれている:

名前


ユーザの名前である。 これは、標準の UNIX passwd ファイルにも存在している名前で なければならない。

ユーザ ID


UNIX の ユーザ ID である。 この値は、標準の UNIX passwd ファイル内の同名のユーザが持つ ユーザ ID フィールドの値と一致しなければならない。 一致していないと、Samba は smbpasswd ファイルのエントリの 識別を拒否し、有効なユーザとして認めない。

Lanman パスワード・ハッシュ


これは、ユーザ・パスワードから生成した LANMAN 版のハッシュである。 32 桁の 16 進数でエンコードされている。 LANMAN ハッシュは、ユーザのパスワードをキーとして用い、 ある一定の文字列を DES で暗号化することで生成される。 これは、Windows 95/98 マシンで利用されるパスワードと同一である。 このパスワードハッシュは辞書攻撃に弱いと見なされており、 2 人のユーザが同じパスワードを持つ場合、このエントリも同一に なってしまう (すなわち、パスワードが UNIX パスワードのように "加工(salted)" されない)。 ユーザが null パスワードを持つ場合、このフィールドの先頭の 16 進数文字列の部分に "NO PASSWORD" という文字が入る。 16 進数文字列が 32 個の 'X' 文字と等しい場合、 このユーザ・アカウントは無効であると見なされ、 ユーザは Samba サーバにログオンすることはできない。

警告!! SMB/CIFS 認証プロトコルはチャレンジ/レスポンス方式であるため、 パスワードハッシュさえ知っていれば、誰でもネットワーク上で ユーザになりすますことができる。 このため、これらハッシュは「暗号化されていないテキストに相当」し、 root ユーザ以外には絶対に漏らしてはならない。 これらのパスワードを保護するため、smbpasswd ファイルは root ユーザだけが読み取り/検索アクセスできるディレクトリに置き、 smbpasswd ファイル自身は root だけに読み書きアクセス権を与える べきである。

NT パスワードハッシュ


これは、ユーザパスワードから生成した Windows NT 版の ハッシュである。 32 桁の 16 進数でエンコードされている。 Windows NT ハッシュは、ユーザのパスワードを 16 ビット/ リトルエディアンの UNICODE で表現したものに対し、 MD4 ハッシュアルゴリズム (RFC1321 を参照) を 適用することで生成される。

このパスワードハッシュはパスワードの大文字/小文字を保持しており、 また、より高い品質のハッシュアルゴリズムを使用するため、 Lanman パスワードハッシュ に比べて より安全であると見なされる。 しかし、2 人のユーザが同じパスワードを持つとハッシュ値も同じに なるため(すなわち、UNIX パスワードのように "加工(salted)" されない)、それでもなお安全とは言えない。

警告!! SMB/CIFS 認証プロトコルはチャレンジ/レスポンス方式であるため、 パスワードハッシュさえ知っていれば、誰でもネットワーク上で ユーザになりすますことができる。 このため、これらハッシュは「暗号化されていないテキストに相当」し、 root ユーザ以外には絶対に漏らしてはならない。 これらのパスワードを保護するため、smbpasswd ファイルは root ユーザだけが読み取り/検索アクセスできるディレクトリに置き、 smbpasswd ファイル自身は root だけに読み書きアクセス権を与える べきである。

アカウント・フラグ


ここにはユーザ・アカウントの属性を表すフラグが含まれている。 Samba 2.0 では、このフィールドはブラケット ('[' と ']') で括られており、長さは常に 13 文字になる ('[' と ']' も含む)。 このフィールドの中には、以下のような文字が入る。

  • 'U' これは "User" アカウント、つまり一般のユーザを意味する。 現在は、User と Workstation Trust アカウント だけが smbpasswd ファイルでサポートされている。

  • 'N' これはアカウントがパスワードを持っていないことを意味する (Lanman パスワードハッシュ と NT パスワードハッシュ のフィールド にあるパスワードは無視される)。 このフラグによってユーザがパスワードなしでログオンできるのは、 smb.conf (5) 設定ファイル中の null passwords パラメータが yes に設定されている場合だけであることに注意されたい。

  • 'D' これはアカウントが無効であることを意味し、 このユーザは SMB/CIFS ログオンが許可されない。

  • 'W' これはアカウントが "Workstation Trust" アカウントである ことを意味する。 この種類のアカウントは、Samba の PDC コードの処理において、 Windows NT Workstation と Server を Samba PDC による ドメインに参加させるために利用される。
  • 将来にコードが拡張されれば、そのほかのフラグが追加されるだろう。 このフィールドの残った部分は空白文字で埋められている。

    最終変更時間


    このフィールドは、アカウントが更新された最終時間を保持する。 このフィールドには文字列 LCT- ("Last Change Time" を意味する) に 続けて、最後に更新が行われた UNIX 時間 (西暦 1970 年からの経過秒数) を 数字で表した文字列をつける。

    以降に続くそのほかのフィールド


    コロンで区切られた他のフィールドは、現在ではすべて無視される。

    注意

    以前のバージョンの Samba (特に 1.9.18 シリーズ) では、 このファイルにはアカウントフラグと 最終更新時間のフィールドが含まれていなかった。 Samba 2.0 のコードは古い形式のパスワードファイルの読み書きを行えるが、 古いエントリを修正して新たなフィールドを追加することはできない。 ただし、smbpasswd (8) により新規のエントリを 追加すると、追加されたアカウントには新しいフィールドが含まれる。 よって、古い形式の smbpasswd ファイルを Samba 2.0 で用いると、 新しいフィールドが含まれるアカウントと含まれないアカウントが混在 することになる。

    古い形式の smbpasswd ファイルを新しい形式に変換するには、 convert_smbpasswd スクリプトを実行すること。 このスクリプトは Samba の bin/ ディレクトリにインストールされている (smbd と nmbd バイナリが インストールされるディレクトリと同じ場所)。 動作例を以下に示す。

    
    
        cat old_smbpasswd_file | convert_smbpasswd > new_smbpasswd_file
    
    

    convert_smbpasswd スクリプトは標準入力から読み込み、標準出力に書き込む。 間違ってファイルを上書きしてしまうことはない。

    一度このスクリプトを実行したら、 新しい smbpasswd ファイルの中身を調べて 変換スクリプト(awk を利用している)によって損傷していないことを確認し、 <古い smbpasswd ファイル>を<新しい smbpasswd ファイル>に 置き換えること。

    バージョン

    このマニュアルは、Samba システムのバージョン 2.0 に適用される。

    SEE ALSO

    smbpasswd (8), samba (7), RFC1321 (MD4 アルゴリズムの詳細)

    AUTHOR

    オリジナルの Samba ソフトウェアと関連するユーティリティは、 Andrew Tridgell samba-bugs@samba.org によって作成された。 現在 Samba は、Samba Team によって、Linux カーネルの開発と同様に、 オープンソース・プロジェクトとして開発されている。

    オリジナルの Samba マニュアルは、Karl Auer によって執筆された。 マニュアルのソースは Jeremy Allison samba-bugs@samba.org によって YODL 形式に変換され、Samba 2.0 リリース用に更新された。 (YODL はオープンソース・ソフトウェアの優れた作品である - ftp://ftp.icce.rug.nl/pub/unix/ から入手可能)

    日本語訳

  • 佐藤文優 fumiya@cij.co.jp
  • 補訳・校正
  • 太田俊哉 oota@pes.com1.fc.nec.co.jp