実録:深夜にファイル共有システムが「ストライキ」を起こした時
深夜2時、私の携帯が激しく鳴り響きました。電話の主は、切羽詰まった様子の運用マネージャーでした。「オフィスのスタッフ50人全員が共有ドライブにアクセスできず、税務報告書が取り出せないんだ!」とのこと。CentOS 7を搭載した古いサーバーが、マザーボードの故障で突然ダウンしてしまったのです。私の任務は、明日の朝の業務開始までに、CentOS Stream 9で新しいファイルサーバーを即座に構築し、500GB以上のデータを移行することでした。
もしあなたが同じような状況に陥ったことがあるなら、SambaをインストールしたのにWindowsから「Windows cannot access \\server」というエラーが出て動かない時のプレッシャーがわかるはずです。CentOS 8のEOL(サポート終了)に伴い、私は10以上のシステムをCentOS Stream 9へ移行させてきました。その経験から言えるのは、Sambaの設定自体は難しくないということです。難しいのは、RHEL 9の新しいカーネル5.14におけるSELinuxやFirewallと、いかに「対話」させるかという点にあります。
なぜSamba接続は頻繁に失敗するのか?
実際、CentOS 9で構築する際にネットワーク管理者が頭を抱える主な障壁は3つあります:
- Firewalld: ポート137、138、139、445がデフォルトで厳重に閉じられている。
- SELinux: 最も強力なセキュリティ層です。共有ディレクトリに正しいラベル(コンテキスト)が付与されていないと、Sambaをブロックします。
- 二重権限エラー: ユーザーがSMBプロトコル上の権限を持っていても、Linux側の物理的な読み書き権限でブロックされるケースです。
解決策:その場しのぎの対策は避ける
多くの人は setenforce 0 でSELinuxを無効化しようとします。しかし、これは致命的な間違いです。それは、ランサムウェアに対して社内ネットワークのドアを全開にするようなものです。代わりに、システムを高速かつ安全に動作させるための正しい設定を行いましょう。
CentOS Stream 9でのSambaインストール手順
ステップ1:ソフトウェアパッケージと管理ツールのインストール
まず、リポジトリを更新してSambaをインストールします。SELinuxの管理を容易にするために、policycoreutils-python-utils も併せてインストールすることをお勧めします。
sudo dnf update -y
sudo dnf install samba samba-common samba-client policycoreutils-python-utils -y
ステップ2:ディレクトリ作成とLinux権限の設定
今回は、経理部門向けのストレージ領域を /samba/ke-toan に作成します。データ安全上の理由から、/home ディレクトリを直接共有することは絶対に避けてください。
sudo mkdir -p /samba/ke-toan
sudo groupadd ketoangroup
sudo chown -R :ketoangroup /samba/ke-toan
sudo chmod -R 770 /samba/ke-toan
ステップ3:Sambaユーザーの管理
Sambaのパスワードはシステムパスワードとは独立しています。ここでは、セキュリティを高めるために、サーバーへの直接ログイン権限を持たないユーザー nhanvien01 を作成します。
sudo useradd -M -s /sbin/nologin nhanvien01
sudo usermod -aG ketoangroup nhanvien01
sudo smbpasswd -a nhanvien01
ステップ4:smb.conf設定ファイルの最適化
編集前に必ずオリジナルファイルのバックアップを取ってください。適切な設定ファイルにより、Windowsからのサーバー認識が速くなります。
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
sudo vi /etc/samba/smb.conf
以下は、最高のパフォーマンスを得るために調整した設定例です:
[global]
workgroup = WORKGROUP
server string = Samba Server Version %v
netbios name = FILE-SERVER-01
security = user
map to guest = bad user
# セキュリティ向上のため、SMB2以降の使用を強制
server min protocol = SMB2
[KeToan]
comment = 経理部門ディレクトリ
path = /samba/ke-toan
valid users = @ketoangroup
writable = yes
browsable = yes
create mask = 0660
directory mask = 0770
ステップ5:SELinuxとFirewall的障壁を越える
これが最も重要なステップです。これを怠ると、Windowsで即座に「Permission Denied(アクセス拒否)」エラーが発生します。
SELinuxについて: Sambaが正しくアクセスできるように、ディレクトリに samba_share_t ラベルを付与する必要があります。
sudo semanage fcontext -a -t samba_share_t "/samba/ke-toan(/.*)?"
sudo restorecon -Rv /samba/ke-toan
Firewalldについて: ファイアウォールを通過するSambaサービスの通信を許可します。
sudo firewall-cmd --permanent --add-service=samba
sudo firewall-cmd --reload
ステップ6:サービスの有効化
最後に、Sambaを起動し、サーバー再起動時にも自動実行されるように設定します。
sudo systemctl enable --now smb nmb
テストと確認
Windowsマシンで Windows + R キーを押し、\\<IP_SERVER> と入力します。KeToan フォルダが表示され、ファイルのコピーができれば成功です。
小技:設定ファイルを変更した後は、常に testparm コマンドを使用してください。サービスを再起動する前に、単純な構文エラーを見つけることができます。CentOS Stream 9の管理は、SELinuxの仕組みを理解していれば難しくありません。安定したシステムの運用を願っています!

