家庭内でファイルを共有するファイルサーバーを構築します。そこそこの容量がクラウドで無料で手に入る昨今ですが、バックアップやそこそこ容量のある共有ファイルの置き場所として重宝すると考えて作ってみました。クラウドは転送速度が遅いので、扱う容量が大きいと使い勝手が悪いですよね。
例として、以下の三つのファイル共有を作成してみます。
まず、ファイル共有ツールであるSambaのインストールとそれ用の設定を行います。
Sambaをインストールします。4.5, 4.6, 4.7, 4.8といろいろなバージョンがありますが、最新の安定版の4.8をインストールします。
コマンドプロンプトで以下のコマンドを打ってください。
# pkg install samba48[ENTER]
OS起動時にSambaも起動するようにrc.confファイルを編集します。コマンドプロンプトで
# ee /etc/rc.conf[ENTER]
と打ってrc.confを開き、以下の入力をします。
samba_server_enable="YES"
Sambaの設定ファイルであるsmb4.confは、以下のセクションの作成が可能で、その各セクションに設定を書き込むことになります。
今回は、
というファイル共有を行いますので、
として、全体構成は、
[global]
設定、、、
[Shared]
設定、、、
[Family]
設定、、、
[Masao]
設定、、、
となります。
様々なパラメーターについては、デフォルトの設定がありますので、それを変更するものだけをここで書けばOKです。デフォルト値は、
# testparm > /usr/local/etc/smb4.defaults[ENTER]
とすると、/usr/local/etc/samba24フォルダーにあるsmb4.defaultsに書き出されるので、
# more /usr/local/etc/smb4.defaults[ENTER]
といったような方法で、確認できます。
さて、実際の作成作業に移ります。まず、設定ファイルを作成して、エディタで開きます。
# ee /usr/local/etc/smb4.conf[ENTER]
ここでは、[global]セクションの記載を取り上げます。
まずはセクション名を書きます。以下の内容を書き込みます。
[global]
以下の内容を書き込みます。
workgroup = WORKGROUP
server string = (適当に自分でつけてください)
netbios name = (適当に自分でつけてください)
workgroupは、サーバーが表示されるワークグループ名、server stringは、ブラウズリストでコンピューター名の横に表示されるテキスト、netbios nameは、サーバーのNetBIOS名、をそれぞれ設定します。
ここら辺は、結果オーライでこうなっているだけで、技術的なバックグラウンドを理解していません。こう設定しないとクライアント側のWindows PCで、ファイルサーバーが表示されませんでした。以下の内容を書き込みます。
dns proxy = no
local master = yes
os level = 200
dns proxyとlocal masterをyesからnoへ、os levelを20から200に変更して見えるようになりました。domain logons(no), domain master(auto), preferred master(auto)は、デフォルトのままです。
デフォルトの言語は、欧米文字なので、日本語に変更します。以下の内容を書き込みます。
unix charset = UTF-8
dos charset = CP932
家庭内サーバーとするので、アクセスを家庭内ネットワークのIPアドレスに制限します。それぞれの環境で書く内容は異なりますが、以下のような内容になるはずです。
hosts allow = 127.0.0.1, (ファイルサーバーのIPアドレスの3つめの.までの部分).0/(サブネットマスク)
私の場合は、ファイルサーバーのアドレス=192.168.10.2、サブネットマスク=255.255.255.0なので、
hosts allow = 127.0.0.1, 192.168.10.0/255.255.255.0
となります。これで192.168.10.0~255のアドレスに制限されます。サブネットマスクの数字に0がある場合は、もうちょっと簡便な表記もあって
hosts allow = 127.0.0.1, 192.168.10.
でも同様の意味になります。
アクセスできるユーザーに関する共通設定をします。以下の内容を書き込みます。
security = user
map to guest = Bad User
意味は、"security=user - アクセスはユーザー単位で制御する、map to guest=Bad User - 登録のないユーザーのアクセスを拒否しない、ということです。登録のないユーザーのアクセスは、他にguest ok, guest onlyといったパラメーターと合わせて制御するのですが、これは共有毎に設定するので、各共有のセクションに記載します。
他に関係するパラメーターは、guest account(デフォルト値 : nobody)-登録のないユーザーがアクセスした際のユーザー名、username level(デフォルト値 : 0)-ユーザー名の大文字/小文字を区別するかどうか、デフォルトは区別する(Masaoとmasaoは別ということ)がありますが、私はデフォルトのままにしています。
プリンターサーバーにはしないので、以下の内容を書き込みます。
load printers = no
デフォルトではyesになっています。
ログファイルの保管場所がデフォルトでは設定されていないので、以下の内容を書き込みます。
log file = /var/log/samba4/log.%m
%mは、このサーバーのNetBIOS名になります。
smb4.confには、これ以外に各共有の設定も書きますが、共有に必要な設定はsmb4.confの編集だけではないので、共有の設定全体を一項目にまとめることにして、smb4.confの編集もそちらに書きます。
「誰でもアクセスできる」の具体的な意味は家庭内ネットワークにアクセスできた人は誰でもという感じなので、家でパソコンをネットにつないでいる家族に加えて、例えば「家に来た知人にアクセスを許可」とか「PCだけじゃなくてスマホも」とかそんなような範囲のイメージになるかと思います。
まずはセクション名を書きます。以下の内容を書き込みます(名前は別に好きに決めたらいいわけですが)。
[Shared]
Windows PC等のクライアント側では「Shared」という名前で共有フォルダーが表示されます。
以下の内容を書き込みます。
path = /usr/home/shared
comment = Volume for Everybody
read only = no
pathは、共有するディレクトリ、commentは、共有に関する説明、read onlyは、読み取り専用か書き込み可能かの設定です。read onlyのデフォルトはyesですが、このボリュームは誰でも書き込めるようにするので、noにします。
他に関連するパラメーターとしては、available(デフォルト値 : yes)-noにするとサービスを停止できる、メンテ目的で利用機会があるか、browsable(デフォルト値 : yes)-表示させるかどうか、デフォルトのままでいいので設定不要かと、administrarive share(デフォルト値 : no)-管理用の共有とするかどうか、これもデフォルトのままでいいので設定不要かと、writable(デフォルト値 : no)-read onlyの逆の意味でのパラメーター、read only=noの代わりにwritable=yesと書いてもいい、といったものがあります。
ネットワークに入れた人は誰でもアクセスできるように、以下の内容を書き込みます。
guest ok = yes
guest only = yes
パラメーターの意味は名前の通りです。guest okは、ユーザー登録のないアクセスを許す、guest onlyは、アクセス時にユーザー認証をしない、ということです。
他に関係するパラメーターは、valid users(デフォルト値 : (設定なし))-アクセスを許すユーザーのリスト、administrative users(デフォルト値 : (設定なし))-アクセスした際、管理者権限を持つユーザーのリスト、ありますが、ここではデフォルトのままにします。
アクセスしたユーザーに「読み取り可能/書き込み可能/実行可能」の権限をどう持たせるかを設定します。
create mask = 0777
directory mask = 0777
create maskは、作成したファイルの操作権限、directory maskは、作成したディレクトリの操作権限です。ここでアクセスしたユーザーの権限は1の位の数字で設定されます。4(読み取り可能) + 2(書き込み可能) + 1(実行可能) = 7になります。その左側の数字が一桁目より小さいというのはあり得ない(千の位は0ですが)ので、0777となります。デフォルト値は、create mask=744、directory mask=755で、オーナー以外は書き込みができない設定です。
共有するディレクトリを作成し、上記のdirectory maskの設定に従ってアクセス設定をします。コマンドプロンプトで以下のコマンドを打ちます。
# mkdir -p /usr/home/shared[ENTER]
# chmod 0777 /usr/home/shared[ENTER]
ネットワークにログインしたユーザーは全員アクセスできるが、書き込みできるのは家族だけで、他は閲覧のみという設定の共有です。
まずはセクション名を書きます。以下の内容を書き込みます(名前は別に好きに決めたらいいわけですが)。
[Family]
Windows PC等のクライアント側では「Family」という名前で共有フォルダーが表示されます。
以下の内容を書き込みます。
path = /usr/home/family
comment = Volume for My Family
read only = no
パラメーターの意味等については既に書いたので省きます。
アクセスできるのは家族四人に限定するように、以下の内容を書き込みます。
guest ok = yes
guest only = no
guest okはyes、guest onlyはnoの設定だと、誰でもアクセスできるが、登録されたユーザーからのアクセスはそのユーザーの設定に従うことになります。この意味は次項を参照してください。
家族はフォルダのグループに登録して10の位のアクセス設定を、他のユーザーは1の位のアクセス設定を適用させるので、10の位は7(読み書き実行全てOK)、1の位はフォルダは5(読み取りと実行)ファイルは4(読み取りのみ)、100の位は7にします。
create mask = 0774
directory mask = 0775
意味は前述の通りです。
共有のためのグループを作成して、作成したグループに家族(masao, masako, masaki, masami)を追加します。コマンドプロンプトで以下のコマンドを打ちます。
# pw groupadd family[ENTER]
# pw groupmod family -M masao,masako,masaki,masami[ENTER]
(1)共有するディレクトリを作成し、(2)アクセス設定を上記のdirectory maskに合わせ、(3)所属グループを家族が所属するfamilyに変更します。コマンドプロンプトで以下のコマンドを打ちます。
# mkdir -p /usr/home/family[ENTER]
# chmod 0775 /usr/home/family[ENTER]
# chown :family /usr/home/family[ENTER]
自分だけがアクセスできる共有です。
まずはセクション名を書きます。以下の内容を書き込みます(名前は別に好きに決めたらいいわけですが)。
[Masao]
Windows PC等のクライアント側では「Masao」という名前で共有フォルダーが表示されます。
以下の内容を書き込みます。
path = /usr/home/masao
comment = Volume for Masao
read only = no
パラメーターの意味等については既に書いたので省きます。pathは、ユーザー登録をした際に設定されたユーザーディレクトリを指定します。
ここでは、まず、ゲストログインを無効にします。アクセスをmasaoに限定するのはディレクトリへのアクセス権限の設定で行います。
guest ok = no
ここで指定したディレクトリはMasaoがオーナーなので、この操作権限は百の位になります。これを7にして他は0にします。
create mask = 0700
directory mask = 0700
共有するディレクトリのアクセス設定を、上記のdirectory maskの設定に従って変更します。コマンドプロンプトで以下の入力をします。
# chmod 0700 /usr/home/masao[ENTER]
これでオーナーのmasao以外はアクセスできません。
作成したsmb4.confは、testparmで記載内容のチェックができます。以下のコマンドを流してください。
# testparm /usr/local/etc/smb4.conf[ENTER]
チェック結果が画面に表示されます。「Loaded services file OK」と表示されたら問題ありません。問題がある時は、local masterとかのディレクティブ名が出てきて問題の内容が表示されるので、それを見て修正してください。
Samba用のパスワードはFreeBSDに登録したパスワードとは別なので、登録した各ユーザーに対して、Sambaで共有機能を使用するユーザーのSamba用のパスワードを登録します。コマンドプロンプトで以下の入力をします。
# pdbedit -a -u masao[ENTER]
new password : (パスワードを入力する)
retypr new password : (パスワードを入力する)
# pdbedit -a -u masako[ENTER]
new password : (パスワードを入力する)
retypr new password : (パスワードを入力する)
# pdbedit -a -u masaki[ENTER]
new password : (パスワードを入力する)
retypr new password : (パスワードを入力する)
# pdbedit -a -u masami[ENTER]
new password : (パスワードを入力する)
retypr new password : (パスワードを入力する)
コマンドプロンプトで以下のコマンドを打ってください。
# service samba_server start[ENTER]
コマンドプロンプトで以下のコマンドを打ってください。
# service samba_server stop[ENTER]
コマンドプロンプトで以下のコマンドを打ってください。
# service samba_server restart[ENTER]
コマンドプロンプトで以下のコマンドを打ってください。
# service samba_server status[ENTER]
なお、このページを書くに当たって、以下の記事を参考にしました。
今回のセットアップでのバージョン情報 | |
---|---|
samba | 4.8.5_1 |
(2018年 8月 4日 記
2018年10月13日 更新)