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

Sambaサーバーについて

Sambaの構成と設定の方法

SWATの準備と設定

Sambaのコントロール

Sambaの全体動作の設定

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

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

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

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

プリンタサーバーの設定

Sambaについてその他


ホームディレクトリを活用しましょう

一般的にいうと、個人で使用しているパソコンの中身(データ)は他人には見せたくないものです。

従って、 ファイルサーバー 上にパソコンのデータのバックアップを取るような場合、誰もが自由に読み書きできる共有ポイントを利用するのは気持ちの良いものではないはずです。

例えば、 "/var/private/[ユーザー名]" というディレクトリを人数分作成して、それぞれのディレクトリに Samba で適切な設定を行えば、他人にはアクセスできない個人専用の共有ポイントを準備することができます。

"valid users" valid usersディレクティブについて は、特定の ユーザーアカウント を設定することで、そのユーザーアカウントのみにアクセス権限を与える ディレクティブ ですから、この設定で "suzuki" 専用の共有ポイントを作成可能というわけです。

ところが実際にこの共有ポイントを作るには、

1. シェル プロンプト から新規の WBEL CentOS のユーザーアカウント "suzuki" を作成する useraddコマンドについて

2. "/var/private" 以下に、ディレクトリ "suzuki" を作成する。

3. "suzuki" ディレクトリの所有者とパーミッションを適切に設定する。

4.Sambaのユーザーアカウントとして "suzuki" を登録する smbpasswdコマンドについて

5. "/etc/samba/smbusers" WindowsOS のユーザー名のマッピングを行う username mapディレクティブについて /etc/samba/smbusersについて

6. SWAT で共有ポイントの設定を行う。

7.Sambaの設定の再読み込みを行う Sambaの設定の有効化について

と、実にこれだけのプロセスを行わなければなりません。もちろん、ユーザーを削除するときもこれに準じた大変な作業になるでしょう。

また、この方法で次々に共有ポイントが増やしてしまうと、 サーバー 上が共有フォルダだらけになってしまいます。

Sambaの共有ポイントが増えすぎると...
Sambaの共有ポイントが増えすぎると...

さて、実は UNIX OS + Sambaという組み合わせでWindowsOSのファイルサーバーを作る場合、UNIX系OSの特徴を活かした巧妙な仕組みで簡単に個人用の共有ポイントを作成することができます。

その特徴とは、 ホームディレクトリ の存在です。


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

ホームディレクトリは、WindowsOSにはそもそもその概念そのものがなく、UNIX系OS特有の仕組みです。

ホームディレクトリは、OSにユーザーアカウントが作成されると同時に、「そのユーザーアカウントのみがアクセス権をもつディレクトリ」として作成されます。

つまり上に挙げた1.のプロセスだけで2〜3までが一挙に行われることになります。

またSambaはその動作の中で様々な変数を利用することで、共有ポイントのパラメータを動的に扱うことができますから、実は6と7のプロセスは一番最初に一度だけ行えば良いように動作させることができます。

という訳ですから、個人専用の共有ポイントをホームディレクトリを利用して作成する場合、

1. シェル プロンプト から新規の WBEL CentOS のユーザーアカウント "suzuki" を作成する useraddコマンドについて

4.Sambaのユーザーアカウントとして "suzuki" を登録する smbpasswdコマンドについて

5. "/etc/samba/smbusers" WindowsOS のユーザー名のマッピングを行う username mapディレクティブについて /etc/samba/smbusersについて

Samba及びSWATのバージョンが 3.0.25 以降の場合は、更に "available" ディレクティブを "yes" に設定する必要がありますので注意してください 共有ポイントの有効/無効のデフォルト値の変更

というたった三つのステップだけで済むことになります。

また、この方法で作成された個人専用の共有ポイントは、それを利用可能なユーザーのものしか表示されませんから、「サーバーを開くと共有ポイントだらけ」という見苦しさもありません。

以下に、この「ホームディレクトリ」を利用した個人専用共有ポイントの設定について解説します。

このページの先頭へ↑

ホームディレクトリの利用はUNIXの常識

ここまでこの コンテンツ の情報を頼りに Samba の設定を試てきたとしたら、ひょっとしたら既に自分の ホームディレクトリ に偶然アクセスできたことがあるかもしれません。

実をいうと、 WBEL CentOS に標準で インストール されるSambaは、 デフォルト でホームディレクトリが共有ポイントとして有効になっているからです。

ゲスト(nobody)用のホームディレクトリはありませんから、ゲストユーザーで ログイン してもホームディレクトリは表示されません。

WBELやCentOSのSambaは、Sambaに登録されているユーザーアカウントでログインすると、自動的にWBELやCentOSシステム上のホームディレクトリがそのまま共有ポイントとして利用できるようになっています。

要するに、この コンテンツ の推奨どおりに設定されている場合、ということです。

従って "GLOBALS" メニューで、

"security" の設定→ "USER" securityディレクティブの設定

"map to guest の設定→ "Bad User" map to guestディレクティブの設定

"username map" の設定→ "/etc/samba/smbusers" username mapディレクティブの設定

の場合で、なおかつSambaサーバーに接続する WindowsOS クライアント のユーザー名が "/etc/samba/smbusers" でSambaの ユーザーアカウント にマッピングされている場合に限り /etc/samba/smbusersの記述について 、クライアントがパスワードを入力してログインした場合に、ホームディレクトリはどこからともなくユーザーの前に姿を現すことになるわけです。

登録ユーザーでログインすると現れる共有ポイント
登録ユーザーでログインすると現れる共有ポイント

この共有ポイントの設定は、 "SHARES" メニューのプルダウンメニューから共有ポイント "homes" を選択し、 Choose Share (ファイル共有の選択)ボタンを左クリックすると見ることができますが、ここには以下のように設定らしい設定はほとんどありません。

実はホームディレクトリの共有ポイントに関する設定は、 "GLOBALS" メニューで設定されています。

ところが、 "GLOBALS" メニューで設定される "/etc/samba/smb.conf" "[global]" の記述部分を見ても、それらしい設定は何も見当たりません。

# Global parameters
[global]
    dos charset = CP932
    unix charset = EUCJP-MS
    display charset = EUCJP-MS
    workgroup = MYGROUP
    server string = Samba Server1
    map to guest = Bad User
    username map = /etc/samba/smbusers
    log file = /var/log/samba/%m.log
    max log size = 50
    socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
    dns proxy = No
    ldap ssl = no
    cups options = raw

共有ポイント "homes" に関する一見特殊ともいえる設定は、いったいどこに記述されているのでしょうか。

実は、共有ポイント "homes" は、Sambaにとっては「間違いなく利用される極めて常識的なもの」であって、 明示的に記述を行わなくてよいデフォルト値 として扱われているため、一見なにも設定が行われていないかのようになっているわけです。

Samba及びSWATのバージョンが 3.0.25 以降の場合は、デフォルトで "available" ディレクティブは "No" に設定されています 共有ポイントの有効/無効のデフォルト値の変更

もしも、このホームディレクトリを利用したSambaの共有ポイントを利用したくない場合には、 "SHARES" メニューのプルダウンメニューから "homes" を選択して Choose Share (ファイル共有の選択)を左クリックし、表示された設定画面を少し下にスクロールして "available" ディレクティブ "No" に設定します。

"available"〜共有ポイントの有効/無効の切り替え

このディレクティブについてはこちら 共有ポイントの有効/無効のデフォルト値の変更 の説明も参考にしてください。

Samba 及び SWAT のバージョンが "3.0.25" 以前の デフォルト のパラメータは "Yes" 、つまり「有効」です。一方それ以降のバージョンでは "No" 、つまり「無効」に設定されているはずです。

「無効」に設定すると、その共有ポイントの他の設定の内容に係わらずその共有ポイントは全く利用できなくなります。

「もうこの共有ポイントは二度と使うことがない」という場合は共有ポイントそのものを削除してしまっても構いませんが、そうすると設定まですべて消去されてしまいますので復活が面倒になります。

ところがこの ディレクティブ を利用して「無効」に設定しておけば、その共有ポイントの他のディレクティブはそのまま残しておくことができますので、後で「やっぱり有効にしたい」と思ったときに面倒がありません。

先にも説明したとおり、このディレクティブはSamba及びSWATのバージョンによってデフォルトの設定が異なりますので、設定には注意が必要です。

"homes"共有ポイントの有効/無効の確認

設定が終わったら、 Samba の同じ設定画面から Commit Changes (設定を反映)ボタンを左クリックし、Sambaの再起動などを行って設定を有効化してください Sambaのコントロール

インターネットエクスプローラーのアドレスバーに "\\web1" と直接 NetBIOS 名をタイプするのが簡単です。

設定が有効になったら、 サブネット 内の任意の WindowsOS クライアント から、適当な方法でSambaサーバーに接続してみてください。

設定の内容に応じて、ホームディレクトリの共有ポイントの表示、非表示が確認できると思います。

このページの先頭へ↑

ホームディレクトリを直接使用する場合の問題

さて、既にデフォルトで利用可能になっている共有ポイント "homes" ですが、そのまま利用するには困る部分があります。

Samba デフォルト ホームディレクトリ をそのまま共有ポイントとして利用します。

実際には、もっとたくさんのファイルが見えるかもしれません。

試しに共有ポイント "tanaka" を開くと、どこかで見たことのあるファイルなどが既にいくつか見えるはずです。

共有ポイントtanakaの中身
共有ポイント"tanaka"の中身

ホームディレクトリは、その ユーザーアカウント が利用する アプリケーション の初期設定ファイルである ドットファイル のデフォルトの格納ディレクトリであるだけでなく、 WBEL CentOS で使用する各ファイルの保存場所でもあります。

WBEL4及びCentOS4ではその他に、 "Desktop" というフォルダが見えるはずです。
これは X-Windowシステム 上のデスクトップに配置したファイルの保管場所で、 "pine-4.44-...rpm" はこの中に見つかるかもしれません。
また、 メールサーバー IMAP を利用した(している)場合は POP3/IMAP4の設定と利用について 、メールの保管場所のフォルダやファイルも見つかるはずです。

例えば ".bashrc" は、 nanoエディタのワードラップ禁止設定について の説明のとおり、標準の コマンド シェル である bash の初期設定ファイルですし、 "pine-4.44-...rpm" は、サーバー上で ダウンロード したプログラムの RPM です。

これらのファイルは基本的にWBELやCentOSのシステム上でしか使わないものですし、初期設定ファイルなどは間違えて削除すると困ることがありますから、できればこういうディレクトリをSambaの共有ポイントと共用することは避けたいところです。

そこで、ホームディレクトリ以下にSamba専用の空のディレクトリを作成し、共有ポイントをそのディレクトリに設定しなおすことをお勧めします。

ディレクトリパスを変更する

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

/etc/skelの利用について の説明に従って、予め "/etc/skel" 以下に、ディレクトリ "samba" を作成しておけば、ユーザーアカウント作成と同時にこのディレクトリが自動で作成されるようになります。
この場合、右の作業は全く不要になります。

それから ホームディレクトリ 以下に mkdir コマンドで "samba" ディレクトリを作成しますが、 デフォルト では パーミッション "775" で作成されてしまうので、厳密に自分専用のディレクトリにするために "-m" オプションを使ってパーミッションを "755" で作成してください。

[tanaka@web1 ~]$ mkdir -m 755 sambaEnter
[tanaka@web1 ~]$ ls -l -d sambaEnter  ←パーミッションを確認します。
drwxr-xr-x  2 tanaka  tanaka    4096 6月 7 19:32 samba
[tanaka@web1 ~]$

フォルダの作成が終わったら、 SWAT に接続して "SHARES" メニューに移動し、プルダウンメニューから "homes を選択して設定画面を表示してください。

デフォルトでは空欄になっているはずです。その場合は /home/%u が設定されているものと解釈してください。

この中の "path" ディレクティブ pathディレクティブについて に、 "/home/%u/samba" とパラメータを設定します。

"%u" は、 ログイン するSambaのユーザーアカウント名を表す 変数 としてSamba上で扱われるものです。

例えば "tanaka" でログインが行われる場合、 "homes" 共有ポイントのディレクトリ パス は、自動的に "/home/tanaka/samba" として扱われることになります。

"homes"共有ポイントの変更の確認

設定が終わったら、 Samba の同じ設定画面から Commit Changes (設定を反映)ボタンを左クリックし、Sambaの再起動などを行って設定を有効化してください Sambaのコントロール

インターネットエクスプローラーのアドレスバーに "\\web1" と直接 NetBIOS 名をタイプするのが簡単です。

設定が有効になったら、 サブネット 内の任意の WindowsOS クライアント から、適当な方法でSambaサーバーに接続してみてください。

ディレクトリ パス の変更前と全く同じ方法で接続を行っても、今度は何もファイルが表示されなくなっているはずです。

ディレクトリパス変更後の共有ポイントtanakaの中身
ディレクトリパス変更後の共有ポイント"tanaka"の中身

これで安心してSambaのホームディレクトリが利用できるようになりました。

このページの先頭へ↑

"ゴミ箱"の設置について

ホームディレクトリ を共有ポイントとして利用する場合、そのディレクトリは特定のユーザーが利用することになります。

ということは、 Samba で「ゴミ箱機能 ゴミ箱機能の設置について 」を利用する場合の問題 ゴミ箱を共用する場合の問題ついて はまず考えなくて良いでしょう。

もしも [global] セクション以下にゴミ箱機能設置のための ディレクティブ とパラメータを記述していない場合は、 [homes] セクション以下に記述しておけば、すべての ユーザーアカウント のホームディレクトリに ".recycle" フォルダが設置され、ゴミ箱機能を利用することができるようになります。

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

それから su コマンド アカウント "root" に変更し、 nano エディタで "/etc/samba/smb.conf" を開きます nanoエディタでファイルを開く

[tanaka@web1 ~]$ su -Enter
Password: "root"のパスワードを入力します。 Enter
[root@web1 ~]# nano /etc/samba/smb.confEnter


nanoで/etc/samba/smb.confを開く
nanoで"/etc/samba/smb.conf"を開く

ファイルが編集できるようになったら、 [homes] セクション以下に、次のように追加記述してください。

 前略
[homes]
    comment = Home Directories
    path = /home/%u/samba
    read only = No
    browseable = No

    vfs objects = recycle
    recycle:keeptree = yes
    recycle:noversions = yes


[printers]
    comment = All Printers
    path = /var/spool/samba

 後略

設定が終わったら、 Samba の同じ設定画面から Commit Changes (設定を反映)ボタンを左クリックし、Sambaの再起動などを行って設定を有効化してください Sambaのコントロール

インターネットエクスプローラーのアドレスバーに "\\web1" と直接 NetBIOS 名をタイプするのが簡単です。

設定が有効になったら、 サブネット 内の任意の WindowsOS クライアント から、適当な方法でSambaサーバーに接続してみてください。

".recycle" フォルダはすぐには現れないことがあります。
「設定を間違えたかな?」と見直しをする前に、ウインドウの "表示(V)" メニューから "最新の情報に更新(R)" を実行してみてください。

ホームディレクトリ内に適当なファイルをコピーし、そのファイルを選んでマウスを右クリックし、 削除(D) を選ぶか、 Delete キーを押して削除してみてください。 ".recycle" ファイルが出現するはずです。

共有ポイントtanakaの中に現れた.recycleフォルダ
共有ポイント"tanaka"の中に現れた".recycle"フォルダ

これで安心して サーバー 上のファイルを削除できるようになりました。

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