砂漠の旅人(たびと)|新天地:たびとの旅路

電脳砂漠を旅する、ある旅人の日記。フロッピーを頼りに歩いた日から、クラウドの地平を見つめる今日まで。見つけたオアシスも、迷い込んだ砂の迷宮も、全てこの羊皮紙に。

見えざる守護者の機嫌を伺え ~Rocky LinuxとUbuntu、SELinuxを巡る冒険~

どうやら、一筋縄ではいかない砂の迷宮に迷い込んだらしい。この顛末を書き残しておくか。

Rocky Linuxという名の厳格な大地に、Nginxという名の新たな拠点を築いた。順風満帆に見えたその矢先、私は突如として「403 Forbidden」という、冷酷な結界に阻まれた。しかし、不思議なことに、目に見えない守護者「SELinux」を眠らせると、結界は嘘のように消え去るのだ。

さらに奇妙なことに、Ubuntuという自由な大地で同じ儀式を執り行っても、この結界は現れない。なぜ、二つの大地でこれほどまでに景色が違うのか?この謎を解き明かすため、私は「SELinuxコンテキスト」という、古代の魔法体系の深淵を覗き込む決意をした。これは、見えざる守護者の機嫌を損ねず、無事に拠点を築き上げるための、実践的な魔導書である。

この羊皮紙のあらまし

この羊皮紙が導く者

  • Rocky Linux(またはCentOS系)という大地で、SELinuxという名の見えざる守護者に道を阻まれた者
  • 「403 Forbidden」の結界に悩まされ、その真の原因を探求する者
  • SELinuxコンテキストという、難解な魔法体系の断片に触れてみたい冒険者

第一の冒険:Rocky Linuxという厳格な大地

まずは、Rocky Linux 9.4という大地で、Nginxの拠点を築く儀式を執り行う。 この大地は厳格で、初期状態では一般人にsudoという神の力の一部さえ与えてくれない。まずはrootとなり、usermodで自らに力を授ける儀式から始めねばならない。

儀式の舞台、Rocky Linux 9.4

Nginxをインストールし、サービスを起動する。しかし、このままではまだ外界から拠点を訪れることはできない。firewall-cmdという呪文で、見えざる炎の壁に風穴を開け、HTTPの通り道を確保せねばならない。

$ sudo firewall-cmd --permanent --zone public --add-service http
$ sudo firewall-cmd --reload

この儀式を終えて初めて、我々はブラウザという魔法の水晶玉を通して、美しいホームページを拝むことができるのだ。

厳格な大地に咲いた、一輪の花

結界の発動

問題はここからだ。自分のホームディレクトリで作成した羊皮紙(sample.html)を、Nginxのドキュメントルート(/usr/share/nginx/html/test)へ移した途端、例の「403 Forbidden」という結界が発動する。

突如として現れた、冷酷な結界

謎の解明:SELinuxコンテキストという「刻印」

ls -Zという真実の目で見ると、その原因は一目瞭然だった。 私が持ち込んだ羊皮紙にはuser_home_tという「故郷の刻印」が押されていた。しかし、Nginxの神殿に入れるのはhttpd_sys_content_tという「聖なる刻印」を持つものだけ。これが、守護者が怒った理由だ。

# 故郷の刻印が押された、私の羊皮紙
$ ls -Z /usr/share/nginx/html/test/sample.html
unconfined_u:object_r:user_home_t:s0 /usr/share/nginx/html/test/sample.html

# 神殿に元からあった、聖なる刻印を持つ羊皮紙
$ ls -Z /usr/share/nginx/html/index.html
system_u:object_r:httpd_sys_content_t:s0 /usr/share/nginx/html/index.html

結界を解く呪文

解決策は、chconという呪文で、羊皮紙に押された刻印を聖なるものへと書き換えることだ。

$ chcon -t httpd_sys_content_t /usr/share/nginx/html/test/sample.html

これで守護者の機嫌は直り、結界は解かれ、私の羊皮紙は無事に衆目に晒されることとなる。

守護者の許しを得て、ついに表示された

第二の冒険:Ubuntuという自由な大地

次に、舞台をUbuntu 24.04という自由な大地に移す。 こちらの大地は寛容で、最初からsudoの力が使え、ファイアウォールの門も初期状態では開かれている。

もう一つの舞台、Ubuntu 24.04

Rocky Linuxと全く同じ手順で、自分のホームから羊皮紙を移す。 …すると、どうだろう。何事もなかったかのように、あっさりと表示されるではないか。

真実の目で確認すると、ls -Z?を返すのみ。この大地では、そもそもSELinuxという守護者自体が、初期状態では眠りについているようだった。

$ ls -Z /var/www/html/test/sample.html
? /var/www/html/test/sample.html

羊皮紙を巻く前に

Rocky LinuxUbuntu。二つの大地を旅して見えたのは、それぞれの「哲学」の違いだった。

Rocky LinuxCentOS系)は、セキュリティを最優先する厳格な要塞だ。 ファイアウォールSELinuxコンテキストといった幾重もの城壁で守られており、ビジネスという戦場で戦うための、まさにプロフェッショナルのための大地と言えるだろう。

対してUbuntuは、利便性を重視する自由な都市だ。 最低限の守りは固めつつも、冒険者が無用な壁に悩まされることなく、素早く目的を達成できることを是としている。

どちらが良いという話ではない。ただ、我々冒険者は、自分が今どちらの大地に立っているのかを正しく認識し、その土地の作法に従う必要がある、ということだ。SELinuxコンテキストは難解だが、その理を少しでも知ることは、Rockyという大地を旅する上で、必ずや我々の身を助けるだろう。

どうやらインクが切れそうだ。今日の記録はここまでにして、道具の手入れでもするとしよう。

砂漠で見つけた魔法のランプ

  • Rocky Linux 公式の古文書
  • Ubuntu 日本語 Remix の古文書
    • それぞれの民が記した、大地を旅するための手引書。

ラクダの独り言

ご主人が「見えない守護者が怒ってる!」とか言って、黒い画面に呪文を打ち込んでいる。俺に言わせりゃ、見えないもんにビビる前に、目の前で腹を空かせている俺の機嫌を取るべきだと思うんだがな。まったく、人間ってのは面倒くさい生き物だぜ。おっと、また腹が鳴っちまった。