Debian GNU/Linux 3.1 への Samba インストール
Debian GNU/Linux 3.1は2005年6月6日にリリースされたDebian GNU/Linux安定版で、Debian Projectによってメンテナンスされています。無償で入手が可能で安定指向であることから、サーバ用途を中心に人気の高いディストリビューションです。
Debian GNU/Linux 3.1にはsargeというコード名が付けられていますので、本稿では以下sargeという呼称を用います。
以下、sargeにSambaをインストールする際の方法や注意点について説明します。sargeについてはbase systemのインストールを行い、固定IPでホスト名の設定を行っている前提で説明します。説明の都合上本稿ではmelroseというホスト名を用います。
Sambaのインストール
sargeにはSambaのパッケージが含まれていますが、通常のインストールを行った状態では、インストールされていないことが多いでしょう。以下インストールについて説明します。
SambaのパッケージはCD-ROMなどから入手することも可能ですが、最近はセキュリティホールの発見によりパッケージのバージョンアップが頻繁に行われますので、可能な限り、インターネットから最新版のパッケージを入手してインストールすることをお勧めします。以下sargeにデフォルトで同梱されているパッケージ管理コマンドのapt-getコマンドを用いた方法を説明します。
apt-getコマンドを用いる場合は、インターネット上にあるパッケージ配布元サイトの情報などを設定する必要があります。この設定はインストール中にも行えますので、既に設定を完了している場合は、その設定を用いてください。設定を行っていない、あるいはうまく動作しないという場合は、/etc/apt/sources.listというファイルの内容を以下のように設定してください。
deb ftp(※)://ftp.jp.debian.org/debian/ stable main deb-src ftp(※)://ftp.jp.debian.org/debian/ stable main deb http://security.debian.org/ stable/updates main contrib ※ftpが利用できない場合はftpの代わりにhttpを指定してください。
インターネットへのアクセスにプロキシサーバーを経由することが必要な場合は、プロキシサーバーのIPアドレスやホスト名とポート番号を環境変数http_proxyもしくは/etc/apt/apt.confファイルに設定します。例えば、HTTPプロキシのIPアドレスが192.168.1.1でポート番号が8080の場合は、http_proxy環境変数を
melrose:~# export http_proxy=http://192.168.1.1:8080/(※) ※: tcshなどcsh系のシェルを用いている場合は、「setenv http_proxy http://192.168.1.1:8080/」と入力します。 <pre> のように設定するか、/etc/apt/apt.confファイルを <pre> Acquire::http::Proxy "http://192.168.1.1:8080";
という行を含むように作成してください。
引続き、以下のように「apt-get update」コマンドを実行してパッケージ情報を最新にします。
melrose:~# apt-get update ヒット http://security.debian.org stable/updates/main Packages ヒット http://security.debian.org stable/updates/main Release ヒット http://security.debian.org stable/updates/contrib Packages ヒット http://security.debian.org stable/updates/contrib Release ヒット ftp://ftp.jp.debian.org stable/main Packages ヒット ftp://ftp.jp.debian.org stable/main Release ヒット ftp://ftp.jp.debian.org stable/main Sources ヒット ftp://ftp.jp.debian.org stable/main Release パッケージリストを読みこんでいます... 完了
ここで、以下のように「apt-get install samba」コマンドでインストールを行います。
melrose:~# apt-get install samba パッケージリストを読みこんでいます... 完了 依存関係ツリーを作成しています... 完了 以下の特別パッケージがインストールされます: libcupsys2-gnutls10 libkrb53 libldap2 libsasl2 samba-common 提案パッケージ: krb5-doc krb5-user samba-doc 推奨パッケージ: libsasl2-modules 以下のパッケージが新たにインストールされます: libcupsys2-gnutls10 libkrb53 libldap2 libsasl2 samba samba-common アップグレード: 0 個、新規インストール: 6 個、削除: 0 個、保留: 0 個。 5341kB 中 0B のアーカイブを取得する必要があります。 展開後に追加で 13.3MB のディスク容量が消費されます。 続行しますか? [Y/n] ←[return] を入力
インターネットにアクセスできない環境では,Debianのパッケージサイトから最新パッケージをダウンロードするか、CD-ROMなどから取得した上で、dpkg -iコマンドを用いてインストールします。
コラム: sargeのコンソールで日本語を利用する
言語として日本語を指定してsargeをインストールした場合、最低限のインストールを行った状態では日本語が文字化けして表示されません。コンソールで日本語を表示するには、xfonts-baseパッケージをインストールした上で、jfbtermコマンドを実行しておく必要があります。実行例を以下に示します。
melrose:~# apt-get install xfonts-base Reading Package Lists... Done Building Dependency Tree... Done Suggested packages: xfs xserver The following NEW packages will be installed: xfonts-base 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 5490kB of archives. After unpacking 6918kB of additional disk space will be used. Get:1 ftp://ftp2.jp.debian.org stable/main xfonts-base 4.3.0.dfsg.1-14 [5490kB] Fetched 5490kB in 17s (315kB/s) Selecting previously deselected package xfonts-base. (Reading database ... 10474 files and directories currently installed.) Unpacking xfonts-base (from .../xfonts-base_4.3.0.dfsg.1-14_all.deb) ... Setting up xfonts-base (4.3.0.dfsg.1-14) ... melrose:~# jfbterm (省略) melrose:~#
インストールが完了すると、自動的に初期設定メニューが起動します。以下順に説明します。
- (1) ワークグループ/ドメイン名は何ですか?
- 「ネットワークコンピュータ」上でSambaマシンのアイコンを表示させる場所(ワークグループ)を指定します。Windowsマシンと同じワークグループ名にしておけば問題ないでしょう。あくまで表示上の問題ですので、どのような値にしてもSambaマシンへのアクセスに影響が出ることはありません。良くわからない場合は「WORKGROUP」などにしておけばよいでしょう。
- (2) パスワードの暗号化を使いますか
- 「<はい>」を選択します。
- (3) DHCP から WINS 設定を使うよう smb.conf を変更しますか?
- 固定IPを用いている前提ですので「<いいえ>」を選択します。
- (4) どのように Samba を実行したいですか?
- 「デーモン」を選択します。
- (5) Samba パスワードデータベース /var/lib/samba/passdb.tdb を作成しますか?
- 「<はい>」を選択します。
ここまでの設定を行うと、最後に以下のような画面が出力されてSambaのインストールが完了します。インストールが完了すると、Sambaが起動していますので注意してください。
未選択パッケージ libldap2 を選択しています。 (.../libldap2_2.1.30-8_i386.deb から) libldap2 を展開しています... 未選択パッケージ libkrb53 を選択しています。 (.../libkrb53_1.3.6-2_i386.deb から) libkrb53 を展開しています... 未選択パッケージ libcupsys2-gnutls10 を選択しています。 (.../libcupsys2-gnutls10_1.1.23-10_i386.deb から) libcupsys2-gnutls10 を展開しています... 未選択パッケージ samba-common を選択しています。 (.../samba-common_3.0.14a-3_i386.deb から) samba-common を展開しています... 未選択パッケージ samba を選択しています。 (.../samba_3.0.14a-3_i386.deb から) samba を展開しています... libsasl2 (2.1.19-1.5) を設定しています ... libldap2 (2.1.30-8) を設定しています ... libkrb53 (1.3.6-2) を設定しています ... libcupsys2-gnutls10 (1.1.23-10) を設定しています ... samba-common (3.0.14a-3) を設定しています ... samba (3.0.14a-3) を設定しています ... Generating /etc/default/samba... TDBSAM version too old (0), trying to convert it. TDBSAM converted successfully. account_policy_get: tdb_fetch_uint32 failed for field 1 (min password length), returning 0 account_policy_get: tdb_fetch_uint32 failed for field 2 (password history), returning 0 account_policy_get: tdb_fetch_uint32 failed for field 3 (user must logon to change password), returning 0 account_policy_get: tdb_fetch_uint32 failed for field 4 (maximum password age), returning 0 account_policy_get: tdb_fetch_uint32 failed for field 5 (minimum password age), returning 0 account_policy_get: tdb_fetch_uint32 failed for field 6 (lockout duration), returning 0 account_policy_get: tdb_fetch_uint32 failed for field 7 (reset count minutes), returning 0 account_policy_get: tdb_fetch_uint32 failed for field 8 (bad lockout attempt), returning 0 account_policy_get: tdb_fetch_uint32 failed for field 9 (disconnect time), returning 0 account_policy_get: tdb_fetch_uint32 failed for field 10 (refuse machine password change), returning 0 Starting Samba daemons: nmbd smbd.
ここまでのインストールを行うと、実際にはsambaおよびsamba-commonパッケージがインストールされますが、Sambaを構成するパッケージは他にもあります。詳しくは以下の表を参照してください。
パッケージ名 | 説明 |
libsmclient | Sambaライブラリ |
libsmbclient-dev | Sambaライブラリの開発環境 |
samba | Sambaのサーバプログラム(smbd/nmbdなど) |
samba-common | Sambaの共通プログラム/ファイル(smb.confなど) |
samba-doc | Sambaのドキュメント(英語) |
samba-doc-ja | Samba 2.X用のドキュメント(日本語) |
smbclient | Sambaのクライアントプログラム(smbclientなど) |
smbldap-tools | SambaとLDAPの連携を助けるツール |
swat | SWAT関連(swatなど) |
後述するSWATを利用する場合は、swatパッケージをインストールします。またSambaサーバ上でマニュアルページ(オンラインドキュメント)を参照したい場合は、samba-docやsamba-doc-jaパッケージを適宜インストールしてください。「apt-get install パッケージ名」コマンドで特定のパッケージおよびそのパッケージが依存するパッケージをインストールすることが可能です。
SWATをインストールする
SWATはSambaに同梱されているツールで、WebブラウザによるSambaの設定や管理を実現します。問題点もありますが,初心者やLinuxに不慣れな管理者にとっては便利です。
SWATを実行するには、swatパッケージが必要です。インストールを行っていない場合は、「apt-get install swat」コマンドでインストールします。
melrose:~# apt-get install swat パッケージリストを読みこんでいます... 完了 依存関係ツリーを作成しています... 完了 推奨パッケージ: samba-doc 以下のパッケージが新たにインストールされます: swat アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。 4053kB 中 0B のアーカイブを取得する必要があります。 展開後に追加で 9527kB のディスク容量が消費されます。 パッケージを事前設定しています ... (データベースを読み込んでいます... 現在 10560 個のファイルとディレクトリがインストールされています。)
インストールを開始すると、右の警告画面が表示されますので、「了解」を押します。
最終的に、画面に以下のような表示が行われてSWATのインストールが完了します。
(.../swat_3.0.14a-3_i386.deb から) swat を展開しています... swat (3.0.14a-3) を設定しています ... melrose:~#
インストールが完了したら、/etc/inetd.confファイルを参照します。ファイル末尾に以下のような行が追加されていますので、「#<off>#」というコメントを削除します。
#<off># swat stream tcp nowait.400 root /usr/sbin/tcpd /usr/sbin/swat
さらに、/etc/hosts.allowファイルを作成して、指定されたIPアドレス以外からSWATにアクセスできないようにしておきます。以下のように/etc/hosts.allowファイルに「swat:」から始まる行を追加して、SWATへの接続を許可するIPアドレスを設定してください。
swat: 127.0.0.1 192.168.1. 192.168.2.2 ※上記は127.0.0.1、192.168.1.0~192.168.1.255と192.168.2.2からのアクセスを許可する場合の例
このファイルの設定を行わない場合、全てのIPアドレスからSWATへのアクセスが可能となります。
ここまでの設定を行ったら、以下のようにして、/etc/inetd.confファイルの変更を反映させます。
melrose:~# /etc/init.d/inetd reload Reloading internet superserver: inetd.
アクセスを許可したIPアドレスのマシンでブラウザを開き、ブラウザのアドレス欄に「http://sambaサーバーのIPアドレス:901/」と入力することで接続できます。
認証を求められますので、右の図のようにユーザ名に「root」、パスワードにrootユーザーのパスワードを入力します。
右の図のような英語の画面が表示されたら、SWATへの接続は完了です。
コラム: sargeのSWATの画面を日本語化する
sargeのswatパッケージに含まれているSWATは日本語に対応していますが、sargeのパッケージングの方針か、日本語のメッセージファイルが含まれていないため、英語のメッセージが出力されます。
日本語のメッセージを出力させたい場合は、日本語のメッセージファイルja.msgファイルを取得の上、/usr/share/sambaにコピーしてください。これにより右の図のようにSWATの画面が日本語化されます。
ja.msgファイルはSambaのソースアーカイブのsource/poディレクトリ存在する他、日本語表示に対応したディストリビューションであれば、どこかに存在しています。例えばFedora Core 3では/usr/lib/sambaディレクトリに存在します。
SWATの画面上部にある「GLOBALS」、「SHARES」といったメニューをクリックすることで、Sambaの設定が可能です。各々のメニューの意味については以下の表を参照してください。詳細については順次説明を行なっていきます。
メニュー | 意味 |
HOMES | 各種ドキュメントの閲覧 |
GLOBALS | Samba全体を設定する[global]セクションの設定 |
SHARES | 各ファイル共有の設定。ユーザホーム機能を実現する [homes] セクションの設定 |
PRINTERS | 各プリンタ共有の設定。OSが定義したプリンタを共有する [printers] セクションの設定 |
WIZARD | ウィザード形式によるSambaの設定 |
STATUS | Sambaデーモンの起動と終了。アクセス状況の表示、セッションの 強制切断も可能 |
VIEW | smb.confファイルの内容表示 |
PASSWORD | Sambaユーザの追加や削除、パスワードの変更。リモートマシンに対する操作も可能 |
Sambaの起動とWindowsマシンからの接続
SambaとSWATのインストールが完了したところで、とりあえずSambaを起動してWindowsマシンから接続してみましょう。sarge上にmonyoというユーザーを作成して、Windowsマシンからは、このユーザーでアクセスしてみます。
ユーザーの作成
Windowsマシンからアクセスするには、
- 1) Sambaマシン上にユーザーを作成
- 2) 作成したユーザーに対応するSambaユーザーを作成
- 3) Sambaユーザーにパスワードを設定
という手順を踏んでユーザーを作成する必要があります。
Sambaマシン上にユーザーを作成する方法は幾つかありますが、コマンドラインからrootユー図xx29ザーで、
# useradd -m monyo
のようにしてユーザー(ここではmonyo)を作成するのが簡単です。このユーザーを用いてftpやsshなどで接続する必要がなければ、パスワードの設定は不要です。もちろん既に存在しているユーザーを流用してもかまいません。
次にSambaユーザーを作成します。SWATを使う場合はPASSWORDメニューの画面で、右の図のように「UserName」欄に作成したいSambaユーザー(ここではmonyo)、その下の「New Password」および「Re-type New Password」欄に同じパスワードを入力した上で、「Add New User」ボタンを押します。作成が成功すると,ボタンの下に、
Added user monyo.
というメッセージが表示されます。コマンドラインから行う場合は、以下のようにsmbpasswdコマンドを用います。-aオプションに引続き、追加したいSambaユーザー名を指定してください。
melrose:~# smbpasswd -a monyo New SMB password: ←パスワードを入力 Retype new SMB password: ←もう一度パスワードを入力 Added user monyo. melrose:~#
Sambaユーザーを作成する際、Samba本体は停止していても構いません。また、Sambaユーザーの作成は直ちに反映されますのでSambaの再起動は不要です。なお、Sambaユーザー名はsarge上のユーザーと同名にする必要があります。
Sambaの起動と停止
sargeの場合は、Sambaのインストールが完了した時点でSamba(smbdとnmbdの各プロセス) が自動的に起動するとともに、再起動の際にも自動でSambaが起動するように設定が行われていますので、特に設定を行う必要はありません。
Sambaを一時的に停止したいという場合は、以下のようにしてください。
melrose:~# /etc/init.d/samba stop Stopping Samba daemons: nmbd smbd. melrose:~# /etc/init.d/samba start Starting Samba daemons: nmbd smbd.
再起動の際にSambaが自動で起動するのを止めたいという場合は、rcconfパッケージをインストールした上で、rcconfコマンドを起動すると表示される右の画面からsambaのチェックを外すのが簡単で良いでしょう。
Windowsマシンからの接続
Windowsマシン側では、他のWindowsマシンへ接続する時と同様の設定を行なっておけば充分です。企業内のワークグループ環境では設定済だと考えて良いでしょう。
パーソナルファイアウォールがインストールされている場合は、設定の変更が必要な場合もあります。変更方法はパーソナルファイアウォールのソフトウェアにより異なりますので、マニュアルなどを参照してください。Sambaの動作確認を行なう場合は、パーソナルファイアウォール側の設定ミスによるトラブルを避けるため、パーソナルファイアウォールを一時的に無効にして確認することをお勧めします。
設定を確認できたら、「ファイル名を指定して実行」欄、もしくはエクスプローラのアドレス欄などに「\\LinuxマシンのIPアドレス」もしくは「\\Linuxマシンのホスト名」と入力してください。Sambaが起動していれば、右のようなパスワードダイアログボックスが現れますので、適切なユーザ名とパスワードを入力してください。
これにより、右のような共有一覧画面が現れます。
ただし、Windows側とSamba側とでユーザ名とパスワードが一致している場合は、ダイアログボックスは表示されず、そのまま共有一覧画面が現れます。
自分のユーザ名の共有(この例ではmonyo)に入ってみると、右のようにsarge上のホームディレクトリのファイルが表示されている筈です。ここまでできれば、ひとまずSambaマシンの起動は成功です。単にファイル交換を行う程度であれば、この設定でも実用になるでしょう。
Sambaがうまく動作しない場合のトラブルシューティング
手順通りに設定したが、どうしてもうまくアクセスできないという場合は、以下を参考にして、トラブルシューティングを行なってください。
ファイアウォールやセキュリティの設定を確認する
インターネットからの不正なアクセスを防御してくれるファイアウォールですが、Sambaにとって本来必要な通信も遮断してしまう厄介な機能でもあります。うまくつながらないといった原因のかなりのものがWindows上でパーソナルファイアウォールが実行されていることによるものです。初心者の方の場合、ファイアウォールを無効にして確認を行なったつもりが実は無効になっていなかったという場合もあるので、どうやってもつながらない場合は、一度ファイアウォールをアンインストールして試してみてください。
TCP/IPレベルの接続を確認する
Sambaの設定が適切に行なわれていても、基本となるTCP/IPの設定に誤りがあっては当然接続できません。IPアドレス、サブネットマスクなどの設定を確認してください。目視確認を行なったら、
- 1) WindowsおよびLinux上で
ping <相手マシンのIPアドレス>
- を実行して互いに反応があることを確認する。
- 2) Windowsマシン上で
nbtstat -A <LinuxマシンのIPアドレス>
- を実行して、以下のような出力が得られることを確認する。
C:\>nbtstat -A 192.168.135.130 VMware Network Adapter VMnet8: Node IpAddress: [192.168.135.1] Scope Id: [] NetBIOS Remote Machine Name Table Name Type Status --------------------------------------------- MELROSE <00> UNIQUE Registered MELROSE <03> UNIQUE Registered MELROSE <20> UNIQUE Registered ..__MSBROWSE__.<01> GROUP Registered BIRDLAND <00> GROUP Registered BIRDLAND <1D> UNIQUE Registered BIRDLAND <1E> GROUP Registered MAC Address = 00-00-00-00-00-00
といった確認を行なってください。1)がうまくいかない場合はTCP/IPレベルの設定に問題があります。2)がうまくいかない場合は、Sambaが起動していない、ファイアウォールが有効になっているといった原因が考えられます。
ファイアウォールが有効になっていると、pingコマンドに失敗してもSambaでは接続できてしまうといったケースがありますので、トラブルシューティングの観点からは、ファイアウォール機能を一時的に無効にした状態で確認を行なった方が確実です。
ただし、ルータなしにインターネットにマシンが直結されているような環境では安直にファイアウォールを無効にするのは危険ですので、必ずインターネットとの接続を切断した状態で確認を行ない、最終的にインターネットに再接続する前には、Sambaの通信に不要な通信は元通り遮断する設定を行なってください。
Sambaユーザ名とパスワードを確認する
右のダイアログボックスが表示されれば、Samba自体は動作しています。Linuxマシン上に作成したSambaユーザのユーザ名やパスワードを確認してください。
Sambaの設定
ここまでSambaを動作させる上で最低限の設定を説明しました。以下ファイル・サーバーとして利用する際に最低限設定を行うべき点を中心に、Sambaの設定を説明します。
Sambaの設定は、/etc/sambaにある右のようなsmb.confファイルで行います。このファイルを直接編集しても構いませんが、ここではSWATを用いた編集を前提に説明します。いずれの場合も、編集完了後にSambaを再起動(一度停止した後再度起動)してください。
実際は再起動が不要な場合もありますが、無用の混乱を避ける意味でSambaの再起動を推奨します。
また、SWATで設定を行なうと、smb.conf中のコメントがすべて消去されてしまいます。sargeデフォルトのsmb.confファイルは/etc/samba/smb.conf.originalなどの名前でバックアップしておくことを強く推奨します。
コラム: smb.confを直接編集する
SWATを用いずに、smb.confファイルを直接編集しても構いません。smb.confファイルは以下のように単純な構造ですので、viなどLinux上のエディタを使える人であれば、設定方法でつまづくことはないと思います。
[global] パラメータ名 = 値 パラメータ名 = 値 ... [homes] パラメータ名 = 値 ... [share1] ... [share2] ...
[ ]で囲まれた文字列(図xx36ではshare1など、Sambaではセクションと呼びます)は基本的に共有名を示し、次の[ ]で囲まれた文字列の行が現れるまでの各行が、該当の共有に関する設定となります。ただし、global、homes、printersという3つだけは、表xx37のように特殊な意味を持っています。
----- 表xx37:特殊なセクション global, Samba全体の設定を記述する。特定の共有には関連づけられていない homes, この共有を定義すると、各ユーザのホームディレクトリが一括して共有される printers, この共有を定義すると/etc/printcapファイルで定義されたプリンタが一括して共有される ----- SWATでもVIEWメニューを選択することで現時点でのsmb.confの設定を表示できます。
Samba全体の設定
GLOBALSメニューを選択すると現れるSamba全体の設定について、これだけは設定しておいた方がよいというパラメータを紹介します。
- workgroup = 任意のワークグループ名
- ネットワークコンピュータ」上でSambaマシンのアイコンを表示させる場所(ワークグループ)を指定します。インストール中に入力した値が設定されている筈ですので、特に変更がなければそのままでよいでしょう。
- os level = 1 (デフォルト値20)
- 「ネットワークコンピュータ」関連の無用のトラブルを避けるために、初心者の方は、このように設定することをお勧めします。資料によっては安易にこの値を大きな値にしているものもありますが、その場合Sambaの設定を誤るとネットワーク全体で「ネットワークコンピュータ」の機能がうまく動作しなくなります。従って、特に企業内LANでは上記の設定を強く推奨します。家庭内などで他にサーバが存在しない場合は、デフォルト値でも良いでしょう。
- Sambaをドメインコントローラにする場合は、この値を32以上にする必要があります。逆にSambaがドメインコントローラでない場合は、絶対にこの値を32以上にしてはいけません。
- wins server = <WINSサーバのIPアドレス>
- 社内LANなどでネットワーク上にWINSサーバが存在している場合は指定してください。
右にSWATでこれらの設定を行なった画面を示します。ここまでの設定を行なったら、まずは「Commit Changes」ボタンを押して設定を反映させてください。
日本語の設定
ついで日本語を利用するための設定を行います。
以下の2つのパラメータは日本語を使用する上で必須のパラメータですが、標準の状態では設定画面に現れませんので、「GLOBALS」をクリックした状態のSWATの画面から「Advanced」を選択すると表示される右の画面で設定を行なってください。
- dos charset = CP932
- 日本語の使用を指定します。
- unix charset = EUCJP-MS
- UNIX側で日本語を保存する際の文字コードを指定します。sargeの場合、日本語環境のデフォルトがEUC(ja_JP.eucJP)なので、それに合わせてEUCJP-MSに設定するのが良いでしょう。
ここまでの設定を行なったら、再度「Commit Changes」ボタンを押して設定を反映させてください。
GLOBALSメニューは、この程度の修正で充分です。ここまでの設定を反映したsmb.confを参考までに以下に示します。
[global] dos charset = CP932 unix charset = EUCJP-MS workgroup = BIRDLAND os level = 1 wins server = x.x.x.x ※実際にsarge上で設定を行った場合は、これ以外にもsargeデフォルトで設定されているパラメータが幾つか表示されます。
ホームディレクトリの共有
全体の設定が終ったら、共有の設定を行ないましょう。
sargeのデフォルトでは各Sambaユーザーのホームディレクトリの共有が行なわれています。ただし、デフォルトでは書き込みができない状態になっていますので、実際に運用を行う上では読み書き可能にする必要があるでしょう。
ホームディレクトリの共有を設定するには、SHARESメニューを選択すると押すと現れる「SHARESメニュー」画面で「Choose Share」の右にあるドロップダウンリストから「homes」を選択し、「Choose Share」ボタンを押してください。
表示される画面で、「homes共有の修正」のようにread onlyパラメータをNoに設定することで、書き込みが可能になります。この設定を行っても、Sambaサーバ上のアクセス権の設定により、ホームディレクトリの所有者以外が書き込むことはできません。
グループでの共有ディレクトリ
ファイル・サーバーとしての設定例として、グループ(複数ユーザ)で共有するディレクトリの設定を行なってみましょう。ここでは以下のような共有を作成します。
- Linuxマシン上の/home/project1ディレクトリを共有する
- Linuxマシン上のgroup1グループに所属するユーザのみがアクセス可能
- アクセス可能なユーザが書き込んだファイルを別のユーザが自由に編集できる
- 共有名はshare1
Linuxマシン上の準備
共有の作成にはLinux側でも作業が必要です。必要な作業を以下に示します。
melrose:~# groupadd group1 melrose:~# vigr (/etc/group ファイルを編集して、group1グループに必要なユーザを追加) melrose:~# mkdir /home/project1 melrose:~# chgrp group1 /home/project1 melrose:~# chmod 775 /home/project1
まずgroupaddコマンドでLinuxマシンにgroup1グループを追加します。ついでvigrコマンドで/etc/groupファイルを編集します。例えばgroup1グループにmonyoとmarieというユーザを所属させたい場合は、group1からはじまる行をi以下のように編集してください。
group1:x:1001: monyo,marie |~~~ |~~~~~~~~~~ | +-- 所属させるユーザを「,」で区切って列挙する | +-- 環境によって異なるGID
更に、/home/project1ディレクトリを作成し、グループをgroup1にした上で、group1に書き込み権を与えます。
Samba側の設定
ついで、Sambaの設定に移ります。SWATを用いて設定を行なってみましょう。SHARES画面で「Create Share」欄の横に「share1」と入力の上、「Create Share」ボタンを押します。ここで「Advanced」を押すと現れる「ファイル共有の設定」画面で設定を行ないます。以下設定について簡単に説明しましょう。
- read only = no
- この値がyes(デフォルト値)の場合、共有に書き込むことはできません。
- force group = group1
- 共有内に書き込まれたファイルやディレクトリのグループを強制的にgroup1にします。
- force create mode = 764 / force directory mode = 775
- 共有内のファイルやディレクトリのLinux上でのアクセス権を指定します。764や775に設定することで、グループに書き込み権が与えられます。force groupと合わせることで、group1に所属するユーザであれば、共有内のファイルを編集することが可能になります。
- valid users = @group1
- 共有にアクセスできるユーザをgroup1グループに所属するユーザのみに限定します。この設定がない場合、Sambaにアクセスできるユーザ全員が共有内のファイルの読み書きが可能となります。
ここまで設定を行なったら、「変更を反映」ボタンを押して設定を反映させてください。
Samba再起動後、Linuxサーバにアクセスすると、share1という共有が追加されており、group1グループに所属する複数のユーザ間でファイルの編集が可能になっている筈です。
ここまでのファイル共有に関する設定をsmb.confファイル上で行ったものを以下に示します。
[global] dos charset = CP932 unix charset = EUCJP-MS workgroup = BIRDLAND os level = 1 wins server = x.x.x.x [homes] comment = Home Directories read only = No browseable = No [share1] path = /home/project1 valid users = @group1 force group = group1 read only = No force create mode = 0764 force directory mode = 0775
たったこれだけの設定ですが、Sambaをファイル・サーバーとして使用するだけであれば、これで充分です。