Linux

【Linux】Sambaを使用したファイルサーバーの構築『古いPC活用』

Windows PC のほかに Linux PCやMAC を併用していると、Windows と Linux 間でファイルを共有したいケースが多々あると思います。

PC 間でファイルを共有することも多いため、今回は Samba をインストールし Windows PC と Linux PC、MAC 間でファイルを共有する方法を紹介いたします。

Linuxは古くなったPCでも十分に動作するので、自宅で使用していないWindows PCがあればLinuxに入れ替えてファイルサーバーを構築できます。

「Samba」基本情報

概要

Samba(サンバ)とは、Linux/UNIX用のWindows相互運用性プログラムスイートです。Linux/UNIXコンピュータをWindows互換の「ファイルサーバ」「プリントサーバ」「ドメインコントローラ」として利用できます。

基本説明

Sambaは「Windows互換ネットワーク機能」と「Windowsサーバ互換機能」を提供します。Windows端末がSambaサーバに接続すると、SambaサーバはWindowsサーバのようにサービスを提供します。

Sambaは「ファイルサーバ機能」と「プリントサーバ機能」を提供します。ドメインコントローラまたはドメインメンバとしてWindowsドメイン(Active Directory環境)とシームレスに統合できます。

また、Sambaは、Windowsファイルサーバに対するクライアント機能も有しているため、LinuxからWindowsサーバにアクセスすることも可能です。

Sambaはシステム管理者やネットワーク管理者に、Linux/UNIX系とWindows系を統合して利用するための選択自由度を提供します。

■動作環境

Sambaは多くのUNIXライクシステム上で動作します。
・Linux
・Solaris
・AIX
・macOS
・BSD系
・OpenVMS など

Samba インストール

まず、Sambaをインストールする必要があります。以下のコマンドを使用して、Debian系とRed Hat系のそれぞれのディストリビューションにおいてSambaをインストールします。

Debian系

sudo apt update
sudo apt install samba

Red Hat系

sudo yum install samba

共有フォルダーの作成

次に、Sambaで共有するフォルダーを作成します。例えば、/srv/samba/shareに共有フォルダーを作成する場合は、以下のようにします。

sudo mkdir -p /srv/samba/share
sudo chown nobody:nogroup /srv/samba/share
sudo chmod 777 /srv/samba/share

Sambaの設定

/etc/samba/smb.confファイルを編集して、Sambaの設定を行います。以下は、共有フォルダーを追加する例です。

[share]
   comment = Shared Folder
   path = /srv/samba/share
   browsable = yes
   writable = yes
   guest ok = yes
   read only = no

Sambaのサービスの再起動

Sambaの設定を反映させるために、Sambaサービスを再起動します。

# Debian系
sudo systemctl restart smbd

# Red Hat系
sudo systemctl restart smb

ファイアウォールの設定

ファイアウォールでSambaのポート(TCPポート139と445)を開放します。

# Debian系
sudo ufw allow samba

# Red Hat系
sudo firewall-cmd --permanent --zone=public --add-service=samba
sudo firewall-cmd --reload

ユーザーの追加と設定

Sambaにアクセスするためのユーザーアカウントを作成し、Sambaのパスワードを設定します。

sudo smbpasswd -a username

これで、Sambaを使用したファイルサーバーの基本的な設定が完了しました。必要に応じて、アクセス権やセキュリティの設定を調整してください。

Sambaの応用設定

基本的な設定だけではセキュリティーの問題や使いにくさがあるので少々設定を追加します。

グループとユーザーの管理

Sambaのグループとユーザーを管理するためには、次の手順を実行します。

Linuxユーザーとグループの作成: adduserコマンドやuseraddコマンドを使用してLinuxユーザーとグループを作成します。

sudo adduser username
sudo addgroup groupname

Sambaユーザーの追加: smbpasswdコマンドを使用して、LinuxユーザーをSambaユーザーに追加します。

sudo smbpasswd -a username

グループへのユーザーの追加: usermodコマンドを使用して、Linuxユーザーを作成したグループに追加します。

sudo usermod -aG groupname username

マウントポイントの設定

他のLinuxシステムからSambaファイルサーバーにアクセスするためには、マウントポイントを設定する必要があります。以下は、マウントポイントの設定方法の例です。

sudo mkdir /mnt/samba
sudo mount -t cifs //server/share /mnt/samba -o username=username,password=password

セキュリティの強化

Sambaサーバーのセキュリティを強化するためには、以下の設定を検討します。

  • パスワードポリシーの設定: smb.confファイルでmin protocolencrypt passwordsなどの設定を使用して、Sambaユーザーのパスワードポリシーを定義します。
  • SSL/TLSの有効化: smb.confファイルでserver signing = mandatoryclient signing = requiredなどの設定を使用して、SSL/TLSを有効にします。
  • ファイアウォールの設定: ファイアウォールでSambaポート(通常はTCPポート139と445)を適切に制御して、不正なアクセスを防止します。

バックアップとリカバリ

バックアップとリカバリの手順を確立するためには、以下の手順を実行します。

  • 定期的なバックアップ: rsyncコマンドやバックアップツールを使用して、重要なデータを定期的にバックアップします。
  • リカバリプロセスの確立: バックアップデータを別の場所に保存し、災害発生時のリカバリプロセスを確立します。

rsyncコマンドについて補足

rsync(remote synchronization)は、ファイルやディレクトリを効率的に同期させるためのコマンドラインツールです。主にローカルやリモート間でのファイル転送やバックアップに使用されます。以下にrsyncコマンドの主な機能とオプションを解説します。

基本構文
rsync [オプション] [ソース] [宛先]
主なオプション
  • -a, --archive: アーカイブモード。パーミッション、所有者、グループ、タイムスタンプなどの属性を保持してファイルを同期します。
  • -v, --verbose: 詳細な出力を表示します。
  • -z, --compress: データを圧縮して転送します。
  • -r, --recursive: 再帰的にディレクトリを同期します。
  • -n, --dry-run: 実際のファイルの同期を行わず、操作のシミュレーションを行います。
  • --delete: ソースに存在しないファイルを宛先から削除します。
利用例
# ローカル間のファイル同期
rsync -av /path/to/source /path/to/destination

# リモートサーバーへのファイル転送(SSH経由)
rsync -avz -e ssh /path/to/local/file user@remote_host:/path/to/remote/directory

# バックアップ
rsync -av --delete /path/to/source /path/to/backup
注意点
  • ファイル転送が途中で中断された場合、再開することができます。
  • rsyncは差分のみを転送するため、転送時間を短縮できます。
  • リモートサーバーとの通信にSSHを使用する場合、-e sshオプションを指定します。

rsyncコマンドは、効率的なファイル転送とバックアップのための重要なツールであり、システム管理者やデータ管理者にとって便利な手段となっています。

監視とログ管理

# ログファイルの確認
tail -f /var/log/samba/log.smbd

NagiosやZabbixなどの監視ツールを導入し、サーバーの状態を監視することができます。

NagiosとZabbixは、いずれもシステムおよびネットワークの監視に使用されるオープンソースの監視ツールです。以下では、それぞれのツールについて簡単に解説するので、ご自身の環境に合ったツールを利用して下さい。

Nagios

Nagiosは、古くから使われている監視ツールの1つであり、システムやネットワークの状態を監視し、異常が検知された場合に通知を送信します。以下はNagiosの特徴です。

  1. 柔軟な監視設定: Nagiosでは、様々な監視対象(サーバー、ネットワーク機器、アプリケーションなど)に対して監視設定を柔軟に行うことができます。
  2. 通知機能: 監視対象の状態が異常と判断された場合、Nagiosは設定された通知方法(電子メール、SMS、Slackなど)を使用して運用チームに通知を送信します。
  3. ダッシュボード: NagiosにはWebインターフェースがあり、監視対象の状態をリアルタイムで表示するダッシュボードを提供します。
  4. 拡張性: Nagiosはプラグインを使用して機能を拡張することができます。さまざまなプラグインが提供されており、ユーザーが独自のプラグインを開発することも可能です。

Zabbix

Zabbixは、Nagiosと同様にシステムおよびネットワークの監視に使用されるツールですが、より包括的な機能を提供しています。以下はZabbixの特徴です。

  1. エージェントレス監視: Zabbixはエージェントレス監視をサポートしており、サーバーやネットワーク機器などの監視対象にエージェントをインストールする必要がありません。
  2. トリガーとアクション: Zabbixではトリガーとアクションの機能を使用して、特定の状態が発生した場合に自動的に通知や処理を行うことができます。
  3. 柔軟な監視設定: Zabbixでは、監視アイテム、トリガー、アクションなどの設定を柔軟に行うことができます。
  4. グラフィカルなダッシュボード: Zabbixには、監視対象の状態をリアルタイムで可視化するグラフィカルなダッシュボードが提供されています。
  5. スケーラビリティ: Zabbixは大規模な環境にも対応しており、数千もの監視対象を効果的に監視できます。

比較

NagiosとZabbixは、いずれも優れた監視ツールであり、選択は使用する環境や要件に応じて行う必要があります。Nagiosはシンプルで柔軟な監視を提供しますが、Zabbixはより包括的な機能を備えており、スケーラビリティにも優れています。適切なツールを選択するためには、機能や要件を比較し、実際の環境でのテストを行うことが重要です。

ユーザーエクスペリエンスの向上

ファイル構造の整理

共有フォルダー内のファイルをカテゴリ別に整理し、適切なフォルダーに配置します。

アクセス権の設定

Sambaの設定ファイルで、各ユーザーに必要なフォルダーへのアクセス権を適切に設定します。

Sambaを使用してプリンターサーバーを実装

Sambaを使用してプリンターサーバーを実装する手順を以下に示します。

プリンターの設定

プリンターをサーバーに接続し、適切なドライバーをインストールします。プリンターが正常に動作することを確認してください。

Sambaの設定ファイルの編集

Sambaの設定ファイル(通常は/etc/samba/smb.conf)を編集して、プリンターサーバーを設定します。

sudo nano /etc/samba/smb.conf

次のような設定を追加します。

[printers]
   comment = All Printers
   path = /var/spool/samba
   browseable = no
   guest ok = no
   writable = no
   printable = yes
   create mode = 0700

Sambaの再起動

Sambaを再起動して設定を反映させます。

sudo systemctl restart smbd

プリンターの共有

クライアントPCからプリンターにアクセスできるように、プリンターをSambaで共有します。次のコマンドを使用して、プリンターを共有します。

sudo smbpasswd -a <ユーザー名>

ユーザー名には、プリンターにアクセスできるユーザーの名前を指定します。

これで、Sambaを使用してプリンターサーバーを実装し、クライアントPCからプリンターを共有できるようになります。

Sambaを使用してアクティブディレクトリ(Active Directory)を作成

Sambaを使用してアクティブディレクトリ(Active Directory)を作成するには、以下の手順を実行します。

Sambaの設定ファイルの編集

Sambaの設定ファイル(通常は/etc/samba/smb.conf)を編集して、アクティブディレクトリを設定します。

sudo nano /etc/samba/smb.conf

次のような設定を追加します。

[global]
    workgroup = YOUR_WORKGROUP_NAME
    server string = Samba Server
    security = user

[netlogon]
    comment = Network Logon Service
    path = /home/samba/netlogon
    guest ok = yes
    read only = yes
    share modes = no

[sysvol]
    comment = Sysvol Share
    path = /home/samba/sysvol
    guest ok = yes
    read only = no

ユーザーの追加

Sambaにアクセスできるユーザーアカウントを作成します。

sudo smbpasswd -a username

フォルダーの作成

ネットワークログオンサービス(netlogon)およびSysvol共有のためのフォルダーを作成します。

sudo mkdir -p /home/samba/netlogon
sudo mkdir -p /home/samba/sysvol
sudo chmod 1777 /home/samba/sysvol

Sambaの再起動

Sambaを再起動して設定を反映させます。

sudo systemctl restart smbd

これで、Sambaを使用してアクティブディレクトリ風の環境を作成できます。ただし、本番環境でのセキュリティや権限の設定には十分な注意が必要です。必要に応じて、より詳細な設定やセキュリティ対策を行ってください。

まとめ

以下は、古いPCを活用してSambaを使用したファイルサーバーを構築する手順のまとめです。

  1. 古いPCの再利用: 古いPCを再利用してファイルサーバーを構築することで、無駄な資源の再利用と省エネルギー化が実現できます。また、無駄な物を買う必要がないので財布にも優しいです。
  2. Linuxのインストール: 古いPCにLinuxディストリビューションをインストールします。軽量なディストリビューションを選択することで、古いPCでも快適に動作させることができます。
  3. Sambaのインストール: Linux上でSambaをインストールします。パッケージマネージャーを使用して、簡単にSambaをインストールすることができます。
  4. Sambaの設定: Sambaの設定ファイルを編集して、ファイルサーバーの共有ディレクトリやアクセス権の設定を行います。必要に応じて、ユーザー認証やセキュリティ設定を行うことができます。
  5. ファイルの共有: Sambaを使用してファイルを共有します。WindowsやLinux、macOSなどさまざまなオペレーティングシステムからアクセスできるようになります。
  6. バックアップとセキュリティ: ファイルサーバー上のデータを定期的にバックアップし、セキュリティ対策を行います。ファイルの保護とデータの安全性を確保することが重要です。

古いPCを活用してLinux上でSambaを使用したファイルサーバーを構築することで、ネットワーク上でファイルを簡単に共有し、効率的に管理することができます。また、古いPCの再利用により、環境への負荷を軽減し、持続可能なIT環境の構築に貢献します。

近年、NASなどでファイルサーバーを構築する事が多くなっていますが、Sambaは手軽に構築でき運用も簡単なので、新たにNASを導入するのも良いですが、Sambaでファイルサーバーの構築も検討してみて下さい。