このページでは自宅サーバーWindowsファイルサーバーとして利用するためのSambaにおけるユーザーアカウントの設定について解説します。

HPの格安エントリーサーバー機"HP ProLiant ML115"でのLinuxサーバー構築記を掲載しました。サーバー機の選定にお悩みの方は是非お越しください...。お便利サーバー.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 )に強制することで、 セキュリティ を維持しているわけです。

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

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

しかしそれだけのために、WBELやCentOSのシステム上のユーザーアカウントに安易なパスワードを設定するわけにはいきません。そうしてしまうと、メールやFTPサーバーに接続するときも、その安易なパスワードを使用しなければならなくなってしまうからです。

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

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

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

このページの先頭へ↑

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

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

PASSWORDメニュー
PASSWORDメニュー

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

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

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

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

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

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

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

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

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

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

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

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

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

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

このページの先頭へ↑

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

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

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

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

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

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

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

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

[tanaka@web1 tanaka]$ su -Enter
Password: "root"のパスワードを入力します。 Enter
[root@web1 root]# cd /etc/sambaEnter
[root@web1 root]# 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 root]#

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

まず、現在登録されている Samba ユーザーアカウント を表示してみましょう。

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

[root@web1 root]# pdbedit -LEnter
nobody:99:Nobody
[root@web1 root]#

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

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

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

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

Sambaはデフォルトではこの nobody だけがユーザーアカウントとして登録されています。

この nobody は、WBELやCentOSのシステム上では「任意のユーザー」を示し、多くの サーバー アプリケーション で「不特定多数」のユーザーからのアクセスを受け付けるときに利用されるユーザーアカウントです。

Sambaでも同様に、 nobody WindowsOS から ゲストユーザー としてアクセスするときに用いられます。

つまりSambaは現時点では、ゲストユーザーからのみアクセスを受け付けるようになっているわけです。

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

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

とタイプします。

登録するユーザーに "コメント" が設定されていないとき ユーザーアカウント情報ファイルについて は、 "pdbedit -L" の実行結果では TaroTanaka の部分は空白になります。
[root@web1 root]# smbpasswd -a tanakaEnter
New SMB password: 設定したいパスワードを入力します。Enter
Retype new SMB password: 同じパスワードを入力します。Enter
Added user tanaka. 「ユーザーtanakaが追加されました。」
[root@web1 root]# pdbedit -LEnter
nobody:99:Nobody
tanaka:500:TaroTanaka  ←ユーザーtanakaが追加されています。
[root@web1 root]#

ここで設定するパスワードは、Sambaサーバーに接続するときに使用するものです。もちろんWBELやCentOSシステム上に設定しているものと同じである必要はありません。

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

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

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

と実行します。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

と実行します。

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

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

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

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

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

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

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

と実行します。

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

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

このページの先頭へ↑

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

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

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

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

現在自分が使用しているユーザー名を知る方法は色々ありますが、例えば 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上の同じユーザーアカウントに引き継ぐことができます。

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

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

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

# 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のセキュリティオプションの設定 設定しているとします。


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

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

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

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

このサイトに対するご意見、ご要望、苦情、泣き言、献上品、資金援助などがございましたら こちら からお寄せください(お返事できなかったらごめんなさい)。もちろん リンクフリー です。趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。
Powered by Apache
”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。
Powered by White Box Enterprise Linux