Instiq
第2章 · ファイル・ディレクトリの操作と管理·v1.0.0·更新 2026/7/6·読了目安 約12分

変更要約: 初版(主題1.02・副主題1.02.1〜1.02.4に対応)

2.1ファイルの所有者とパーミッション

この節の要点

ファイルへのアクセスを所有者グループパーミッションで制御する方法を学びます。ls -l の読み方、chmod(記号/数値モード)、chownchgrp による所有者変更、umask による作成時の既定値、SUIDSGIDスティッキービット を押さえます。

Linux は複数ユーザーが同居する前提の OS です。「誰が読めて、誰が書けて、誰が実行できるか」をファイルごとに決める仕組みがパーミッションで、セキュリティの土台としてほぼ毎回の運用作業に登場します。

2.1.1パーミッションの読み方と変更

  • ls -l の先頭10文字=ファイル種別1字+rwx×3組所有者グループ/その他)。例 -rwxr-xr--=所有者 rwx・グループ r-x・その他 r--。
  • chmod数値(8進)モード=r=4・w=2・x=1 の合計を3桁で並べる(例 chmod 754 file=rwxr-xr--)。記号モードchmod u+x,g-w,o=r file のように u/g/o/a と +/-/= で指定。
  • 所有者の変更=chownchown user01 filechown user01:dev file で所有者とグループを同時に)。グループのみ=chgrp
  • umask新規作成時に落とすビットを決める既定値。ファイルは 666−umask・ディレクトリは 777−umask が実効値(umask 022 → ファイル 644・ディレクトリ 755)。

2.1.2SUID・SGID・スティッキービット

  • SUID(4000・所有者の x 位置に s)=実行時にファイル所有者の権限で動く(例 /usr/bin/passwd。一般ユーザーが /etc/shadow を更新できる理由)。
  • SGID(2000・グループの x 位置に s)=実行ファイルではグループ権限で実行。ディレクトリに付けると、その中に作られるファイルがディレクトリのグループを継承する(共有ディレクトリの定石)。
  • スティッキービット(1000・その他の x 位置に t)=ディレクトリ内のファイルを所有者しか削除できなくする(例 /tmp=drwxrwxrwt)。
試験ポイント

「一般ユーザーがパスワードを変更できる仕組み=passwd の SUID」「共有ディレクトリでグループを継承させる=ディレクトリへの SGID」「/tmp で他人のファイルを消せない=スティッキービット」 の3点セットが最頻出です。数値では 4=SUID・2=SGID・1=sticky を先頭桁に足します(例 chmod 2775 /shared)。umask の計算(022→644/755)も定番です。

運用で迷わないコツは「誰として動くか」と「どこに効くか」で特殊ビットを整理することです。SUID実行ファイル専用の考え方で、動作中だけ所有者(多くは root)の力を借ります。だからこそ SUID 付きファイルはセキュリティ監査の対象です(1.10 で find / -perm -4000 として再登場します)。SGID は実行ファイルでは SUID のグループ版ですが、実務での主役はディレクトリへの付与=プロジェクト共有フォルダで「誰が作ってもグループ dev のファイルになる」を実現します。スティッキービットは削除だけを制限するディレクトリ専用の仕組みで、全員が書ける /tmp の秩序を守っています。umask はログインシェルの初期化ファイルで設定される「新規作成の既定」で、既存ファイルには影響しない点に注意してください。ls -ls/t大文字(S/T)で表示されたら、対応する実行ビット x が無い状態を示します。

特殊ビット数値・表示効果の要点
SUID4000・所有者欄に s所有者の権限で実行(passwd)
SGID(実行ファイル)2000・グループ欄に sグループ権限で実行
SGID(ディレクトリ)2000・グループ欄に s新規ファイルがグループを継承
スティッキービット1000・その他欄に t所有者以外は削除不可(/tmp)
注意

ひっかけ: 「umask 022 を設定すると新規ファイルは 755 になる」は誤りです。ファイルの起点は 666(実行ビットは付かない)なので 644 です。755 になるのはディレクトリ(起点 777)。また「SUID をディレクトリに付けると所有者を継承する」も誤り=所有者継承の仕組みはなく、グループ継承(ディレクトリの SGID)だけが存在します。

rwx数値・SUID/SGID/sticky・chown/umask を3列に整理した図。
4=SUID・2=SGID・1=sticky

2.1.3この節のまとめ

  • r=4/w=2/x=1 の3桁+先頭に 4=SUID/2=SGID/1=sticky。変更は chmod/chown/chgrp・既定は umask(ファイル666−/ディレクトリ777−)
  • SUID=所有者権限で実行(passwd)/SGID ディレクトリ=グループ継承/sticky=/tmp の削除制限

進捗の記録にはログインが必要です。

理解度チェック

(軽い確認用)

Q1. ファイルを「所有者は読み書き、グループとその他は読み取りのみ」にしたい。適切なコマンドは?

Q2. 共有ディレクトリ /shared で、誰がファイルを作ってもディレクトリと同じグループ所属になるようにしたい。付与すべき特殊ビットは?

Q3. umask が 022 のとき、新規作成した通常ファイルのパーミッションはどうなる?

理解度を確認第2章「ファイル・ディレクトリの操作と管理」の問題を解く