# smbpasswd

## Name

smbpasswd -- ユーザの SMB パスワードの変更

## Synopsis

root による実行時:

smbpasswd [options] [username] [password]

そうでない場合:

smbpasswd [options] [password]

## DESCRIPTION

このツールは Samba スイートの一部である。

smbpasswd プログラムには、root で実行するか否かによっていくつか異なった機能がある。 一般ユーザで実行した場合、 ユーザが SMB パスワードを保存しているマシンと SMB セッションを張る際に用いるパスワードを変更することが可能になる。

デフォルトでは(引数無しで実行されると)、 ローカルマシン上の 現在のユーザの SMB パスワードの変更を行おうとする。これは passwd(1) プログラムと同様の動作である。 smbpasswd は、 passwd プログラムとは異なり setuid root されないが、クライアント・ サーバモードで動作し、 ローカルに実行されている smbd(8) と通信を行なう。もっとも、通信が行われるには、smbd デーモンが ローカルマシン上で実行されていなければならない。UNIX マシン上の場合、暗号化された SMB パスワードが通常 `smbpasswd(5)` ファイルに保存されている。

一般ユーザがオプションなしで実行すると、smbpasswd はユーザの現在の smb パスワードの入力を要求し、 次に、入力が 正しいことを確実にするため、新しいパスワードを2回入力するよう 要求する。入力しているパスワードは画面に表示されない。もし、 (smbpasswd ファイルに文字列 "NO PASSWORD" が設定されており) ユーザの SMB パスワードが空の場合、現在のパスワードを 要求されたときに <Enter> キーだけを押すこと。

smbpasswd を使うことで、一般ユーザが Windows NT のプライマリ ドメインコントローラなどの遠隔のマシンの SMB パスワードを 変更することが可能となる。後述の (-r) および -U オプションを参照のこと。

root による実行の場合、smbpasswd は smbpasswd ファイルに ユーザを追加したり、削除したりすることや、作成されたファイル中の ユーザの属性を変更したりすることが可能である。 root による実行では、 smbpasswd はローカルな smbpasswd ファイルに 直接アクセスする。このため、 smbd が実行されていなくても、 変更を行うことが可能である。

## オプション

-L

  smbpasswd コマンドをローカルモードで実行する。 これは、root 以外のユーザに read-only オプションの指定を許可する。 これは、root でないユーザがローカルの `smbpasswd` ファイルを変更する必要があるテスト環境で主に利用される。 `smbpasswd` ファイルはコマンドを実行するユーザに よる読み書きが許可されていなければならない。

-h

  このオプションは smbpasswd のヘルプを出力する。

-c smb.conf file

  このオプションは設定ファイルを、 コンパイル時に指定したデフォルトのファイルに代えて指定する。

-D debuglevel

  debuglevel は 0 から 10 の整数を指定する。このパラメータを指定しないときの デフォルト値はゼロである。

  この値を大きくする程、smbpasswd の動作に関するより詳細な情報が ログファイルに記録される。レベル 0 では、致命的なエラーと 非常に重大な警告のみが記録される。

  1 以上のレベルでは大量のログが生成されるので、 問題解決の時にのみ使用すべきである。 3 より大きいレベルは、 開発者だけが利用するように設計されており、 莫大な量のデータを出力するが、 それらはほとんど暗号化されている。

-r remote machine name

  このオプションは、パスワードを変更する対象の マシンを指定する。このパラメータを指定しない場合、smbpasswd はデフォルトではローカルマシンを使用する。 remote machine name はパスワード変更のために接続する SMB/CIFS サーバの NetBIOS 名である。この名前は、Samba プログラム全体の、 すべてのプログラムが使っている標準的な名前解決の機構を用いて IP アドレスから解決される。この名前解決機構を変更する方法についての 詳細は -R name resolve order パラメータを参照のこと。

  パスワードを変更するユーザは、現在 UNIX にログインしている ユーザ名のユーザになる。異なるユーザのパスワードを変更する 方法についての詳細は -U username パラメータを参照のこと。

  Windows NT ドメインのパスワードを変更する場合、 そのドメインの プライマリドメインコントローラを remote machine に指定する必要が あることに注意(バックアップドメインコントローラは読み込み専用の ユーザアカウントデータベースの複製を持っているだけで、 パスワードを変更することができない)。

  Windows 95/98 は実際のパスワードデータベースを持っていないため、 Windows 95/98 マシンを remote machine に指定しても、 パスワードの変更を 行うことはできないことに 注意 。

-s

  このオプションを指定すると、smbpasswd はサイレントモードとなり (すなわちプロンプトを表示しない)、新旧のパスワードを `/dev/tty` ではなく、標準入力から読み込む (passwd(1) プログラムのように)。このオプションは smbpasswd を扱うスクリプトを書くときに役立つ。

-S

  このオプションを指定すると smbpasswd は、`smb.conf` の workgroup パラメータで指定されたドメインのドメインコントローラにドメイン SID を問い合わせ、コントローラ自身のマシンSIDとして `secrets.tdb` ファイルに格納する。これは、Samba を PDC および BDCとしているとき、または Windows の PDC をSamba の PDC へ移設するときにのみ使用する。

  接続するドメインコントローラを特定するために、 -r オプションも利用できる。 この場合、得られたドメインSIDはリモートのマシンが属する ドメイン用のものである。

-U username[%pass]

  このオプションは -r オプションと共にのみ使われる。 リモートマシンのパスワードを変更するとき、 ユーザはパスワードを変更しようとしているマシン上でのユーザ名を 指定することができる。これにより、 別システムで別のユーザ名を 用いているユーザがパスワードを変更することが可能になる。 %pass オプションには古いパスワードを指定することができる。

  -j とともに指定して実行した場合、このパラメータには マシンアカウントとして使用されるユーザ名を指定する。

NOTE:

  以下のオプションは smbpasswd コマンドを root で実行するか、ローカル モードで実行したときのみ有効である。

-a

  このオプションは新しいパスワードを入力することで、 (古いパスワードとしては <Enter> だけを入力する)指定されたユーザをローカルの smbpasswd ファイルに追加する。 すでにユーザ名が smbpasswd ファイルに存在する場合には、 このオプションは無視され、通常のパスワード変更コマンドとして扱われる。 注意点として、追加するユーザはあらかじめシステムのパスワードファイル (通常 `/etc/passwd`)に存在していなければならず、 存在していないユーザの追加は失敗する。

-d

  このオプションは、指定されたユーザのローカルな smbpasswd のアカウントを `無効` にする。 これは、`'D'` フラグを smbpasswd ファイルのアカウント制御フィールドに書き込むことで行われる。 ひとたびアカウントが無効になると、 このユーザ名を用いての SMB 経由の認証の試みは、全て失敗する。

  smbpasswd ファイルが '古い' フォーマット(Samba-2.0 以前のフォーマット) の場合は、 ユーザのパスワードエントリにこの情報を書き込むフィールドがないため、 ユーザが smbpasswd ファイル中のパスワードフィールドに 'X' 文字を書き込むことで ユーザを無効にする。 '古い' もしくは新しいパスワードファイルのフォーマットの 詳細に付いては smbpasswd(5) を参照のこと。

-e

  このオプションは、アカウントが無効にされていた場合、 指定されたユーザのローカルな smbpasswd ファイル中のアカウントを `有効` にする。アカウントが無効でなかった場合、 このオプションは意味を持たない。ひとたびアカウントが有効になると、 そのユーザは、再び SMB 経由で認証を行えるようになる。

  smbpasswd ファイルが '古い' フォーマットの場合は、smbpasswd はこのユーザの新規パスワードの設定を要求する。それ以外の場合、 そのアカウントは `smbpasswd` ファイルのアカウント制御 フィールドから `'D'` フラグを取り除くことで有効にされる。 '古い' もしくは新しいパスワードファイルのフォーマットの詳細に付いては smbpasswd(5) を参照のこと。

-m

  このオプションは、smbpasswd に変更するアカウントが マシンアカウントであることを伝える。現在、これは Samba が NT プライマリドメインコントローラとして使われているときに使用される。

-n

  このオプションは、指定されたユーザのローカルな smbpasswd 中のパスワードを空に設定する。これは、smbpasswd ファイルに保存されている 一つ目のパスワードフィールドの先頭部分に "NO PASSWORD" という文字列を書き込むことで行われる。

  smbpasswd ファイル中のパスワードを "NO PASSWORD" に設定してユーザが Samba サーバにログオンできるようにする場合、 管理者は `smb.conf` ファイル中の [global] セクションに以下のパラメータを設定する必要があることに注意。

  null passwords = yes

-w password

  このパラメータは Samba が実験的なオプション --with-ldapsam をつけてコンパイルされている ときのみ利用できる。-w スイッチは、 ldap admin dn で使用されるパスワードを指定するために 使用する。注意点としては、パスワードは `private/secrets.tdb` に格納され、admin の DN はキーロックされる。 これは、ldap admin dn の値が変更されたときには、パスワードも同じく手動で更新される 必要があることを意味する。

-x

  このオプションは、指定されたユーザをローカルな smbpasswd から削除する。

-j DOMAIN

  このオプションは、 Samba サーバを、ドメインのメンバとして Windows NT ドメインに追加する時に使用する。ドメインのメンバになると、 Windows NT Server と同様の方法でドメインコントローラに対して ユーザアカウントの認証を要求できる。`smb.conf(5)` マニュアルページの security=domain オプションを参照のこと。

  このコマンドは -U パラメータありでもなしでも動作する。

  -U をつけて実行した場合、そのユーザ名(とオプションとしてパスワード)は PDC(-r をつかって指定する必要がある) にマシンアカウントを作成し、 パスワードを設定するのに使用される。

  一方、-U をつけなかった場合、Samba は PDC 上にすでに 存在するアカウントのパスワードを変更しようと試みる。

  ドメインに参加させるにあたって、Windows NT ドメインの Administrator は、予めドメインのメンバーとして追加する Samba サーバの primary NetBIOS name のエントリを "サーバマネージャ" で追加しておく必要がある。

  エントリの追加後に、ドメインに参加させるためこのパラメータを使って smbpasswd を実行する。 smbpasswd はドメインの プライマリドメインコントローラを探して (`smb.conf` ファイル中の password server の値が使われる) セキュアなドメイン内の通信を確立するのに使われるマシンアカウントの パスワードを変更する。

  どちらにしろ、このパスワードはその時点で `secrets.tdb` という root のみ書き込み可能な TDB ファイルに smbpasswd によって格納される。

  この操作が完了すると、 `smb.conf` ファイル中に security=domain オプションを設定できる状態になる。設定後の Samba サーバに対するログインは、Windows NT の PDC にて認証されるようになる。

  認証が PDC によって行われるようになっても、 Samba サーバにアクセスする全てのユーザは未だにそのマシン上に有効な UNIX のアカウントを持っている必要があることに注意。 NT ユーザが UNIX アカウントを作成するために winbindd(8) デーモンが使用できる。

-R name resolve order

  このオプションを指定すると、smbpasswd のユーザは、 接続するホストの NetBIOS 名を解決する際に、 どの名前解決手段を使用するかを指定できる。

  オプションは以下の通り: "lmhosts"、"host"、"wins" そして "bcast"。 これらは、以下のような名前解決を行う。

  - `lmhosts` : Samba の lmhosts ファイルからIPアドレスを解決する。もし lmhosts の該当行に NetBIOS 名のタイプがない場合( lmhosts(5) を参照)、すべての NetBIOS 名のタイプが検索される。

  - `host` : システムの `/etc/hosts` ファイルや NIS、DNS を用いる標準的なホスト名から IP アドレスへの名前解決を使用する。この名前解決の方式は オペレーティングシステムに依存している。例えば IRIX や Solaris では、 `/etc/nsswitch.conf` ファイルにより制御されている。 この方式では、問い合わされるNetBIOS名のタイプは0x20(サーバ) であるときにに限定され、そうでない場合は無視されることに注意。

  - `wins` : wins server パラメータで列挙された IP アドレスに対して 名前の問い合わせを行なう。WINS サーバが指定されていなかった場合、 この方式は無視される。

  - `bcast` : interfaces パラメータで記述された各々の ローカルインターフェースに対し、ブロードキャストを行う。 これは対象のホストが同じサブネット内に存在している必要があるため、 あまり確実ではない名前解決の方式である。

  デフォルトの順序は、lmhosts、host、wins、bcast であり、このパラメータが指定されず、`smb.conf` ファイル中の name resolve order パラメータも 記述されていない場合、この順に名前解決が試行される。

username

  root のみ 選択可能なオプションを 実行するときのユーザ名を指定するのに使われる。 root のみがこのパラメータを設定でき、root のみがローカルな smbpasswd ファイル中の属性を直接修正する権限を持っている。

password

  新しいパスワードを指定する。このパラメータが 指定されれば、新しいパスワード入力のプロンプトは表示されない。

## 注意

smbpasswd が root 以外のユーザで実行される場合、ローカルな smbd と通信を行う際にクライアント-サーバモードで通信を行うため、smbpasswd が動作するためには、 smbd デーモンが実行されている必要がある。また、 よくあるトラブルとして、ローカルマシンで走行している smbd にアクセスするホストを `smb.conf` ファイル中の allow hosts と deny hosts エントリを設定して制限する際に、 "localhost" から smbd へのアクセスを許可するのを忘れてしまうということがある。

加えて、smbpasswd コマンドは、Samba で暗号化パスワードが 設定されているときのみ有用である。暗号化パスワードを 用いる方法についての詳細は、docs ディレクトリ配下の `ENCRYPTION.txt` ファイルを参照のこと。

## バージョン

このマニュアルページは Samba バージョン 2.2 一式用である。

## 参照

`smbpasswd(5)`、 samba(7)

## 著者

オリジナルの 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 によって行なわれた。

## 日本語訳

- 高橋 基信(monyo@samba.gr.jp)

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

- 太田 俊哉(ribbon@samba.gr.jp)

- はせがわ ようすけ