sambaサーバによるファイル共有環境の構築手順メモ

LAN内のPC間でファイル共有するために、ubuntu12.04にsamba(ver3.6.3)をインストールしてsambaサーバを構築しました。その構築手順とsambaの設定内容をメモします。

構築するファイル共有環境の概要

これから構築するsambaサーバによるファイル共有環境は以下の図になります。
samba_configure
上の図のように、user1〜user3が属するLAN内(192.168.1.0/24)にsambaサーバ(192.168.1.16/24)を用意し、sambaサーバ上のファイルをuser1〜user3間で共有可能な環境を構築します。
sambaサーバには以下の2種類のディレクトリを用意します。

  • 各ユーザのみがアクセスできる各ユーザと同名のディレクトリ。上図の場合、user1(user2、user3)のみがアクセスできるuser1(user2、user3)という名前のディレクトリを用意
  • 特定のグループに属するユーザのみがアクセスできるグループ共有用ディレクトリ。上図の場合、group1に属するuser1とuser2のみがアクセスできるpublicという名前のディレクトリを用意

sambaサーバの構築手順

上図のファイル共有環境の構築のためには以下の手順が必要になります。
1. sambaのインストール
2. sambaユーザの作成
3. sambaユーザのグループへの追加
4. グループ共有用ディレクトリの作成とアクセス権の設定
5. sambaの設定ファイルの編集

1. sambaのインストール

sambaのインストールはapt-getコマンドをubuntuのターミナル上で実行して完了です。


2. sambaユーザの作成

sambaを使用するユーザを作成する場合、sambaが動作するLinux上にsambaを使用するユーザと同名のLinuxユーザがすでに存在している必要があります。そのため、まず以下のuseraddコマンドをsambaをインストールしたubuntu上で実行し、ubuntu上にユーザを作成します。

「-m」はユーザを作成すると同時に作成したユーザと同名のホームディレクトリを作成するためのオプションです。他のオプションについては、「useradd – -help」で確認することができます。上記の場合は「user1」というubuntuユーザが新たに作成され、さらに「-m」オプションにより/home/にubuntuユーザ名と同じディレクトリ、すなわち/home/user1が作成されます。

次に以下のpdbeditコマンドを実行し、ubuntu上に作成したuser1をsambaユーザとして登録します。

「-a」はsambaユーザを追加するためのオプションです。上のコマンドによってsambaユーザとしてuser1が登録されます。ここのuser1はuseraddコマンドで作成したubuntuユーザ名と同じ必要があります。

なお、pdbeditコマンドを実行すると、以下のようにuser1のパスワードを設定するよう求められますので、適当なパスワードを設定して下さい。ここで設定したパスワードがsambaサーバに接続する際に必要になります。パスワードを入力してユーザが登録されると、Unix usernameなどユーザの情報が表示されます。

以上でsambaユーザの作成は完了です。user2、user3についても同様の手順です。

3. sambaユーザのグループへの追加

sambaでは、sambaが動作するLinux上に存在するグループ毎に、共有するファイルやディレクトリのアクセス権を変更できます。今回はubuntu上にgroup1という名前のグループを作成し、group1に属するユーザだけがアクセスできるディレクトリを作成します。

まず以下のgroupaddコマンドを実行し、ubuntu上にグループ「group1」を作成します。

次に、以下のgpasswdコマンドにより、group1にuser1、user2を追加します。「-a」はユーザを追加するためのオプションです。

以上でubuntu上のグループgroup1にuser1とuser2を追加できます。

4. グループ共有用ディレクトリの作成とアクセス権の設定

次に以下のmkdirコマンドによって、group1に属するユーザのみがアクセスできるグループ共有用ディレクトリとして使うpublicを作成します。

次に以下のchgrpコマンドによって、publicの所有グループをgroup1に変更します。

さらに以下のchmodコマンドによって、publicに対する読み取り、書き込み、実行権限をgroup1に属するユーザに与えます。

上記のchmodコマンドのオプション「-R」は、ディレクトリ内のファイルに対してもパーミッションを774に設定するためのオプションです。

ファイルパーミッションの数値について
上でchmodコマンドで774という値を指定していますが、この意味については下記のサイトがわかりやすく参考になるかと思います
パーミッションの操作

以上でgroup1に属するユーザのみがアクセス可能なディレクトリの作成は完了です。後はsamba側の設定によってグループ毎の管理が可能になります。グループ毎に管理するための設定は以降に載せます。

5. sambaの設定ファイルの編集

sambaの設定は設定ファイルである/etc/samba/smb.confを編集して行います。編集は以下のようにviエディタやnanoエディタなど好きなエディタで編集します。

以下にsmb.confの内容を載せます。ちなみに以下の内容はsmb.confの全てを載せている訳ではなく、コメント部分は省いています。

[global]、[homes]セクションは特殊セクション(samba側で予約されたセクション)でありセクション名は変更できません。[global]にはsamba全体の設定を記述し、[homes]にはホームディレクトリの設定を記述します。

以上で冒頭に載せた図のような最低限のファイル共有環境を構築することができると思います。もし何か間違えなどありましたらご指摘頂けると幸いです。

sambaに接続できない場合の確認事項

smb.confに記述ミスがないか

smb.confに記述ミスがある場合にはsambaが意図した動作をしません。そこでsmb.confに記述ミスがあるかを確認するために、以下のようにtestparmコマンドを使います。

上記の場合、testparmの結果のなかに、「Unknown parameter encountered: “validdd users”」と書かれています。これは「validdd users」というパラメータは存在しないとエラーを出しています。これは正しくは「valid users」です。このように、testparmを使うことでsmb.confの記述ミスを確認することができます。

ファイル、ディレクトリのアクセス権が適切に設定されているか

smb.conf内で書き込み許可、読み取り許可を与えていても、sambaが動作するLinuxにおけるアクセス権(ファイルパーミッション)が適切に設定されていなければ、以下のようなエラーが出て書き込み、読み込みができません。この場合はsambaが動作するLinux側でchmod、chgrp、chownコマンドなどを使って共有するファイル、ディレクトリに対するアクセス権を設定し直すことで解決できると思います。

    • Windows7の場合

windows7_samba_error1

    • Ubuntuの場合

samba=error

    • Macの場合

samba_error_mac

ファイアウォールによってsambaが使用するポートがブロックされていないか

ファイアウォールによってsambaが使用するポートがブロックされていると、ユーザはsambaに接続できません。ファイアウォールが原因であるかを確認する手段として、アクセスしようとしているパソコンのファイアウォールを一時的に停止することがあります。ただし、当然ながらこの場合は無防備な状態になるため、セキュリティ的に安全な環境を確保してから自己責任で実行して下さい。

一例として、iptablesをインストールして動作させているubuntuからsambaサーバにアクセスできなかった場合は、iptablesの設定内容を確認し、UDPの137番、138番、TCPの139番、445番のポートを許可する設定になっているかを確認すると良いと思います。ちなみに、iptablesにおいてUDPの137番、138番、TCPの139番、445番をそれぞれ許可するためには、以下のコマンドを実行します。iptablesの使い方についてはiptablesの概要メモに簡単にメモしてあります。

また、アクセスしようとしているパソコンだけでなく、sambaサーバ自体のファイアウォールが原因であることも考えられるので、sambaサーバ側のファイアウォールを一時的に停止して動作を確認することもひとつの手段になります。

参考書籍

sambaサーバに限らず、ApacheやSquidなどその他多数あるLinux上で動作するサーバを構築する場合には、やはりLinuxシステムの知識が必要になります。これまではLinuxで知らないことはその都度ネットで調べれば良いと思っていましたが、最近は以下のような本を購入して一度網羅的に勉強するようにしています。今回は特にアクセス権とファイルパーミションについて下記の本を参考にさせて頂きました。やはり、ネットで調べた場合に比べて、本のほうが得られる知識やその周辺知識が多いです。

今回sambaサーバを構築するにあたっては、以下の本を参考にさせて頂きました。この本は基本的な構築方法からLDAP認証を用いたsambaサーバの構築方法まで幅広く載っています。まだ全て読んでいないのでしっかり読みたいと思います。

このエントリーをはてなブックマークに追加

SPONSORED LINK

この投稿へのコメント

コメントはありません。

コメントを残す

メールアドレスが公開されることはありません。

この投稿へのトラックバック

  1. […] ファイル共有するためにLAN内にsambaサーバ(ubuntu12.04にsambaをインストール)を構築し(sambaサーバによるファイル共有環境の構築手順メモを参照)、ubuntuやWindouwsからは接続できる状態であったものの、macbookpro(2011 Early, Mac OS X 10.6.8)からは接続できない問題が発生。ただ、簡単に解決できたので備忘録としてメモします。 […]

  2. […] https://www.virment.com/linux/268/#samba-3 […]

  3. […] パスワードや管理方法としてグループアカウントを作る方法、コマンドからsamba […]

トラックバック URL