コース一覧
Linux道場 商店街サーバー障害対応の10問
開けないファイルを開けろ

Linux道場 商店街サーバー障害対応の10問

Linux入門で身に付けた技を、商店街事務局のサーバー当番として試す演習専用コースです。解説はありません。障害の報告と復旧条件だけを読み、原因を自分で突き止めて直します。手が止まったときのために、方針・使うコマンド・部分解の3段階のヒントを各問に用意しています。他の道場と違い、白紙から書き始めるのではなく、すでに壊れている機械の前に座るところから始まります。ブラウザの中で本物の Debian が動いていて、打ったコマンドはそのまま本物の機械に効きます。迷子のファイル探しから始まり、ログからの原因特定、権限、ディスク不足、暴走プロセス、PATH、スクリプトの起動失敗、定期実行の停止、バックアップからの復元と進み、最後は複数の障害が同時に起きたサーバーを健全な状態まで戻します。1問15分から45分、全10問で約5時間です。Linux入門を終えて「コマンドは知っているが、壊れた機械を前にすると手が止まる」と感じている方に向いています。

1
初段
01. 迷子のファイルを探し出せ15分
02. ログから犯人を特定せよ20分
03. 開けないファイルを開けろ20分
04. ディスクを空けろ25分
2
中段
01. 暴走プロセスを止めろ25分
02. コマンドが見つからない30分
03. 動かないスクリプトを直せ30分
3
師範
01. 定期実行が動かない理由を突き止めろ30分
02. バックアップから復元せよ35分
03. 総合 サーバー健全化ミッション45分

開けないファイルを開けろ

初段 / 目安 20分

月初の朝、事務局の売上集計が動きませんでした。毎月1日に鴫原さんが手で叩いている集計スクリプトが、実行しようとした瞬間に断られます。

プレーンテキスト

-bash: /opt/yumesaku/bin/uriage-shukei.sh: Permission denied

「先週バックアップから戻したんだ。中身は合っとる。cat で読める。なのに動かん」

鴫原さんの言う通り、ファイルは壊れていません。cat で開けば中身がそのまま出ます。読めるのに動かない。この差がどこから来ているのかが、今日のお題です。

読めることと動かせることは別

Linux のファイルには、中身とは別に許可が付いています。ls -l の左端に並ぶ記号がそれです。

プレーンテキスト

-rw-r--r-- 1 root root 214 Aug 9 09:12 uriage-shukei.sh

先頭の - はふつうのファイルという意味で、その後ろが3文字ずつ3組に分かれます。持ち主、グループ、その他の順です。3文字はそれぞれ r が読み、w が書き、x が実行を表します。上の例には x が1つもありません。だから「読めるのに動かない」のです。

ここで押さえておくべきことがあります。root は読み書きの制限をほとんど無視できますが、実行の許可だけは無視できません。 どの組にも x が無いファイルは、root であっても実行できずに断られます。だからこの障害は、管理者だからといって力技では抜けられません。

許可を付け替えるのが chmod です。書き方は2通りあります。

ターミナル

chmod +x ファイル # 実行の許可を足す chmod 755 ファイル # 3桁で許可を丸ごと指定する

3桁は、r を4、w を2、x を1として足した数を、持ち主・グループ・その他の順に並べたものです。755 は持ち主が読み書き実行、他は読みと実行になります。スクリプトに付ける許可としては、この 755 が最も普通の形です。

どちらで書いてもかまいませんが、意味は少し違います。+x は今ある許可に実行を足すだけで、他はそのまま残ります。755 は3組すべてを指定した通りに置き換えます。壊れているのが実行の許可だけだと分かっているなら、余計な部分に触らない +x のほうが安全です。

集計は1つでは終わらない

もう一つ厄介があります。この集計スクリプトは、同じディレクトリに置いてある日次の下ごしらえスクリプトを呼びます。呼ばれる側も同じ理由で止まっていれば、親だけ直しても途中で落ちます。ls -l はディレクトリの中身をまとめて出せます。1つだけ見て満足せず、並べて眺めてください。

完成条件

  1. /opt/yumesaku/bin/uriage-shukei.sh を、実行して最後まで通る状態にすること
  2. そのために足りない許可を chmod で付けること。中身は書き換えないこと
  3. 実行して、集計結果を /root/uriage-2026-08.txt に残すこと

スクリプトは、実行すると集計結果を標準出力に出します。出た結果をファイルに残すところまでが仕事です。

進め方

まず ls -l で現状を見てください。手が止まったらヒントを開けます。ヒントは3段階で、①方針、②使うコマンド、③部分解の順に出ます。1つも開けずに通せたら、その問題は自分のものです。

中身を書き換えて逃げることもできますが、それは直したことになりません。許可で直してください。

課題

  1. /opt/yumesaku/bin/uriage-shukei.sh が実行できる状態になっていること
  2. そこから呼ばれる下ごしらえのスクリプトも実行できる状態になっていること
  3. スクリプトの中身は書き換えないこと
  4. 実行結果を /root/uriage-2026-08.txt に残すこと

ヒント

前のヒントを開くと次が開きます。開かずに解けると未開封クリアです

①方針 中身ではなく、ファイルに付いている許可を疑います。ls -l の左端の記号を読んでください。読めるのに動かないのは実行の許可が無いからです

ヒント 2ヒント 1 を開くと読めます
ヒント 3ヒント 2 を開くと読めます
  • 1. ls -l /opt/yumesaku/bin で許可の並びを見る
  • 2. cat でスクリプトの中身を読み、他に何を呼んでいるか確かめる
  • 3. 足りない実行の許可を chmod で付ける
  • 4. スクリプトを実行する
  • 5. 出力を /root/uriage-2026-08.txt に書き出す

4 項目で採点します