開けないファイルを開けろ
初段 / 目安 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つだけ見て満足せず、並べて眺めてください。
完成条件
/opt/yumesaku/bin/uriage-shukei.shを、実行して最後まで通る状態にすること- そのために足りない許可を
chmodで付けること。中身は書き換えないこと - 実行して、集計結果を
/root/uriage-2026-08.txtに残すこと
スクリプトは、実行すると集計結果を標準出力に出します。出た結果をファイルに残すところまでが仕事です。
進め方
まず ls -l で現状を見てください。手が止まったらヒントを開けます。ヒントは3段階で、①方針、②使うコマンド、③部分解の順に出ます。1つも開けずに通せたら、その問題は自分のものです。
中身を書き換えて逃げることもできますが、それは直したことになりません。許可で直してください。
課題
- /opt/yumesaku/bin/uriage-shukei.sh が実行できる状態になっていること
- そこから呼ばれる下ごしらえのスクリプトも実行できる状態になっていること
- スクリプトの中身は書き換えないこと
- 実行結果を /root/uriage-2026-08.txt に残すこと
ヒント
前のヒントを開くと次が開きます。開かずに解けると未開封クリアです