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 protocol
やencrypt passwords
などの設定を使用して、Sambaユーザーのパスワードポリシーを定義します。 - SSL/TLSの有効化:
smb.conf
ファイルでserver signing = mandatory
やclient 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の特徴です。
- 柔軟な監視設定: Nagiosでは、様々な監視対象(サーバー、ネットワーク機器、アプリケーションなど)に対して監視設定を柔軟に行うことができます。
- 通知機能: 監視対象の状態が異常と判断された場合、Nagiosは設定された通知方法(電子メール、SMS、Slackなど)を使用して運用チームに通知を送信します。
- ダッシュボード: NagiosにはWebインターフェースがあり、監視対象の状態をリアルタイムで表示するダッシュボードを提供します。
- 拡張性: Nagiosはプラグインを使用して機能を拡張することができます。さまざまなプラグインが提供されており、ユーザーが独自のプラグインを開発することも可能です。
Zabbix
Zabbixは、Nagiosと同様にシステムおよびネットワークの監視に使用されるツールですが、より包括的な機能を提供しています。以下はZabbixの特徴です。
- エージェントレス監視: Zabbixはエージェントレス監視をサポートしており、サーバーやネットワーク機器などの監視対象にエージェントをインストールする必要がありません。
- トリガーとアクション: Zabbixではトリガーとアクションの機能を使用して、特定の状態が発生した場合に自動的に通知や処理を行うことができます。
- 柔軟な監視設定: Zabbixでは、監視アイテム、トリガー、アクションなどの設定を柔軟に行うことができます。
- グラフィカルなダッシュボード: Zabbixには、監視対象の状態をリアルタイムで可視化するグラフィカルなダッシュボードが提供されています。
- スケーラビリティ: 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を使用したファイルサーバーを構築する手順のまとめです。
- 古いPCの再利用: 古いPCを再利用してファイルサーバーを構築することで、無駄な資源の再利用と省エネルギー化が実現できます。また、無駄な物を買う必要がないので財布にも優しいです。
- Linuxのインストール: 古いPCにLinuxディストリビューションをインストールします。軽量なディストリビューションを選択することで、古いPCでも快適に動作させることができます。
- Sambaのインストール: Linux上でSambaをインストールします。パッケージマネージャーを使用して、簡単にSambaをインストールすることができます。
- Sambaの設定: Sambaの設定ファイルを編集して、ファイルサーバーの共有ディレクトリやアクセス権の設定を行います。必要に応じて、ユーザー認証やセキュリティ設定を行うことができます。
- ファイルの共有: Sambaを使用してファイルを共有します。WindowsやLinux、macOSなどさまざまなオペレーティングシステムからアクセスできるようになります。
- バックアップとセキュリティ: ファイルサーバー上のデータを定期的にバックアップし、セキュリティ対策を行います。ファイルの保護とデータの安全性を確保することが重要です。
古いPCを活用してLinux上でSambaを使用したファイルサーバーを構築することで、ネットワーク上でファイルを簡単に共有し、効率的に管理することができます。また、古いPCの再利用により、環境への負荷を軽減し、持続可能なIT環境の構築に貢献します。
近年、NASなどでファイルサーバーを構築する事が多くなっていますが、Sambaは手軽に構築でき運用も簡単なので、新たにNASを導入するのも良いですが、Sambaでファイルサーバーの構築も検討してみて下さい。