基本情報技術者 2015年 春期 午前(科目A) 問44
問題文
ファイルの属性情報として、ファイルに対する読取り、書込み、実行の権限を独立に設定できるOSがある。この3種類の権限は、それぞれに1ビットを使って許可、不許可を設定する。この3ビットを8進数表現0〜7の数字で設定するとき、次の試行結果から考えて、適切なものはどれか。
〔試行結果〕
① 0を設定したら、読取り、書込み、実行ができなくなってしまった。
② 3を設定したら、読取りと書込みはできたが、実行ができなかった。
③ 7を設定したら、読取り、書込み、実行ができるようになった。
選択肢
ア:2を設定すると、読取りと実行ができる。
イ:4を設定すると、実行だけができる。(正解)
ウ:5を設定すると、書込みだけができる。
エ:6を設定すると、読取りと書込みができる。
🔒 解説は解答すると表示されます
ファイル権限の8進数表現【午前解説】
正解の理由
正解は イ です。理由は次の通りです。8進数の各桁は3ビットで表され、与えられた試行結果からビットの意味を逆算すると、下位ビット(の位)が読取り、の位が書込み、の位が実行に対応します。試行の検証は次の通りです。
- → 読取り・書込み・実行すべて不可(条件に一致)
- → 下位2ビットが立っているので「読取り(1)+書込み(2)」が可能で実行は不可(条件に一致)
- → 全ビット立ちで全許可(条件に一致)
したがって は実行ビットのみが立つので、実行だけができるという選択肢(イ)が正しいです。
解法ステップ
- 各試行の8進数を3ビットの二進数に直す:.
- どのビットがどの権限に対応しているかを、試行の許可結果と照合する。
- 照合の結果、下位から「読取り(1), 書込み(2), 実行(4)」と対応することを確定する。
- 各選択肢の数値を二進数化して、どの権限が許可されるかを判断する。4 () は実行のみ許可なのでイを選ぶ。
選択肢別の誤答解説
- ア: 2 を設定すると で真ん中のビットのみが立ち、書込みのみ可能です。読取りと実行ができる、という記述は誤りです。
- イ: イ は正解。 で上位ビット(実行)のみが立ち、実行だけが可能になります。
- ウ: 5 を設定すると で実行と読取りが可能になりますが、選択肢は「書込みだけ」としており誤りです。
- エ: 6 を設定すると で実行と書込みが可能になりますが、選択肢は「読取りと書込み」としており誤りです。
よくある誤解
- UNIX 標準の覚え違い:多くの人は「4=読取り, 2=書込み, 1=実行」と覚えていますが、問題の試行結果からはビットの並びが逆(読取りが1の位)になっているため、安易に既知の知識を当てはめると間違えます。
- 桁の向きを確認しない:8進数をそのまま「桁=権限の順」と読みがちですが、必ず二進数に直してどのビットが立っているか確認することが重要です。
- 試行結果を検証しない:選択肢を検討する前に、与えられた試行(①②③)で各ビットの意味を論理的に確定する手順を省くと誤答につながります。
補足コラム
- 覚え方のコツ:この問題では「下位ビット=読取り、次=書込み、上位=実行」となりました。試験問題では設問中の試行結果からビット対応を導く形式がよく出るため、まずは与えられた例で検証する癖をつけてください。
- 簡単な確認用 Python コード(例):
def perms(n):
r = bool(n & 1)
w = bool(n & 2)
x = bool(n & 4)
return {'read':r, 'write':w, 'exec':x}
for i in [0,3,4,5,6,7]:
print(i, perms(i))
このコードは本問と同じビット対応(1=read,2=write,4=exec)で検証できます。
FAQ
Q: 「通常の UNIX と違うのでは?」
A: 通常の表記(例えば ls -l のパーミッション表示)と問題の数値対応を混同しがちですが、設問の試行結果からビット対応を決めるのが正解への近道です。与えられた情報を優先してください。
A: 通常の表記(例えば ls -l のパーミッション表示)と問題の数値対応を混同しがちですが、設問の試行結果からビット対応を決めるのが正解への近道です。与えられた情報を優先してください。
Q: 二進数に慣れていません。素早く判定するコツは?
A: 8進数を二進数に直す際、各桁を3ビットで表現すること(例:5→101)を習慣にし、ビットごとに権限を対応させれば迷いません。
A: 8進数を二進数に直す際、各桁を3ビットで表現すること(例:5→101)を習慣にし、ビットごとに権限を対応させれば迷いません。
Q: 複数桁(所有者・グループ・その他)の場合はどうする?
A: 各桁は独立した3ビットセットです。各桁ごとに同様の方法で二進数化して権限を確認します。
A: 各桁は独立した3ビットセットです。各桁ごとに同様の方法で二進数化して権限を確認します。
関連キーワード: ファイル権限、8進数表現、ビット演算、バイナリ、UNIX

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

