このページでは自宅サーバーをWindowsファイルサーバーとして利用するためのSambaにおけるユーザーアカウントの設定について解説します。
お便利サーバー.com+相互リンクサイト内をキーワードで検索
Sambaサーバーの構築

Sambaサーバーについて

Sambaの構成と設定の方法

SWATの準備と設定

Sambaのコントロール

Sambaの全体動作の設定

ユーザーアカウントの設定

共有ポイントの基本的な設定

ホームディレクトリの利用

特殊な共有ポイントの設定

プリンタサーバーの設定

Sambaについてその他


Sambaは専用のユーザーアカウント設定が必要

Samba は UNIX 系の OS 上で動作する アプリケーション ですから、 ユーザーアカウント の扱いや ログイン についてはOSの制約を超えることはできません。

つまり WindowsOS の クライアント から WBEL や CentOS 上の Samba サーバー に接続する場合でも、他のサーバーアプリケーションを利用する場合と同様に、WBELやCentOSシステム上の アカウント とパスワードが必要になります。

ただし、Sambaが他のサーバーアプリケーションと異なるのは、WBELやCentOSのシステムのアカウントを直接利用するのではなく、 間接的に 利用する点です。

実は、WBELやCentOS上のアカウントだけではSambaに接続することはできません。Sambaへの接続するには、そのアカウントと同じ名前でSambaへのアカウント登録が必要になります。

例えば、既にWBELやCentOS上に存在している tanaka というユーザーアカウントをSambaでも利用する場合には、Sambaに対しても tanaka というユーザーアカウントを作成し、パスワードを設定する必要があるわけです。いわば 二重登録 が必要というわけです

なぜこんな面倒な段取りを踏まなければならないのでしょうか。一見すると、素直にWBELやCentOSのユーザーアカウントとパスワードを利用すれば良いだけのような気がするかもしれません。

その一番大きな理由は、WBELやCentOS上のユーザーアカウント(広義にいえば UNIX 系 OS 上のユーザーアカウント)とパスワードを、 WindowsOS 上のそれと完全に一致させることが 運用の都合上 難しいケースがあるからです。

例えば sshd や FTPサーバー 、 メールサーバー などは WAN 空間を経由して利用するケースが多いため、第三者が推定しやすい安易なパスワードを設定することは非常に危険です。

そこで、サーバー側(UNIX系OS)で設定する安全なパスワードを クライアント 側(WindowsOSや MacintoshOS )に強制することで、 セキュリティ を維持しているわけです。

しかしSambaの場合はほとんどが LAN 内、またはそれに近い 信頼性の高い閉鎖的なネットワーク で利用されますから、比較的簡単なパスワードが使われることが多く、WAN空間での利用が前提の 「複雑で覚えにくいパスワード」 は敬遠されるケースがほとんどです。

実のところWindowsネットワークは、パスワードなしで利用されるケースも非常に多いようです。恐ろしい話ですが。

しかしそういった「利便性だけを重視したファイル共有」に合わせるだけの目的で、WBELやCentOSのシステム上のユーザーアカウントに安易なパスワードを設定するわけにはいきません。そうしてしまうと、メールやFTPサーバーに接続するときも、その安易なパスワードを使用しなければならなくなってしまうからです。

Sambaにユーザー登録できるのはWBELやCentOS上に登録済みのユーザーアカウントに限られますが、パスワードだけは自由に設定できます。

つまり、一つのユーザーアカウントに対してWANを利用するアプリケーションの利用には複雑なパスワードを、Sambaの利用には簡単なパスワードを、という具合に使い分けができるようになっているわけです。

Sambaのユーザーアカウントの設定は、SWATまたは シェル プロンプト のどちらからでも行うことができますが、それぞれに一長一短がありますので、以下に各々について説明します。

また、ここでの説明は「Sambaの全体動作の設定 Sambaの動作全体に関する設定です 」の セキュリティ に関する設定の中で "passdb backend" のパラメータが "smbpasswd" になっていることを前提に説明します passdb backendディレクティブについて 。

もちろんこれ以外の設定になっている場合でもSambaの動作自体には影響はありませんが、 "passdb backend" を "smbpasswd" に設定しておけば、ユーザーアカウントの設定は テキスト 形式で "/etc/samba/smbpasswd" に保存されますから、以下に説明する "pdbedit" コマンド などを使わなくても、 less コマンドなどの汎用テキストビュワーや、使い慣れたテキストエディタなどで簡単に参照できるという利点があるからです。

このページの先頭へ↑

SWATでSambaのユーザーアカウントを設定する

SWAT の任意のメニューから "PASSWORD" ボタンを左クリックすると、Sambaのユーザーアカウント設定メニューに切り替わります。

PASSWORDメニュー
PASSWORDメニュー

(1) には、 WBEL や CentOS に登録済みの ユーザーアカウント を入力します。

WBELやCentOSに登録されていないユーザーアカウントを入力すると以降の操作でエラーになりますので、全く新規のユーザーを登録したいときは、予め useradd コマンド でWBELまたはCentOS上のユーザーアカウントを設定しておかなければなりません。

デフォルト では、パスワードは5文字以上入力しなければならなくなっています。
この「パスワードの長さ制限」を変更するには、 GLOBALS メニューから Advanced(詳細表示) に移り、 "min password length" の値を設定しなおしてSambaの設定の再読み込み Sambaの設定の更新 を行ってください。

(2) には、 (1) のユーザーアカウントに設定したいパスワードをタイプします。入力欄が二つあるのはいうまでもなくタイプミス防止のためですから、同じパスワードをタイプしてください。

例えば tanaka をSambaのユーザーアカウントとして新規に登録したいときは以下のように設定し、 Add New User (新規ユーザ追加)ボタンを左クリックします。

tanakaをSambaユーザーとして登録する
"tanaka"をSambaユーザーとして登録する

結果は、下の図のように 赤線 の部分に簡単な英語で表示されますので必ず確認してください。

ユーザー登録の結果の表示
ユーザー登録の結果の表示

この場合は "Added user tanaka.(田中をユーザーに追加しました。)" と表示されています。

Sambaの既存ユーザーのパスワードを変更するときは、ユーザー名と新しく設定したいパスワードをタイプして Change Password (パスワード変更)ボタンを左クリックします。

Sambaの既存ユーザーを削除したいときは、ユーザー名だけをタイプして Delete User (ユーザの削除)を左クリックします。

ただ、ユーザーアカウントを削除してしまうと、もう一度同じユーザーを同じパスワードで再登録するのはとても面倒です。

そこでSambaは、登録済みのユーザーアカウントについてパスワードの内容を維持したまま、有効、無効を切り替えることができるようになっています。

この切り替えを行う場合には、ユーザー名だけをタイプして Disable User (ユーザーの無効化)または Enable User (ユーザーの有効化)ボタンを左クリックします。

このページの先頭へ↑

シェルプロンプトからユーザーアカウントを設定する

SWAT から Samba の ユーザーアカウント 登録は GUI で行うことができるので操作は簡単です。

しかし、SWAT画面だけでは WBEL や CentOS のユーザーアカウント名を知ることはおろか、Sambaに登録済みのユーザーアカウントの名前や、有効、無効の状態などを知ることはできませんから、ユーザー数が増えてくると扱いが難しくなってしまいます。

実際には pdbedit コマンドは表示だけではなく設定操作を行うことも可能です。
しかし pdbedit コマンドはオプションスイッチの種類が多く扱いにくいため、設定操作には smbpasswd コマンドを用います。

そこで、それなりのユーザーアカウントの数を扱う場合には、 シェル プロンプト を用い、 pdbedit コマンド でユーザーアカウントのリストを確認しながら、 smbpasswd コマンドを使って設定を行うほうが実用的です。

まず、 サブネット 内の適当な クライアント機 から SSHクライアント で 構築中のLinuxサーバー に ログイン します SSHクライアントでサーバーに接続する(WBEL3) SSHクライアントでサーバーに接続する(CentOS3) SSHクライアントでサーバーに接続する(WBEL4) SSHクライアントでサーバーに接続する(CentOS4) SSHクライアントでサーバーに接続する(CentOS5) 。

わざわざ カレント ディレクトリを移動しているのは、ディレクトリの中身を参照するときに、 絶対パス をタイプするのが面倒なためです。
それ以外の深い理由はありません。

それから su コマンド で アカウント を "root" に変更し、 cd コマンドでSambaの設定ファイルの格納ディレクトリである "/etc/samba" に移動します。

[tanaka@web1 ~]$ su -Enter
Password: "root"のパスワードを入力します。 Enter
[root@web1 ~]# cd /etc/sambaEnter
[root@web1 samba]# ls -lEnter  ←ファイルを一覧します。 lsコマンドについて
-rw-r--r--  1 root   root      20 12月 21 2004 lmhosts
-rw-------  1 root   root     8192 6月 9 2005 secrets.tdb
-rw-r--r--  1 root   root     1005 5月 31 14:52 smb.conf
-rw-r--r--  1 root   root    10174 11月 14 2005 smb.conf.org
-rw-------  1 root   root     104 6月 1 16:52 smbpasswd
-rw-r--r--  1 root   root      97 5月 9 16:57 smbusers
[root@web1 samba]#

新規にユーザーアカウントを登録する

Samba に対して新規に ユーザーアカウント を設定するには、 smbpasswd コマンド を使って、

smbpasswd -a [WBELやCentOSシステム上のユーザーアカウント名] Enter

とタイプします。
[root@web1 samba]# smbpasswd -a tanakaEnter
New SMB password: 設定したいパスワードを入力します。Enter
Retype new SMB password: 同じパスワードを入力します。Enter
Added user tanaka. 「ユーザーtanakaが追加されました。」
[root@web1 samba]#

ここで設定するパスワードは、Sambaサーバーに接続するときに使用するものです。ユーザーアカウント名はWBELやCentOSシステム上に設定されているものでなければありませんが、パスワードはシステム上のものと同じである必要はありません。

では、登録したユーザーアカウントを表示してみましょう。

登録するユーザーに "コメント" が設定されていないとき ユーザーアカウント情報ファイルについて は、 "pdbedit -L" の実行結果では TaroTanaka の部分は空白になります。
また、ご利用のSambaの環境によっては、右のように "nobody" 、つまりゲスト用のユーザーアカウントの設定が表示されますが、これはSambaが必要に応じて自分で作成するものですから、あってもなくても気にする必要ありません。

pdbedit -L Enter と実行すると、以下のようにSambaの アカウント として登録されているユーザーの簡単なリストが表示されます。

[root@web1 samba]# pdbedit -LEnter
nobody:99:Nobody
tanaka:500:TaroTanaka  ←ユーザーtanakaが追加されています。
[root@web1 samba]#

リストの意味は以下のとおりです。

pdbedit -L の実行結果の詳細
"pdbedit -L"の実行結果の詳細

"アカウント名" が、Sambaに接続可能に登録されているユーザーアカウント名です。必ず WBEL や CentOS 上にも同じアカウント名が存在しています。

"ユーザーID番号" 、 "コメント" は、それぞれWBELやCentOS上で"ユーザーアカウント名"に設定されているユーザーID番号とコメントを表します ユーザー管理用ファイルについて 。

既存アカウントのパスワードを変更する

既に Samba ユーザーとして登録済みの ユーザーアカウント のパスワードを変更するには、

smbpasswd [ユーザーアカウント名] Enter

と実行します。

[root@web1 samba]# smbpasswd tanakaEnter
New SMB password: 新しいパスワードを入力します。Enter
Retype new SMB password: 同じパスワードを入力します。Enter
[root@web1 samba]#

パスワードが正しく変更された場合には何もメッセージは表示されませんが、例えばタイプした二つのパスワードが一致しないときは、

[root@web1 samba]# smbpasswd tanakaEnter
New SMB password: 新しいパスワードを入力します。Enter
Retype new SMB password: 上と違うパスワードを入力したとます。Enter
Mismatch - password unchanged. 「パスワードが一致しないので変更しませんでした。」
Unable to get new password. 「新しいパスワードを取得できませんでした。」
[root@web1 samba]#

とメッセージが表示され、パスワードの変更は行われません。

既存アカウントを無効/有効に設定する

新規に登録された ユーザーアカウント はそのまま Samba の接続ユーザーとして有効になりますが、

smbpasswd -d [ユーザーアカウント名] Enter

と実行すると、そのユーザーアカウントのパスワードを保持したままSambaに接続できないようにすることができます。

また、Sambaへの接続を無効に設定されているユーザーアカウントに対して、

smbpasswd -e [ユーザーアカウント名] Enter

と実行すると再び接続を有効にすることができます。

[root@web1 samba]# smbpasswd -d tanakaEnter
Disabled user tanaka. 「tanakaを無効にしました。」
[root@web1 samba]# smbpasswd -e tanakaEnter
Enabled user tanaka. 「tanakaを有効にしました。」
[root@web1 samba]#

任意のユーザーアカウントの有効/無効の状態を知るには、

pdbedit -L -w [アカウント名] Enter

と実行します。

[root@web1 samba]# pdbedit -L -w tanakaEnter
tanaka:500:9305D978C243B9EE09752A3293831D17:B9C1985C44045A544430B96C2E97A354:[U]:LCT-44839930:
[root@web1 samba]# pdbedit -L -w suzukiEnter
suzuki:501:3CE6945389535FF61BA0D05CE2451D57:FE7975AFC601A7DE47D1A0DF89BF2983:[DU]:LCT-44839CBE:  ←"D"が「無効」を示しています。
[root@web1 samba]#

[アカウント名] を省略すると、すべてのユーザーの状態をリスト表示します。

実はこの "pdbedit -L -w" は、Sambaのパスワード設定ファイルである "/etc/samba/smbpasswd" の内容を一覧しているに過ぎません。

従って "pmbpasswd -d(-e)" を使わずに、 nanoエディタ などで "/etc/samba/smbpasswd" を直接編集して "D" を書き加えたり、削除したりすることでも同様の設定を行うことができます。

既存アカウントを削除する

登録済みの Samba の ユーザーアカウント を削除するには、

smbpasswd -x [アカウント名] Enter

と実行します。

[root@web1 samba]# smbpasswd -x tanakaEnter
Deleted user tanaka. 「tanakaを削除しました。」
[root@web1 samba]#

いうまでもありませんが、Sambaのユーザーアカウントを削除しても、 WBEL や CentOS のシステム上のユーザーアカウントには何の影響も与えません。

このページの先頭へ↑

LinuxOSとWindowsOSのユーザーアカウントを同期する

この コンテンツ をご覧になって Samba サーバー の構築にチャレンジしている方の多くは、 WindowsOS をメインの クライアント機 として使っていることと思います。

WindowsOSを使う場合にも、 LinuxOS などを使う場合と同様に、特定のユーザー名で ログオン して使用しているはずです。

Windows2000 の場合には、同じキー操作で表示される ダイアログ に、 "\\コンピュータ名\ユーザー名" という形で表示されます。

現在自分が使用しているユーザー名を知る方法は色々ありますが、例えば Windows7 や WindowsVista 、 WindowsXP の場合は Ctrl + Alt + Delete を同時に押して タスクマネージャ 表示し、 ユーザー タブを選ぶと表示されます。

WindowsXPのタスクマネージャで実行中ユーザーを表示
WindowsXPのタスクマネージャで実行中ユーザーを表示

つまりこのパソコンを使用しているユーザーは "田中太郎" というユーザー名で使用しているということになります。

さて、 username mapディレクティブについて でも説明していますが、Sambaでは ユーザーアカウント に日本語を使うことはできませんから、このままでは "田中太郎" はSambaに接続するために別のユーザーアカウント名とパスワードをタイプしなければなりません。

ところが、 username mapディレクティブについて で指定したファイルに予めWindowsOS上のユーザー名とSambaに登録されたユーザーアカウント名の対応情報を記述しておくことでこの問題に対処できます。

以下に、予め準備されている "/etc/samba/smbusers" の内容を示します。

# Unix_name = SMB_name1 SMB_name2 ...
root = administrator admin
nobody = guest pcguest smbguest

最初の行の説明文のとおり、 "=" の左辺にSambaのユーザーアカウント名、右辺にWindowsOS上のユーザー名を記述します。

一人で二台以上のコンピュータを、それぞれ別のユーザー名で使っている人も少なくないと思います。こういう コンテンツ をご覧の方であれば。

デフォルト の設定のように、右辺に複数のユーザー名をスペースで区切って記述することもできますから、WindowsOS上で「一人で複数のユーザー名を使い分けている」場合には、これをひとまとめにしてSamba上の同じユーザーアカウントに引き継ぐことができます。

具体的な設定の例を以下に示します。

nanoエディタで日本語を入力するときは、 nanoエディタでの日本語入力について を参考にしてください。

この "/etc/samba/smbusers" には編集のためのツールはありませんので、 SSHクライアント で 構築中のLinuxサーバー にリモート ログイン して、 nanoエディタ でファイルを開いて nanoエディタでファイルを開く 直接ファイルを編集してください。

# Unix_name = SMB_name1 SMB_name2 ...
root = administrator admin
nobody = guest pcguest smbguest
tanaka = "田中太郎" TaroTanaka
hanako = "tanaka hanako"

WindowsOSのユーザー名に日本語やスペースが入る場合は、"田中太郎"、"tanaka hanako"のように "" で両端をくくる必要がありますので注意してください。

例えばこのように設定を行うと、ユーザー名"田中太郎"で使われているWindowsOSからSambaサーバー上の"tanaka"というユーザーアカウントで接続を試みる場合、認証の ダイアログ への入力は、

/etc/samba/smbusersにユーザーマップの設定がない場合の認証
"/etc/samba/smbusers"にユーザーマップの設定がない場合の認証

のようにユーザーアカウント名をタイプする必要がなく、

/etc/samba/smbusersにユーザーマップの設定がある場合の認証
"/etc/samba/smbusers"にユーザーマップの設定がある場合の認証

のように空欄のままで OK ボタンを押すことで接続可能になります。

ただし、この "/etc/samba/smbusers" の利用は、利便性の面からすると 両刃の剣 となります。

もしも、Sambaの全体的な動作で、 "security" ディレクティブ を "USER" に Sambaのセキュリティオプションの設定 、 "map to guest" ディレクティブを "Bad User" に Sambaのmap to guestの設定 設定しているとします。


ムックですが管理人の
イチオシテキストです↓

すると、Sambaサーバー上に登録されているユーザーアカウントに対して マップされていないユーザー名 で使用されているWindowsOSから接続する場合には、自動的に ゲストユーザー として扱われますから、ユーザー名もパスワードも不要でログインできることになります。

一方、Sambaサーバー上に登録されているユーザーアカウントに対して マップされているユーザー名 で使用されているWindowsOSから接続する場合には、ゲストユーザーではなく正式な登録ユーザーとしてログインしなければなりませんから、必ず認証のダイアログが表示され、接続の手順を踏まなければならなくなります。

この手順を面倒だと思わなければ何ら問題はないのですが、「普段はゲストユーザーとして簡単にログインできたほうがいい」という場合には敢えてユーザーマップを利用せず、必要に応じて認証を行うような共有ポイント構造を考えるのも一つの選択かもしれません。

このサイトは既に更新を終了していますが、今のところ店じまいの予定はありません。 リンクフリー ですので、趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。
Powered by Apache
”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。
www.centos.org - The Community ENTerprise Operating System