mkdirコマンドの-Zオプションを完全ガイド!SELinuxのセキュリティコンテキストを指定する方法
生徒
「先生、Linuxでフォルダを作るときにmkdirを使うのは知っているんですが、-Zオプションって何に使うんですか?」
先生
「良い質問ですね。-Zオプションは、SELinux(エスイーリナックス)というセキュリティ機能に関係していて、新しく作るディレクトリに特定のセキュリティコンテキストを割り当てるときに使うんですよ。」
生徒
「セキュリティコンテキストって何ですか?初心者にはちょっと難しいです…」
先生
「大丈夫です。セキュリティコンテキストというのは、ファイルやフォルダに『このファイルは誰がアクセスできるか、どんな操作が許されるか』というラベルを付ける仕組みのことです。家のドアに『この部屋は管理者しか入れません』と書いた張り紙をするイメージに近いですね。」
生徒
「なるほど!じゃあ、mkdir -Zを使うと、その張り紙を付けながらフォルダを作れるってことですね?」
先生
「その通りです!では実際の使い方を見ていきましょう。」
1. mkdirコマンドと-Zオプションとは?
mkdirは「make directory」の略で、Linuxで新しいディレクトリ(フォルダ)を作成する基本コマンドです。その中で、-ZオプションはSELinuxのセキュリティコンテキスト(Security Context)を指定するために使います。
通常、フォルダを作るとSELinuxが自動的に適切なラベルを付けますが、特定の用途で「このフォルダは特定のサービス専用にする」といったケースでは、自分でセキュリティコンテキストを明示的に指定する必要があります。
2. SELinuxとセキュリティコンテキストの基本
SELinux(Security-Enhanced Linux)は、Linuxに組み込まれている強力なセキュリティ機能です。通常のLinuxのパーミッション(読み取り・書き込み・実行の権限)に加えて、さらに細かい制御を行えます。
例えば、ApacheというWebサーバーのプログラムが動くとき、「このフォルダはWebページ用だからApacheだけがアクセスできる」といった制御をセキュリティコンテキストで実現できます。
セキュリティコンテキストは、一般的に「ユーザー:ロール:タイプ:レベル」という形で表現されます。初心者が最初に覚えるべきポイントはタイプ(type)です。これが「どのサービスやプロセスに許可されるか」を決める重要な部分だからです。
3. mkdir -Zの具体的な使い方
それでは、実際にmkdir -Zを使ってフォルダを作成してみましょう。ここでは例として、Apache用の公開ディレクトリを作るケースを考えます。
mkdir -Z httpd_sys_content_t /home/user/public_html
このコマンドでは、/home/user/public_htmlというフォルダを作り、そのフォルダに「httpd_sys_content_t」というタイプのセキュリティコンテキストを設定しています。これによりApacheが安全にそのフォルダを扱えるようになります。
4. セキュリティコンテキストを確認する方法
作成したフォルダに正しくセキュリティコンテキストが設定されているか確認するには、ls -Zコマンドを使います。
ls -Z /home/user/public_html
drwxr-xr-x. user user system_u:object_r:httpd_sys_content_t:s0 public_html
ここで「httpd_sys_content_t」と表示されている部分が、指定したセキュリティコンテキストです。もし間違っていれば再度設定し直す必要があります。
5. よくある利用シーン
- Webサーバー用フォルダを作成するとき(ApacheやNginx向け)
- データベースのストレージディレクトリを準備するとき
- 特定のユーザーやアプリ専用のセキュリティが必要な場合
これらの場面でmkdir -Zを使えば、SELinuxの仕組みと連携して安全なシステム運用ができます。
6. 注意点とトラブルシューティング
-Zオプションを使うときに注意すべき点があります。SELinuxが有効になっていない環境では、このオプションを指定しても意味がありません。また、間違ったセキュリティコンテキストを設定すると、アプリケーションがフォルダにアクセスできなくなることがあります。
もしWebサーバーがフォルダを読み込めないといったトラブルが起きた場合は、まずls -Zでセキュリティコンテキストを確認しましょう。必要であれば、chconコマンドで後から修正することも可能です。