戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2012年 秋期 午前(科目A)42


問題文

ファイルの属性情報として、ファイルに対する読取り、書込み、実行の権限を独立に設定できるOSがある。この3種類の権限は、それぞれに1ビットを使って許可、不許可を設定する。この3ビットを8進数表現0〜7の数字で設定するとき、次の試行結果から考えて、適切なものはどれか。   〔試行結果〕  ① 0を設定したら、読取り、書込み、実行ができなくなってしまった。  ② 3を設定したら、読取りと書込みはできたが、実行ができなかった。  ③ 7を設定したら、読取り、書込み、実行ができるようになった。

選択肢

2を設定すると、読取りと実行ができる。
4を設定すると、実行だけができる。(正解)
5を設定すると、書込みだけができる。
6を設定すると、読取りと書込みができる。

ファイル属性の権限ビットと8進数表現【午前2 解説】

要点まとめ

  • 結論:問題の試行結果から、3ビットは実行=4、読取り=2、書込み=1と割り当てられ、4を設定すれば実行のみが可能です。
  • 根拠:0は、3は、7はであり、それぞれ「なし」「読取り+書込み」「全て」を表すことから割り当てが決まります。
  • 差がつくポイント:8進数を2進数に直し、各ビット(LSB=1, 中位=2, MSB=4)と権限の対応を正確に把握することが重要です。

正解の理由

正解は です。
理由は次の通りです。問題の試行結果を2進数に変換すると、
  • 0 → (読取・書込・実行のいずれも不可)
  • 3 → (下位2ビットが1で、中位・下位が許可) → ここで許可されているのは「読取りと書込み」
  • 7 → (全ビット1で全て許可)
3が「読取りと書込み」を意味するので、2進表現の下位から順に「書込み=1、読取り=2、実行=4」と対応づけられます。したがって、値4は実行ビットのみを立てるので「実行だけができる」となり、選択肢イが正しいです。

よくある誤解

  • 「UNIX の慣習(読取り=4, 書込み=2, 実行=1)に引きずられる」:問題の割り当ては試行結果に基づいて決めるため、慣習が当てはまらない場合がある点に注意。
  • 「8進数の桁とビットの対応を混同する」:ここでは1桁(0〜7)が3ビットを表す単位なので、各桁のビット位置(LSB→中位→MSB)を正しく読むこと。
  • 「10進数そのままを権限と誤解する」:8進数の数字は内部的に2進数に変換してビットごとの許可/不許可を判断します。

解法ステップ

  1. 試行結果の数値を2進数に変換する(0→000、3→011、7→111)。
  2. 各2進ビットの立ち具合と許可されている権限を照合する(3で許可されているのは上位以外の2ビット)。
  3. ビット位置に権限を割り当てる(LSB=書込み=1、次=読取り=2、MSB=実行=4)。
  4. 各選択肢の数を2進数に変換して、どの権限が許可されるか確認する。

選択肢別の誤答解説

  • ア: 「2を設定すると、読取りと実行ができる。」
    2はで中位ビットのみが1。割り当てでは中位が読取りなので「読取りのみ」であり、読取りと実行ではありません。誤り。
  • イ: 「4を設定すると、実行だけができる。」
    4はでMSBのみが1。割り当てではMSBが実行なので「実行のみ」が可能であり、正しい。
  • ウ: 「5を設定すると、書込みだけができる。」
    5はでMSBとLSBが1(実行+書込み)。よって「書込みだけ」ではなく「実行と書込み」が可能であり、誤り。
  • エ: 「6を設定すると、読取りと書込みができる。」
    6はでMSBと中位が1(実行+読取り)。したがって「読取りと書込み」ではなく「実行と読取り」であり、誤り。

補足コラム

標準的なUNIXパーミッションの表記では「読取り=4, 書込み=2, 実行=1」とすることが多く、そのために混乱しやすいです。本問は試行結果から独自のビット割り当て(書込み=1、読取り=2、実行=4)を導く必要があり、教科書の慣習に頼らず問題の条件から推定する力が求められます。実務では桁(例: 7 5 4 のような3桁)ごとに所有者/グループ/その他を表すことが多い点も覚えておくとよいでしょう。
簡単な確認用 Python スニペット(割り当てを問題通りに仮定)
mapping = {4: "実行", 2: "読取り", 1: "書込み"}
def perms(n):
    res = []
    for bit,val in [(4,"実行"),(2,"読取り"),(1,"書込み")]:
        if n & bit:
            res.append(val)
    return res

for n in [0,3,4,5,6,7]:
    print(n, bin(n)[2:].zfill(3), perms(n))

FAQ

Q. なぜ3が読取り+書込みと分かるのですか?
A. 3を2進数で表すと で下位2ビットが立っています。試行結果ではそれが「読取りと書込み」に対応しているため、各ビットの対応を確定できます。
Q. 問題ではなぜUNIX慣習と違う割り当てになるのですか?
A. 問題は試行結果(観察)を基に割り当てを決める設問です。慣習は参考になりますが、まずは与えられた条件に従って論理的に導くことが必要です。
Q. 8進数の桁が複数ある場合はどう読むべきですか?
A. 各桁は独立した3ビット(読取・書込・実行)を表します。例えば8進表記の「6」は でその桁について「実行+読取り」を意味します。

関連キーワード: ファイル権限、ビット演算、8進数表現、パーミッション、ビットマスク、読み取り、書き込み、実行
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について