# smbpasswd (5)

## Samba 2.0.7

## 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@samba.org によって作成された。 現在 Samba は、Samba Team によって、Linux カーネルの開発と同様に、 オープンソース・プロジェクトとして開発されている。

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

日本語訳

- 佐藤文優 fumiya@samba.gr.jp

補訳・校正

- 太田俊哉 oota@pes.com1.fc.nec.co.jp