Linuxファイルのパーミッションと所有者完全ガイド|chmod・chown・umask・特殊ビット【LinuC 1.02.1】

LinuC対策

この記事はLinuC Level1 副主題1.02.1「ファイルの所有者とパーミッション」に対応した要点解説です。試験で問われる範囲に絞り、chmodchownchgrpumaskと特殊ビット(SUID/SGID/Sticky)の知識を整理しました。

📚 LinuC Level1 完全攻略マップ(全39サブ項目)へ戻る


目次

  1. この記事でできるようになること
  2. ls -lの出力を読む
  3. rwxと数値(8進数)の対応
  4. chmod:記号モードと数値モード
  5. chownchgrp:所有者・グループを変える
  6. 再帰オプション-R(--recursive)
  7. 特殊ビット:SUID/SGID/Sticky
  8. umask:新規作成時のデフォルト権限
  9. よくある質問(FAQ)
  10. まとめ
  11. 模擬問題にチャレンジ(ランダム出題)

1. この記事でできるようになること

LinuC 副主題1.02.1の出題範囲のうち、本記事で押さえる要点:

  • chmod(権限)/chown(所有者・グループ)/chgrp(グループのみ)/umask(デフォルト)の役割分担
  • ls -lの1行から、ファイルタイプ/パーミッション/所有者/グループ/サイズを読む
  • ✅ rwxの数値変換(r=4/w=2/x=1)と代表的な組み合わせ(644/755/750/500など)
  • chmodの記号モード(u/g/o/a+/-/=r/w/x)と数値モード、同じ結果を生む複数の書き方
  • chown ユーザ:グループユーザ.グループ:グループ.グループの書式
  • ✅ 再帰適用は-Rまたは--recursivedir/*(ワイルドカード)との違い
  • ✅ SUID(4000)/SGID(2000)/Sticky(1000)の意味と、代表的なSUIDコマンド(passwdsumountcrontab)
  • umask値と新規ファイル/ディレクトリの結果パーミッションの対応(022/027/077など)

2. ls -lの出力を読む

ls -lの1行はスペース区切りで、先頭の10文字+所有者+グループ+サイズ+更新時刻+ファイル名という構成です。試験では先頭10文字と所有者/グループ/サイズが読み取れれば十分です。

-rw-r--r--  1  test  staff  24  Jul 21 13:38  index.html
 ①                ②     ③     ④   ⑤            ⑥
位置 内容
①先頭1文字 ファイルタイプ(-通常ファイル/dディレクトリ/lシンボリックリンク など)
①続き9文字 パーミッション(所有者rwx+グループrwx+その他rwx)
所有ユーザ
所有グループ
ファイルサイズ(バイト)
最終更新時刻
ファイル名

例えば-rw-r--r-- 1 test staff 24 Jul 21 13:38 index.htmlなら、通常ファイル/パーミッション644/所有者test/グループstaff/サイズ24バイト、と読みます。

2-1. ファイルタイプの先頭1文字

記号 種類
- 通常ファイル
d ディレクトリ
l シンボリックリンク(小文字のエル)
c キャラクタデバイス
b ブロックデバイス

特にlrwxrwxrwxのように先頭がlで始まるエントリはシンボリックリンクです。シンボリックリンク自体のパーミッションはほぼ常にrwxrwxrwxと表示されますが、実際のアクセス可否はリンク先のパーミッションで判定されます。

2-2. 代表的なシステムファイル

典型的なLinuxシステムでの/etc/passwdパーミッション644、所有者root:rootです。ユーザ情報(ログイン名・UID・シェルなど)は一般ユーザからも参照できる必要があるため、全員が読めるよう644が標準です。暗号化パスワードはこのファイルではなく/etc/shadow(400または640/root:root)に分離されています。


3. rwxと数値(8進数)の対応

パーミッションは「所有者3文字+グループ3文字+その他3文字」の9文字で、それぞれr=4/w=2/x=1の合計を取って8進数1桁に変換できます。

記号 数値
--- 0
--x 1
-w- 2
-wx 3
r-- 4
r-x 5
rw- 6
rwx 7
記号表記 数値 よく出る場面
rwxr-xr-x 755 実行可能なスクリプト、ディレクトリの標準
rw-r--r-- 644 テキストファイルの標準
rwxr-x--- 750 所有者と同一グループだけに公開
r-x------ 500 所有者のみ読み取り+実行、書き換え不可
rw------- 600 SSH秘密鍵など個人ファイル

例:rwxr-x---は所有者rwx=7、グループr-x=5、その他—=0 で750です。

3-1. ディレクトリでのrwxの意味

記号 ディレクトリに対する効果
r 中のファイル一覧を取得できる(lsできる)
w 配下のファイル作成・削除・リネームができる
x ディレクトリを通過できる(cdや配下へのパス解決に必須)

ディレクトリのxは「通過権」と呼ばれ、rがあってもxがなければcdで中に入れません。ファイルのx(実行権)とは意味が異なります。Stickyビットはファイルではなくディレクトリで意味を持つ特殊ビットです。


4. chmod:記号モードと数値モード

chmodはファイル・ディレクトリのパーミッションを変更するコマンドです。所有者・グループを変えるのはchmodではなくchownchgrpである点に注意。

4-1. 記号モード

「対象+操作+権限」の組み合わせで書きます。

位置 記号 意味
対象 u 所有者(user)
g グループ(group)
o その他(other)
a 全部(all=u+g+o)
操作 + 権限を追加
- 権限を削除
= 権限を絶対指定(既存をリセット)
権限 r 読み取り
w 書き込み
x 実行

対象はuggoのようにまとめて書けます。複数指定はカンマ区切り。

4-2. 数値モード

3桁(通常)または4桁(特殊ビット込み)で指定し、既存の権限は全置換されます。

4-3. 同じ結果を生む複数の書き方

記号と数値は結果が一致すれば等価です。試験では「同じ結果になる書き方をすべて選べ」型の問題が頻出なので、主要パターンを対応表で押さえます。

目標 等価なchmodコマンド
644 → 755
(全員にxを追加)
chmod 755 ping-t
chmod u+x,g+x,o+x ping-t
chmod a+x ping-t
chmod +x ping-t(対象省略=aと同じ扱い)
chmod u=rwx,g=rx,o=rx ping-t
700 → 500
(所有者からwを外す)
chmod 500 dir
chmod u-w dir
chmod u=rx dir
644(所有者rw・他r) chmod 644 ping-t
chmod u=rw,g=r,o=r ping-t
chmod u=rw,go=r ping-t
⚠️ 「目標パーミッションに達するか」で判定する
たとえば700→500の問題でchmod a=rx dirを選ぶと、グループとその他にもrxが付いてしまい555になります。chmod o+x dirも所有者のwを外せないので500には届きません。既存の権限からどう変化して、目標値に一致するかを意識すると引っかからずに解けます。

5. chownchgrp:所有者・グループを変える

所有者・グループを変更するコマンドは2つあります。書式の細かい違いが出題されやすい箇所です。

書式 効果
chown ユーザ ファイル 所有ユーザだけを変更(グループはそのまま)
chown ユーザ:グループ ファイル ユーザとグループを同時に変更
chown ユーザ.グループ ファイル 同上(古い表記、多くのディストリで受け付ける)
chown :グループ ファイル グループだけを変更(chgrpと等価)
chown .グループ ファイル 同上(古い表記)
chgrp グループ ファイル グループだけを変更(chgrpの本来用途)
# ユーザだけを test → staff へ(グループはそのまま)
$ sudo chown staff file.txt

# ユーザとグループを同時に staff:staffgroup へ
$ sudo chown staff:staffgroup file.txt
$ sudo chown staff.staffgroup file.txt   # ドット表記(古い形式)

# グループだけを staffgroup へ
$ sudo chgrp staffgroup file.txt
$ sudo chown :staffgroup file.txt
$ sudo chown .staffgroup file.txt
⚠️ chmodchownchgrpumaskの役割分担
chmod — 権限(rwx/数値)を変える
chown — 所有ユーザ(+オプションでグループ)を変える
chgrp — 所有グループだけを変える
umask — 新規作成時のデフォルトを設定
「パーミッションを変える」のはchmodだけ。「所有ユーザとグループの両方を変えられる」のはchownだけ、が基本の弁別です。

6. 再帰オプション-R(--recursive)

ディレクトリ配下のファイル・ディレクトリにまとめて変更を反映するには-Rを付けます。長形式は--recursivechmodchownchgrpで共通に使えます。

# dir 配下すべてを 755 に
$ chmod -R 755 dir
$ chmod --recursive 755 dir

# 記号モード併用も可
$ chmod -R u=rwx,go=rx dir

# dir 配下の所有グループをまとめて staffgroup に
$ sudo chgrp -R staffgroup dir
$ sudo chown -R :staffgroup dir
⚠️ -Rdir/*は別物
chmod 755 dir/*はシェルがワイルドカードを直下のエントリだけに展開するため、孫ディレクトリ以下は変更されません。またchmod 755 dirのように-Rなしだとdir自身のみでdir内部は変更されません。配下すべてを一括したいときは必ず-R(または--recursive)を使います。

7. 特殊ビット:SUID/SGID/Sticky

通常のrwxに加えて、特殊な用途に使う3つのフラグがあります。4桁の数値モードでは最上位桁(1000の位)に設定し、記号モードではstとして表現します。

種類 数値 記号指定 効果
SUID 4000 u+s 実行ファイルが所有者の権限で動く
SGID 2000 g+s 実行ファイルが所有グループの権限で動く(ディレクトリでは配下作成ファイルがグループを継承)
Sticky 1000 +to+t ディレクトリで、自分が所有するファイル以外は削除・リネームできない

7-1. 設定例

# SUIDを付ける(通常755の実行ファイルを前提)
$ chmod u+s file
$ chmod 4755 file

# SGIDを付ける
$ chmod g+s file
$ chmod 2755 file

# Stickyを付ける(ディレクトリ用)
$ chmod +t   dir
$ chmod o+t  dir
$ chmod 1755 dir

7-2. ls -lでの見え方

特殊ビットは対象のx位置に重ねて表示されます。実行権ありなら小文字st、なしなら大文字ST

表示例 意味
-rwsr-xr-x SUID付き(所有者x+s)。passwdなどで見られる
-rwxr-sr-x SGID付き(グループx+s)
drwxrwxrwt Sticky付きディレクトリ(末尾にt)。/tmpの標準状態(1777)

7-3. Stickyビットが付いたディレクトリの振る舞い

Stickyビット付きディレクトリ(例:/tmp、パーミッション1777)は、次の性質を持ちます。

  • 末尾「その他の実行権」位置に小文字tが表示される(drwxrwxrwt)
  • 誰でも書き込み可能(ファイル作成できる)
  • ただし他人が所有するファイルは、書き込み権があっても削除・リネームできない

この仕組みにより、全員が共用する一時ディレクトリで「他人が作ったファイルを勝手に消される」事故を防いでいます。chmod 1755 dirのように先頭桁に1を付ければ同じ保護が入り、共有ディレクトリで自分以外のファイル削除を抑止できます。

7-4. SUID/SGIDが標準設定されている代表的コマンド

一般ユーザがroot権限を必要とする処理を行うコマンドには、標準でSUIDが設定されています。

コマンド 標準のフラグ 理由
/usr/bin/passwd SUID(root) 一般ユーザのパスワード変更で/etc/shadowにroot権限で書き込むため
/usr/bin/su SUID(root) 別ユーザ(特にroot)になるのにUID変更と認証が必要
/usr/bin/mount SUID(root) 一般ユーザが/etc/fstabuser指定エントリをマウントできるように
/usr/bin/crontab SUID(root) 一般ユーザが自分のcron設定を/var/spool/cronに保存するため

passwdsumountcrontabの4つはいずれも標準でSUIDが付いていると押さえておきます。システム上のSUIDファイルはfind / -perm -4000 -type f 2>/dev/nullで一覧できます。


8. umask:新規作成時のデフォルト権限

umask新規作成時のデフォルトパーミッションを調整するコマンドです。ベース値(ファイル666/ディレクトリ777)からumask値のビットを落とす(マスクする)ことで、実際に作られるパーミッションを決めます。

# 現在の umask を確認
$ umask
0022

# 記号表示
$ umask -S
u=rwx,g=rx,o=rx

# 一時的に変更(そのシェル内だけ)
$ umask 027

新規ファイルに実行権が付かない(ベース値が777ではなく666)のは、Linuxがファイル作成時には自動で実行権を与えない設計になっているためです。必要ならchmod +xで明示的に付けます。

8-1. umask値と結果パーミッションの対応表

試験では「umask値からファイル/ディレクトリのパーミッションを求める」「目標パーミッションから設定すべきumask値を求める」という双方向の問題が出ます。主要パターンを数値で覚えてしまうのが最速です。

umask値 新規ファイル
(666-umask)
新規ディレクトリ
(777-umask)
使いどころ
022 644 (rw-r--r--) 755 (rwxr-xr-x) 最も一般的なデフォルト
002 664 (rw-rw-r--) 775 (rwxrwxr-x) グループでの共同作業
027 640 (rw-r-----) 750 (rwxr-x---) その他を締め出す
077 600 (rw-------) 700 (rwx------) 個人用途の厳格設定
037 640 (rw-r-----) 740 (rwxr-----) グループ読み取り+その他なし
066 600 (rw-------) 711 (rwx--x--x) ファイルは自分だけ

計算は「各桁ごとに、ベース値のビットからumaskのビットを落とす」だけ。おおむね引き算のように扱えます(例:666-022=644、777-027=750)。

8-2. 出題パターンの目標値と対応umask

目標 設定すべきumask
ファイル644/ディレクトリ755 022
ファイル640/ディレクトリ750 027
ファイル600/ディレクトリ700 077
新規ディレクトリをrwxr-x---(750)に 027
新規ファイルをrw-r--r--(644)に 022
⚠️ umask 0037のようなケースの読み方
ファイルのベース値666から037をマスクすると、所有者rw(6)/グループr(4)/その他—(0)で640になります。所有者は読み取り+書き込み、その他はすべての権限なし、というのが典型的な読み取り結果です。新規ファイルに実行権は付かない点も併せて押さえます。

9. よくある質問(FAQ)

Q. chmodchownchgrpumaskがごちゃごちゃになる

パーミッション(rwx/数値)を変えるのはchmod」「所有ユーザを変えるのはchown(ユーザとグループ同時も可)」「グループだけを変える専用がchgrp」「新規作成時のデフォルトumask」と役割で覚えます。setfaclはACL(きめ細かい追加権限)用で、基本のパーミッション変更ではありません。

Q. chownでユーザとグループを同時に変えるときのセパレータは?

標準はコロンchown ユーザ:グループ ファイル。古い形式でchown ユーザ.グループ ファイルのようにドットも多くのディストリで受け付けられます。ユーザを省略して:グループ.グループと書けばグループだけの変更になります(chgrpと等価)。

Q. chown staff fileと書くとどうなる?

所有ユーザだけをstaffに変更します。グループには触れません。ユーザとグループを同時に変えたいときはコロン区切り(chown staff:staffgroup file)を使います。

Q. 再帰指定は-R以外に書き方がある?

長形式は--recursiveで、-Rと同じ効果です。chmod 755 dir/*もよく見ますが、これはシェルが展開したdirの直下エントリのみが対象なので、孫以下まで含めたい場合には不十分です。

Q. Stickyビットはファイルとディレクトリのどちらで意味を持つ?

現代のLinuxではディレクトリで意味を持つ特殊ビットです。ファイルに付けても一般的には動作に影響しません。「/tmpの1777」と「自分以外のファイルは削除できない」がセットで覚えるポイントです。

Q. umaskが0037のとき、新規ファイルには実行権が付く?

付きません。Linuxが新規ファイルのベース値を666(実行権なし)にしているためで、umaskの値に関わらず新規ファイルに自動でxは付与されません。必要なら作成後にchmod +xします。


10. まとめ

  • 役割分担chmod=権限、chown=所有者(とグループ)、chgrp=グループだけ、umask=新規作成時のデフォルト
  • ls -l:先頭1文字=タイプ(-dlなど)、続く9文字=rwx×3。所有者・グループ・サイズも同じ行から読む
  • 代表値:/etc/passwdは644・root:root。rwxr-x—=750、r-x——=500
  • chmod:記号(u/g/o/a+/-/=+r/w/x)と数値(3桁または4桁)。同じ結果を複数の書き方で表現できる
  • chownユーザユーザ:グループユーザ.グループ:グループ.グループの5形式
  • 再帰-R--recursivedir/*は直下のみなので孫を含めたい時は必ず-R
  • 特殊ビット:SUID(4000/u+s)=所有者権限で実行、SGID(2000/g+s)=グループ権限、Sticky(1000/+t)=他人のファイル削除禁止
  • SUID標準コマンドpasswdsumountcrontabの4つ
  • umask:022→644/755、027→640/750、077→600/700。新規ファイルに実行権は付かない

📚 次の副主題:基本的なファイル管理の実行(LinuC 1.02.2)


11. 模擬問題にチャレンジ(ランダム出題)

ここまでの内容を本試験に近い形で確認できます。問題数を選んで「出題スタート」を押すと、主題1.02.1の問題プールからランダムに出題されます。選択肢をクリック/タップすると、正誤と解説がその場で表示されます。

合格ライン目安:75%以上。もっと幅広く解きたい場合はLinuC 模擬問題ポータルから他の分野にも挑戦できます。


おすすめの教材


Linux教科書 LPICレベル1

Linux教科書 LPICレベル1 Version 5.0対応(あずき本)

LinuC/LPIC Level1の定番参考書。出題範囲全体を網羅。


Amazonで見る →

【ウズカレ式】1週間でLinuxの基本操作と管理・運用スキルが学べる講座

累計80,000人以上受講。LinuC Level1を1週間で網羅。パーミッション・所有者変更もカバー。


Udemyで講座を見る →


関連記事

📚 LinuC Level1 完全攻略マップへ戻る
全39サブ項目のシラバス準拠マップから他の記事を探せます

Dockerの基礎を動画で体系的に学びませんか?

実務で使う基礎だけを3時間に凝縮。環境構築から丁寧に解説しています。

Udemy Docker入門講座 クーポン割引で講座を見る →

コメント

タイトルとURLをコピーしました