お久しぶりです!今回はsambaを使って自宅用にファイルサーバを構築してみました。
ファイルサーバの仕組みなど、備忘録も兼ねて解説していきます!
今回もFedoraを使いますが、confファイルのいじり方等は共通する部分が多いので是非ubuntuやcentosなど他のディストリビューション使ってる方も参考にしてみて下さい〜
【目次】
ファイルサーバとは?
もし集団で開発することになったとしたら、メンバー全員がアクセスできる共有のフォルダがネットワーク上にあったら便利ですよね?
そんな時にファイルサーバが便利です。
ネットワーク上でファイルの保存場所になってくれる他、ユーザやそのアクセス権の管理もサーバ一台で出来てしまいます!
似たようなものにNASがありますが、NASはストレージ専門であることが多いので障害対策等充実していますが、導入や認証等が少し面倒だったりします。
手軽さという面ではファイルサーバに軍配が上がりそうです。
sambaって何?
sambaはLinuxを用いたファイルサーバでよく使われるオープンソースソフトウェアで、「Linuxも無料sambaも無料」という手軽さから広く利用されている組み合わせです!
決して可愛いお姉さん達が踊るサンバでは無いのでご注意を…
windowsPCとのファイル共有によく使われていますが、windows専用ではありませんので、勘違いしないようにして下さい。
ちゃんとMacからでもアクセスできます。
sambaのインストール
#dnf -y install samba samba-client
sambaに必要なものをインストールします。「dnf」の部分は適所読み替えて下さい。
認証なしファイルサーバを構築
手始めに、認証無しで誰でもアクセスできる簡単なファイルサーバを立ててみましょう。
誰でも編集が出来てしまうので、自宅用なんかが良いかもしれないですね。
また、confファイルをいじる際は必ずバックアップを取っておくようにしましょう!
上手く動かなくなってしまった時にリカバリできなくなります(笑)
共有フォルダの作成
まずは共有フォルダをサーバ内で作っておきます!
#mkdir /home/samba_share
#chmod 777 /home/samba_share
chmodはファイルのパーミッション(権限)を変更するコマンドです。
細かい説明は省きますが、777で全ユーザにフルアクセスを許可する事が出来ます。
confファイルをいじる
sambaはconfファイルを直接書き換えて設定するのが基本です。
デフォルトで「/etc/samba/smb.conf」が設定ファイルのパスになっているはずなので、そこを編集していきます。
#nano /etc/samba/smb.conf
[global]
#追記(文字コードの設定)
unix charset = UTF-8 #linux用文字コード
dos charset = CP932 #windows用文字コード
#追記終了
workgroup = SAMBA #ワークグループを指定
security = user
#追記(アクセス許可)
host allow = 192.168. #接続を許可するIPアドレスを指定
#追記終了
#追記(ユーザ認証なし)
map to guest = Bad User #ゲストの扱いを指定
#追記終了
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
#追記(共有フォルダ設定)
[Public]
path = /home/samba_share #共有フォルダのパス指定
writable = yes #書き込み許可
guest ok = yes #ゲストユーザー許可
guest only = yes #全てゲストとして扱う
create mode = 0777 #フルアクセスでファイル作成
directory mode = 0777 #フルアクセスでフォルダ作成
#追記終了
僕はviが苦手なので今回もエディタにはnanoを使用しています。
お好みのエディタで編集して下さい!
[global]セクション
ここではサーバ全体に関するパラメータを指定します。
一部詳しく解説していきます。
workgroup = SAMBA #ワークグループを指定
「workgroup」については、共有する側のPCに従うとベストですが、ぶっちゃけここは何入れても動きます(笑)
僕は確認するの面倒だったので適当です。
host allow = 192.168. #接続を許可するIPアドレスを指定
「host alow」の指定方法はいくつかあるのですが、今回の場合は「192.168.~」からの接続を許可する設定になっています。
map to guest = Bad User #ゲストの扱いを指定
「map to guest」の部分では認証失敗時のゲストアカウントについて制御しています。
しかし、今回の場合はそもそもユーザを作成していないので、全員ゲストとしてアクセスする挙動になります。
[Public]セクション
[Public]セクションと銘打っていますが、ここのセクション名はなんでもいいです。
ここでは共有フォルダに関する設定をしていきます。
path = /home/samba_share #共有フォルダのパス指定
writable = yes #書き込み許可
guest ok = yes #ゲストユーザー許可
guest only = yes #全てゲストとして扱う
create mode = 0777 #フルアクセスでファイル作成
directory mode = 0777 #フルアクセスでフォルダ作成
まずは先ほど作成した共有フォルダのパスを指定します。
「create mode」や「directory mode」ではファイル等を作成した際のパーミッションについて制御しています。
先程のchmodと同じで、777はフルアクセスを許可する設定になります!
ファイアウォールの設定
ファイアウォールでsamba用のポートを開放しないと通信できません!
基本的なLinuxのファイアウォールには2種類あって、「iptables」と「firewalld」です。
やること自体は一緒なんですが、コマンドなどの設定方法が少し異なるので注意して下さい。
今回は「firewalld」を使用している前提で進めていきます。
#firewall-cmd --get-default-zone
FedoraWorkstation
firewalldには「ゾーン」という概念が存在し、ゾーン毎に設定を行っていきます。
上記コマンドでデフォルトで適用されているゾーンが分かるので、確認してみましょう。
僕の場合は「FedoraWorkstation」でした。
#firewall-cmd --add-service=samba --zone=FedoraWorkstation --permanent
success
次にsambaをファイアウォールに許可する設定をしていきます。
「–add-service=samba」の部分でsambaを許可しています。
さらに「–zone=FedoraWorkstation」の部分では設定を適用するゾーンを指定しています。
先程確認したゾーンの名前を入れましょう。
最後に「–permanent」は設定を恒久的に適用することを意味します。
つまり電源を消しても設定が残ったままになるということです。
#firewall-cmd --reload
設定が完了したらfirewalldを再起動しましょう!
そうしないと設定が反映されません。
sambaの起動
ここまでくれば後はsambaを起動して、クライアント側からアクセスするだけです!
systemctl start smb
これで起動は完了です!
共有先がwindowsの場合は「ファイル名を指定して実行」のところから、サーバのIPアドレスを指定すればOKです。
こんな感じです。
ファイル名が少し違いますが、無事に共有できていることが確認できました!
この記事に沿ってフォルダ等を作成した場合は、「samba_share」というフォルダのみ表示されていると思います。
もし上手くいかない時は…
- SELinuxを止める
- ネットワーク設定を確認する
- confファイルにスペルミス等がないか確認する
この辺りを試してみて下さい。
SElinuxはハマる人が多いので、予め止めておくとやりやすいです。
もしわからないことがあれば僕に直接聞いてもらっても大丈夫です!(笑)
おわりに
認証なしの簡単なファイルサーバについて解説してみました。
自宅等で使う分にはこれで十分だと思います!
そのうち認証機能付きのsambaについても記事を書きます。
そんなに難しくないです(笑)
僕は「いちいちスクリーンショットをクラウドに上げて〜…」なんてのをやるのが面倒くさい時に、サッとサーバを立ててファイル共有して使ったりしています。
Linuxの勉強にもなると思うので、ぜひトライしてみて下さい!
最後までありがとうございました!