Linuxを多少触ったことがあるけど、特に使い道が見つからない、そんなときにオススメなのがサーバーの構築です。本記事ではLinuxのUbuntuを用いて、他のPCからもアクセスが可能なファイルサーバー(NAS)をつくる方法を紹介します。サーバーは基本的に24時間365日稼働させ続けますが、一般的なPCはそのような連続稼働を前提に作られていません。そのため、常用する場合はサーバー用のPCを使うことをオススメします。
あるいは「Raspberry Pi(ラズベリーパイ)」も良い選択ですね。消費電力も小さいですし、何より本体が安い。(2020/05/27追記)こちらの記事でラズパイで外付けHDDを使う方法を紹介しています。こちらと組み合わせることで比較的安価で大容量なファイルサーバーを作ることもできます。ラズパイは通常のUbuntuはサポートされていないので「Ubuntu Server」というサーバー用のOSを用いてください。
今回はUbuntuの執筆時点で最新バージョンである20.04を用いましたが、他の場合でも基本的な操作は同じだと思います。それでは頑張っていきましょー!
アップデート
※ここからはコマンドライン(黒い画面で文字だらけのやつ)を使っていきます。アクティビティから「端末」と検索すると出てくると思います。(余談ですが、Windowsでは「コマンドプロンプト」、Macでは「ターミナル」などと呼ばれていますね。できれば統一してほしいものです…)
もちろんインターネットに接続した状態で作業してくださいね!
まず最新の状態にするためにアップデートを行います。今は最新状態だ!と自信がある方は飛ばして構いません。
はじめにこのコマンドを入力して Enter
キーを押してください。
sudo apt update
パスワードを求められることもあります。エラーが出たら再度実行してください。(エラーが連発する場合は再起動するといいと思います。)
ここで「アップグレードできるパッケージが〇個あります。」的な表示が出たら以下のコマンドを実行しましょう。
sudo apt upgrade
これで前準備は終了です!(筆者の環境ではアップデート後そのまま使うと微妙に不具合が出たりしたこともあるので、ここで一度再起動するのが無難です。)
sambaのインストール
sambaとは、Linux上でファイルサーバーを実現するソフトウェアの1つです。次のコマンドでsambaをインストールします。
sudo apt install samba
sambaがインストール出来たら、pdbedit
というコマンドでsambaにユーザーを登録します。
sudo pdbedit -a [ユーザー名]
[ユーザー名]には自分が使っているユーザー名を入れてください。(Ubuntu上に存在するユーザーならどれでも大丈夫です。)
コマンドを実行するとパスワードの登録を求められますが、決して忘れないかつ簡単ではないものに設定しましょう。後述の「パスワード付き共有ディレクトリを作る」で必要となります。
共有用のディレクトリを作る
ファイルサーバーで共有するディレクトリを作成します(ディレクトリとは、Windowsでいうフォルダのことです)。
デスクトップやファイルマネージャから作っても良いですが、ここではこれもコマンドラインで作成します。以下のコマンドを入力してください。
mkdir /home/ubuntu/share
/home/ubuntu/share
が共有ディレクトリの場所です。この場所のことを「パス」といいます。
(このパスはあくまで一例です。好きな場所に作って良いですが、あとでわかりやすい場所にしましょう。)
ディレクトリが作れたら以下のコマンドで誰でもアクセスできるよう権限を変更しましょう。(詳しくは調べてね!)
sudo chmod 777 /home/ubuntu/share
これをやっておかないとせっかく共有しても Windowsからファイルを保存できないといった問題が発生したりします。
sambaの設定
sambaをつかうために、「smb.conf」というファイルを編集します。
コマンドラインに次のコマンドを入力してください。
sudo nano /etc/samba/smb.conf
すると、smb.confが開かれ編集できるようになると思います。
まず、24行目あたりに[global]
という記述があるので次のようになるよう追記します。
#======================= Global Settings =======================
[global]
dos charset = CP932 # 追記部分
unix charset = UTF-8 # 追記部分
次に、30行目あたりのworkgroup
というところを確認します。初めはWORKGROUP
となっていますが、基本的にはそのままで大丈夫です。しかし、ファイルサーバーにアクセスしたい Windowsによっては設定が必要です。
Windows側で「コントロールパネル->システムとセキュリティ->システム->コンピュータ名、ドメインおよびワークグループの設定」で調べることができます。
図の赤丸で囲んだところが「WORKGROUP」ならそのままで大丈夫です!
そうでなければ下のコード(30行目あたり)のWORKGROUP
を書き換えてください。
# Change this to the workgroup/NT-domain name your Samba server will part of
workgroup = WORKGROUP # 必要があれば書き換える
次は35行目あたりからあるNetworkingの項目です。
詳しくは説明しませんが、以下のように設定するとうまく作動してくれます。(セミコロンを消さないといけないところがあるのでよく見てください。)
#### Networking ####
# The specific set of interfaces / networks to bind to
# This can be either the interface name or an IP address/netmask;
# interface names are normally preferred
interfaces = 192.168.XX.0/24 eth0 # 行の初めについていたセミコロンを消す、127.0.0.0/8となっていた部分をネットワークアドレスに書き換える
# Only bind to the named interfaces and/or networks; you must use the
# 'interfaces' option above to use this.
# It is recommended that you enable this feature if your Samba machine is
# not protected by a firewall or is a firewall itself. However, this
# option cannot handle dynamic or non-broadcast interfaces correctly.
bind interfaces only = yes # 行の初めについていたセミコロンを消す
map to guest = bad User # 追記部分
ここで、「interfaces = 192.168.XX.0/24 eth0
」という部分をちゃんと書くために「ネットワークアドレス」というものを調べます。ついでに後で使うのでUbuntuを入れているPCのIPアドレスも調べておきます。(ネットワークアドレスとはネットワークそのものを表す特別なIPアドレスです。)
IPアドレスは、Ubuntuのコマンドラインで
ip address show
を実行するとわかります。下図のような感じです(いろいろ隠していますが、本当はもっと文字が多いです)。
例えば「192.168.11.15/24」のような形で書かれていると思います。.(ドット)で区切られた4組の数字の部分がIPアドレスに相当します。詳しくは説明しませんが、/(スラッシュ)の後の数字は「サブネットマスク数」を表します。
サブネットマスク数が16だったら、IPアドレスの後ろ2組を0にしたものがネットワークアドレス、サブネットマスク数が24だったら、IPアドレスの後ろ1組を0にしたものがネットワークアドレスとなります。
例えば、上のコマンドで調べたIPアドレスが「192.168.11.15/16」だったらネットワークアドレスは「192.168.0.0/16」、「192.168.11.15/24」だったらネットワークアドレスは「192.168.11.0/24」となります。このネットワークアドレスを「interfaces =
」のところへ追記するようにしてください(デフォルトでは「127.0.0.0/8」となっていると思います)。
最後に、smb.confの末尾に共有ディレクトリの設定を追記します。
[share]
path = /home/ubuntu/share
writeable = yes
guest ok = yes
guest only = yes
create mode = 0777
directory mode = 0777
一番上の[share]
は表示名です。Windowsなどからアクセスするときに表示される名前で、何に設定しても大丈夫ですがわかりやすいものにしましょう。
次のpath
は共有用ディレクトリのパスです。先ほど作ったディレクトリのパスを記入しましょう。
他の部分は説明しませんが、この設定で「同じローカルネットワーク上にあるコンピュータ(同じWi-Fiに繋いでいるコンピュータ)なら誰でもアクセスできる」共有ディレクトリが完成しました。
smb.confの編集が終了したら、「control
+ o
からの Enter
」で保存し「control
+ x
」でnanoを終了してください。
終了後、コマンドラインへ
testparm
というコマンドを入力してください。smb.confに誤りがないかチェックしてくれます。Loaded services file OK.
と出れば問題なし。
sambaの実行
上記設定が完了したら
sudo systemctl restart smbd nmbd
というコマンドを実行してください。これで smb.confの編集が反映されます。
さらに、Ubuntuの起動時に自動で実行してほしいなら
sudo systemctl enable smbd nmbd
を実行してください。ここまで出来たら一度再起動しましょう。
これで完成です!
Windowsから確認
Windowsなど他のコンピュータからファイルサーバーにアクセスする場合、ファイルサーバーにしたUbuntuの「IPアドレス」が必要になります。先ほど「sambaの設定」で調べましたね。
※個別のIPアドレスは変わってしまうこともあるので、できれば固定しておいた方が良いです。ルーターの機能でできたりするので調べてみてください。
Windowsのエクスプローラへ、下図のように「¥¥[IPアドレス]」と入力し Enter
キーを押してください。(「/24」などの部分は必要ありません。)
エクスプローラ上に先ほど作成した「share」が出ていれば成功です!
このshareの中にファイルを保存すれば、同じローカルネットワーク上の別のコンピュータからも見ることができるようになります。
お疲れさまでした!
追加の設定:パスワード付き共有ディレクトリを作る
ここまででファイルサーバーは完成しましたが、今のままでは同じローカルネットワーク上ならどのコンピュータでもアクセスできるようになっています。これでは内緒のファイルが保存できません!なので、こちらでパスワードを設定する方法を説明します。
〇グループの作成
※またUbuntuのコマンドラインを使います。
まず以下のコマンドで「グループ」というものを作成します。
sudo groupadd [グループ名]
そして、上記の「sambaのインストール」でpdbedit
コマンドを使ってsambaに登録したユーザーを作ったグループに追加します。
sudo usermod -aG [グループ名] [ユーザー名]
〇共有用ディレクトリの設定
mkdir /home/ubuntu/share2
ここでは先ほどまでの例と区別するために新しく share2
というディレクトリを作ります(さっきのを流用しても大丈夫です)。
この share2
の「所有者」と「所有グループ」を先ほど設定したユーザーとグループに変更します。次のコードを実行してください。
sudo chown -hR [ユーザー名]:[グループ名] /home/ubuntu/share2
さらに次のコードも実行します。
sudo chmod 770 /home/ubuntu/share2
このあたりのコマンドはディレクトリの「アクセス権限」に関わる処理をしています。詳しく解説はしませんが、Linuxを使う上でとても重要な処理ですので機会があれば調べてみると良いと思います!
〇 smb.confの修正
「sambaの設定」でやった smb.confの編集のうち、最後にやった共有ディレクトリの設定を少し修正します。
[share2]
path = /home/ubuntu/share2
writeable = yes
create mode = 0770
directory mode = 0770
guest ok = no
valid users = @[グループ名]
ちょっとだけ変わっていますが、重要なのは最後の行。この設定によって、「アクセスできるのは[グループ名]に所属しているユーザーのみ」という制限をかけることができます!
ここから先はパスワードなしの時と同じでOKなので省略します。
Windowsから開こうとしたときに「ユーザー名」と「パスワード」を求められたら成功!
「sambaのインストール」でpdbedit
コマンドを使った時に決めたユーザー名とパスワードで入ることができます(グループへの追加を忘れるなど、どこか手順を間違えるとここで弾かれます)。
今回の例のshare
とshare2
を両方作って共存させることもできます!smb.confの編集で両方の設定を書いてください。
※ここで注意
share
とshare2
のような「みんなに公開」と「パスワード付き」は共存させることができますが、「別のパスワードを持った複数のディレクトリ」は共存させることができません!(正確には、作れますがWindowsからアクセスできません。)
例えば、
・「security1」というグループに所属しているユーザーのみアクセスを許可するshare1
という共有ディレクトリ
・「security2」というグループに所属しているユーザーのみアクセスを許可するshare2
という共有ディレクトリ
の2つの共有ディレクトリを作ったとします。これらへWindowsからアクセスする場合、share1
にアクセスする場合は「security1」に所属しているユーザーのパスワードで、share2
にアクセスする場合は「security2」に所属しているユーザーのパスワードでアクセスすることになりますが、Windows上では(同一IPアドレスに対して)同時に別ユーザーアクセスすることができません。
つまり、share1
にアクセスするために「security1」に所属しているユーザーのパスワードでアクセスしたら、(アクセスを切らない限り)share2
にアクセスすることはできなくなります。
(share2
も「security1」に所属しているユーザーを許可する設定にして同じユーザーでアクセスすれば、share1
にアクセスした後でも大丈夫ですが、セキュリティ的にはあまり意味がないですよね…)
最後に
以上で、Ubuntuでファイルサーバーを作る方法の説明は終わりです。
Linuxは覚えるといろいろ遊べて楽しいのでぜひいじってみてください!
コメント
Wow, thank you for sharing this detailed guide on setting up a file server on Ubuntu 20.04. I was struggling to find a reliable guide that covers all the necessary steps, but your blog post has been incredibly helpful. I’m excited to implement these steps and enjoy having a centralized file storage solution for my home network.