本記事には広告(アフィリエイトリンク)が含まれます。

パーミッションと特殊権限 LinuC101 第8回

広告

新卒インフラエンジニア向けLinuC 101 試験対策シリーズの第8回です。前回は ls -l で「-rw-r–r–」のような表示を何度も目にしました。今回はその意味を本格的に扱います。

パーミッションは Linux のセキュリティの土台です。間違って chmod 777 を打つとサーバーが起動しなくなる、秘密鍵を 644 のままにすると SSH が拒否される、本番設定ファイルの所有権を間違えるとサービスが上がらない。本記事ではこれらを「なぜそうなるか」から理解します。

環境前提

  • ディストリビューション: AlmaLinux 9.6(Sage Margay)
  • ユーザー: developer(sudo NOPASSWD設定済み、所属グループは developer wheel
  • 関連VM: linuc-alma(10.0.10.132)
  • SELinux: Enforcing 維持(chmod とは独立した制約として動作)
  • 演習用ディレクトリ ~/linuc-perm/ を作成 → 末尾でクリーンアップ
広告

今ここマップ

LinuC 101 試験対策シリーズ(全12回)

  第1回 Linuxの起動・接続・停止
  第2回 ブートプロセスの仕組み
  第3回 systemdマスター講座
  第4回 プロセス管理とハードウェア基礎
  第5回 仮想マシンとコンテナの基礎
  第6回 パッケージ管理マスター
  第7回 ファイル操作の実践
▶ 第8回 パーミッション・所有者・特殊権限    ← いまここ
  第9回 コマンドライン・リダイレクト・パイプ
  第10回 テキスト処理(grep / sed / awk)
  第11回 vi/vim 入門
  第12回 ディスク・パーティション・ファイルシステム

この記事で身につくこと

  1. rwx のシンボリック表記とオクタル表記(例:rw-r--r--644)を相互変換できる
  2. chmod でシンボリック方式(u+x)とオクタル方式(755)の両方が使える
  3. chown / chgrp で所有者・グループを変更できる
  4. umask の意味(新規作成時のマスク)を説明し、現在値を確認・変更できる
  5. SUID / SGID / Sticky bit の役割と設定方法を説明できる

第1章:パーミッションは「誰が・何を・どこに」

Linux のパーミッションは 3つの軸で決まります。

  • 誰が:所有者(user, u)/ 所有グループ(group, g)/ それ以外(other, o
  • 何を:読む(read, r)/ 書く(write, w)/ 実行する(execute, x
  • どこに対して:ファイル / ディレクトリ

これがマトリクスとして組み合わさり、「所有者は読み書き、グループは読みのみ、その他も読みのみ」のような細粒度の制御が可能になります。

誰のために設計するか

  • マルチユーザー機の前提:UNIX/Linux は複数人が同じサーバーを使う設計から出発した。誰が何にアクセスできるかの境界線が必須
  • 自分の操作事故防止:書ける場所と書けない場所が明確だと、誤って本番設定を上書きしない
  • 監査の責任:「あのファイルは誰が読めて、誰が書けたか」を後から説明できる必要がある

第2章:rwx を読む — 9文字+1の正体

まず演習用ディレクトリを作って、実機で確認します。linuc-almaで実行:

$ rm -rf ~/linuc-perm
$ mkdir -p ~/linuc-perm/{normal,share,private}
$ touch ~/linuc-perm/normal/file{1..2}.txt
$ ls -l ~/linuc-perm/normal/

実行結果:

合計 0
-rw-r--r--. 1 developer developer 0  5月 10 08:03 file1.txt
-rw-r--r--. 1 developer developer 0  5月 10 08:03 file2.txt

左端の -rw-r--r-- がパーミッション部分。10文字(+ピリオド・プラスは SELinux ラベルや ACL の有無)の意味を分解します。

ls -lのパーミッション表記「-rwxr-xr-x」を構造分解した図。先頭1文字は種別(- ファイル / d ディレクトリ / l シンボリックリンク)、続く9文字は3文字ずつのrwx組で所有者(u 青)・グループ(g 緑)・その他(o 橙)に色分け。右上にオクタル変換(rwx=4+2+1=7、r-x=4+0+1=5、合計755)を併記。下部にファイル時とディレクトリ時のrwx意味の違いを補足
図 08-01. ls -l パーミッション表記の構造

2.1 ファイル vs ディレクトリで rwx の意味が違う

これが新人の最大の落とし穴。同じ r w x でも、対象がファイルかディレクトリかで意味が変わります

権限ファイルディレクトリ
r中身を読める(cat 可)ファイル一覧を取得できる(ls 可)
w中身を書き換えられる配下のファイルを作成・削除・改名できる
x実行できる(プログラムとして起動)そのディレクトリを通り抜けられるcd 可、配下の stat も)

特に注目すべきは ディレクトリへの x。これがないと中身に対して何もできません。読み込み権限(r)があっても、x がないとファイル名は出るがメタデータが取れず、cd もできません。

もう1点、ファイル削除はディレクトリの権限で決まる。中のファイルにいくら r-- をつけても、ディレクトリに w がなければ削除できないし、w があれば削除できてしまいます。

📖 試験Tipsボックス:rwx の意味(ファイル vs ディレクトリ)

主題:1.02.1(重要度:高)
出題パターン:「ディレクトリへの x の意味は?」「ディレクトリの r で何ができる?」「ファイルを削除するのに必要な権限は誰のどこ?」

暗記ポイント

  • ファイル:r=読 / w=書 / x=実行
  • ディレクトリ:r=ls可 / w=作成・削除・改名 / x=cd可・stat可
  • ファイル削除に必要なのはディレクトリの w(ファイル本体の権限ではない)
  • r なしの x は意外と使う:cd できるが ls はできない(透過的な通り道)

第3章:シンボリック表記とオクタル表記

rwxr-xr-x のような表記を シンボリック表記、755 のような3桁数字を オクタル(8進数)表記と呼びます。試験でも現場でも、両方を即座に変換できる必要があります。

3.1 オクタル変換の作法

3つのビットを 4 / 2 / 1 に対応させる。r=4 / w=2 / x=1。これを所有者・グループ・その他の3組それぞれで足し算して並べる。

所有者         グループ        その他
rwx             r-x             r-x
4+2+1=7         4+0+1=5         4+0+1=5
↓                ↓                ↓
              7   5   5     →  755

3.2 暗算用の頻出パターン表

オクタルシンボリック使いどころ
755rwxr-xr-x実行ファイル・ディレクトリの一般形
644rw-r--r--テキスト・設定ファイルの一般形
700rwx------プライベートディレクトリ(~/.ssh
600rw-------秘密鍵(~/.ssh/id_ed25519
777rwxrwxrwx原則禁忌。誰でも何でもできる
666rw-rw-rw-誰でも読み書き(一時ファイル等で稀に使う)
500r-x------所有者のみ実行可(変更不可)

755 / 644 / 700 / 600 は脊髄反射で出るレベルまで反復してください。

📖 試験Tipsボックス:オクタル変換

主題:1.02.1(重要度:高)
出題パターン:「rw-r--r-- をオクタルで」「755 をシンボリックで」「chmod 644 実行後の ls -l 表示は?」

暗記ポイント

  • r=4 / w=2 / x=1。3桁を u/g/o の順で並べる
  • 755 = rwxr-xr-x / 644 = rw-r--r-- / 600 = rw------- / 700 = rwx------
  • 0 = なし、5 = r-x、6 = rw-、7 = rwx
  • 3桁を見たら 8進法ではなく「u-g-o の3組」で読む癖をつける

第4章:chmod — パーミッション変更の作法

4.1 オクタル方式

linuc-almaで実行:

$ chmod 600 ~/linuc-perm/normal/file1.txt
$ ls -l ~/linuc-perm/normal/file1.txt

実行結果:

-rw-------. 1 developer developer 0  5月 10 08:03 /home/developer/linuc-perm/normal/file1.txt

オクタル方式は 絶対値の指定。一発で目的の状態にできる反面、現状のビット構成は完全に上書きされます。

4.2 シンボリック方式

linuc-almaで実行:

$ chmod u+x,g+r ~/linuc-perm/normal/file1.txt
$ ls -l ~/linuc-perm/normal/file1.txt

実行結果:

-rwxr-----. 1 developer developer 0  5月 10 08:03 /home/developer/linuc-perm/normal/file1.txt

注目:600rw-------)の状態に u+x,g+r を適用 → rwxr-----740)。既存の rw を残しつつ、所有者に x、グループに r を追加しています。

linuc-almaで実行:

$ stat ~/linuc-perm/normal/file1.txt | grep '^Access:'

実行結果:

Access: (0740/-rwxr-----)  Uid: ( 1000/developer)   Gid: ( 1000/developer)

stat はオクタルとシンボリックの両方を併記してくれるので、対応関係を確認するのに便利です。

4.3 シンボリック方式の文法

記法意味
u / g / o / a誰に対して(user / group / other / all)chmod a+r file 全員に読み
+追加chmod u+x 所有者に実行追加
-削除chmod g-w グループから書きを削除
=絶対指定(既存を上書き)chmod o=r その他は読みのみ
,複数指定の連結chmod u+x,g-w,o=r
X(大文字)ディレクトリと既に実行可能なファイルにのみ xchmod -R a+rX dir

4.4 オクタル vs シンボリックの使い分け

  • オクタル:「何が何でもこの状態にしたい」(プロビジョニング・初期化スクリプト)
  • シンボリック:「現状を残しつつ、特定の権限だけ追加・削除したい」(運用中のファイル)

4.5 chmod 777 は最後の手段、というより禁忌

「動かないから 777 にしてみたら動いた」は技術的なギブアップ宣言です。本来は「どこに read が足りない/write が足りない/x が足りない」を切り分けるべき。第10章のヒヤリハットで、本番で chmod -R 777 / を打ってサーバーがログイン不能になる事例を扱います。

第5章:chown / chgrp — 所有者の変更

chown は所有者(user)と所有グループの変更、chgrp はグループのみの変更。所有者の変更は root 権限が必要です(自分のものを他人にあげると、リソースクオータの抜け穴になるため)。

コマンド意味
sudo chown user file所有者のみ変更
sudo chown user:group file所有者+グループ同時変更
sudo chown :group fileグループのみ変更(chgrp と同等)
sudo chgrp group fileグループのみ変更
sudo chown -R user:group dir/再帰的に変更

linuc-almaで実行:

$ sudo chgrp users ~/linuc-perm/share
$ ls -ld ~/linuc-perm/share

実行結果:

drwxr-xr-x. 2 developer users 6  5月 10 08:03 /home/developer/linuc-perm/share

所有者は developer のまま、グループだけが users に変わりました。

第6章:umask — 新規作成時のマスク

6.1 umask の働き

新しくファイル・ディレクトリを作るとき、デフォルトのパーミッションが決まります。これを制御するのが umask「既定値からビットを引く」動作をします。

  • ファイル既定値:666rw-rw-rw-
  • ディレクトリ既定値:777rwxrwxrwx
  • 実際のパーミッション = 既定値 – umask

linuc-almaで実行:

$ umask
$ umask -S

実行結果:

0022
u=rwx,g=rx,o=rx

既定の 0022 は「グループとその他から w(=2)を引く」。よって:

  • ファイル:666 - 022 = 644-rw-r--r--
  • ディレクトリ:777 - 022 = 755drwxr-xr-x

第2章で確認した既定パーミッションがちょうどこの値です。

umaskの引き算式を視覚化した図。上段(ファイル):既定666 - umask 022 = 実権限644(rw-r--r--)。下段(ディレクトリ):既定777 - umask 022 = 実権限755(rwxr-xr-x)。下部に注釈「umaskは新規作成時のみに効く」「umask 077 = 自分以外完全遮断(秘密鍵生成時に推奨)」
図 08-03. umask = 022 のときの新規ファイル/ディレクトリの権限

6.2 umask を変えて確認

サブシェル (...) 内で umask を上書きすると、その範囲だけで一時的に有効になります。linuc-almaで実行:

$ (umask 077 ; touch ~/linuc-perm/private/secret.txt ; mkdir ~/linuc-perm/private/dir077)
$ ls -l ~/linuc-perm/private/secret.txt
$ ls -ld ~/linuc-perm/private/dir077

実行結果:

-rw-------. 1 developer developer 0  5月 10 08:03 /home/developer/linuc-perm/private/secret.txt
drwx------. 2 developer developer 6  5月 10 08:03 /home/developer/linuc-perm/private/dir077

umask 077 = グループとその他から rwx(=7)を引く。よって:

  • ファイル:666 - 077 = 600-rw-------
  • ディレクトリ:777 - 077 = 700drwx------

6.3 umask の使いどころ

  • 022(既定):グループ・その他は読みのみ。一般用途に向く
  • 027:グループは読みのみ、その他は何もできない。半閉鎖環境
  • 077:自分以外は何もできない。秘密鍵生成時など

恒久的に変更したい場合は ~/.bashrc/etc/profileumask 027 等を書く。umask は新規作成時のみに効く。既存ファイルの権限は変わりません。

第7章:特殊権限 — SUID / SGID / Sticky

9ビットの基本権限の上に、3つの特殊ビットが乗ります。これがシステムの根幹で動いている、というのが本章のメッセージです。

特殊権限SUID(オクタル4桁、-rwsr-xr-x、実行時所有者権限、例 /usr/bin/passwd)/SGID(2、drwxr-sr-x、ディレクトリではグループ継承、例 共有ディレクトリ)/Sticky(1、drwxrwxrwt、所有者とroot のみ削除可、例 /tmp)の3列比較表。s/tの特殊文字を赤強調
図 08-02. 特殊権限の比較 ── SUID / SGID / Sticky

7.1 SUID(Set User ID)

実行ファイルに付くと 「実行時にファイル所有者の権限で動く」。最も典型的な例が passwd

linuc-almaで実行:

$ ls -l /usr/bin/passwd

実行結果:

-rwsr-xr-x. 1 root root 32656  4月 14  2022 /usr/bin/passwd

所有者の x 位置に s があります。これが SUID。所有者は root なので、passwd を実行している間は 一般ユーザーでも一時的に root 権限になります。これが必要な理由は、パスワードハッシュが格納される /etc/shadow が root しか書けないファイルだから。一般ユーザーが自分のパスワードを変更するために、SUID で root に「昇格」する必要があるのです。

  • 表示:所有者 x 位置の s(小文字=x 有り)/ S(大文字=x 無し)
  • 設定:chmod u+s file または オクタルで先頭桁に 4(例:4755
  • 対象:実行ファイルのみ意味がある。スクリプトには Linux 上では効かない(#! 経由の場合)

7.2 SGID(Set Group ID)

SGID はファイルとディレクトリで意味が異なります。

  • 実行ファイルに付いた場合:実行時にファイルのグループ権限で動く(SUID のグループ版)
  • ディレクトリに付いた場合:そのディレクトリ内に作られるファイルが、ディレクトリのグループを継承する

共有ディレクトリ運用で重要なのは後者。実機で確かめます。linuc-almaで実行:

$ sudo chmod g+s ~/linuc-perm/share
$ ls -ld ~/linuc-perm/share

実行結果:

drwxr-sr-x. 2 developer users 6  5月 10 08:03 /home/developer/linuc-perm/share

グループ x 位置に s が入りました。stat で詳細を見ると:

$ stat ~/linuc-perm/share | grep '^Access:'

実行結果:

Access: (2755/drwxr-sr-x)  Uid: ( 1000/developer)   Gid: (  100/   users)

オクタルが 2755。先頭の 2 が SGID ビットです。

このディレクトリの中にファイルを作って、グループが継承されるか確認します。linuc-almaで実行:

$ touch ~/linuc-perm/share/inherited.txt
$ ls -l ~/linuc-perm/share/inherited.txt

実行結果:

-rw-r--r--. 1 developer users 0  5月 10 08:03 /home/developer/linuc-perm/share/inherited.txt

注目:所有者は developer なのにグループが users。developer ユーザーは users グループに属していないのに、SGID ディレクトリ内に作ったため自動でグループが継承されました。これがチーム共有ディレクトリ運用の主役機能です。

コラム:「自分が所属しないグループの SGID は付けられない」

本演習では sudo chmod g+s としています。sudo 無しで chmod g+s を試すと、コマンドは成功(exit 0)するのにビットが立たない、という不思議な挙動になります。

原因は Linux カーネルのセキュリティ機構です。ファイルの所有者であっても、対象グループのメンバーでなければ SGID ビットを立てることはできません。これは「他人のグループになりすまして実行する権限」を勝手に付けられないようにするための制限。users グループに属していない developer ユーザーが users グループの SGID を立てるには、root になる必要があります。

7.3 Sticky bit

Sticky bit は ディレクトリ専用。「そのディレクトリ内のファイルは、所有者と root しか削除・rename できない」という制限を付けます。

第7回で予告した /tmp の正体を見てみます。linuc-almaで実行:

$ ls -ld /tmp

実行結果:

drwxrwxrwt. 10 root root 4096  5月 10 05:44 /tmp

その他の x 位置に t。これが Sticky bit。/tmprwxrwxrwx(誰でも書ける)ですが、Sticky bit のおかげで他人のファイルを消せません。これがなければ、誰かが他人の一時ファイルを消してアプリが落ちる、という事故が常態化します。

  • 表示:その他 x 位置の t(小文字=x 有り)/ T(大文字=x 無し)
  • 設定:chmod +t dir または オクタルで先頭桁に 1(例:1777
  • 対象:ディレクトリ専用(ファイルへの効果はモダンなカーネルでは無視される)

7.4 オクタル4桁形式

特殊権限を含めると、オクタルは4桁になります。先頭桁が特殊権限。

先頭桁意味
4SUID4755 = SUID + rwxr-xr-x(passwd はこれ)
2SGID2755 = SGID + rwxr-xr-x(共有ディレクトリ)
1Sticky1777 = Sticky + rwxrwxrwx(/tmp はこれ)
0特殊権限なし0644 = 通常ファイル(先頭の0は省略可)

📖 試験Tipsボックス:特殊権限 SUID / SGID / Sticky

主題:1.02.1(重要度:高)
出題パターン:「/usr/bin/passwd のパーミッション rwsr-xr-x の意味は?」「/tmpt は何?」「SGID ディレクトリの効果は?」

暗記ポイント

  • SUID = 4 / SGID = 2 / Sticky = 1(オクタル先頭桁)
  • 表示:所有者 x 位置 s(SUID)/ グループ x 位置 s(SGID)/ その他 x 位置 t(Sticky)
  • SUID:実行時にファイル所有者の権限で動く(passwd が代表)
  • SGID 実行ファイル:実行時にファイルのグループ権限で動く
  • SGID ディレクトリ:配下に作るファイルがディレクトリのグループを継承
  • Sticky:ディレクトリ専用、所有者と root だけが削除可能(/tmp が代表)
  • 大文字 S / T は「対応する x 無し」を表す

第8章:実機で SUID/SGID/Sticky を見つける

find -perm で特殊権限の付いたファイルを横断検索できます。-4000 は SUID、-2000 は SGID、-1000 は Sticky。- 付きは「少なくともそのビットが立っている」の意味です。

linuc-almaで実行:

$ find /usr/bin -perm -4000 -type f 2>/dev/null | head -8

実行結果:

/usr/bin/mount
/usr/bin/chage
/usr/bin/gpasswd
/usr/bin/newgrp
/usr/bin/umount
/usr/bin/su
/usr/bin/crontab
/usr/bin/fusermount3

su passwd chage gpasswd newgrp mount umount crontab あたりが SUID 持ち。「ユーザーがやるけど中身は root 権限」が必要なコマンド群です。

linuc-almaで実行:

$ find / -maxdepth 2 -perm -1000 -type d 2>/dev/null | head -5

実行結果:

/dev/mqueue
/dev/shm
/tmp
/tmp/.X11-unix
/tmp/.ICE-unix

Sticky 持ちは /tmp のほか /dev/mqueue(POSIX メッセージキュー)、/dev/shm(共有メモリ)。「複数ユーザーが書き込むけど、お互いのものを消されたくない」場所には Sticky が付いている、というパターンが見えます。

📖 試験Tipsボックス:実機での確認

主題:1.02.1 + 1.02.4(連動)
出題パターン:「SUID 持ちファイルを find で一覧するには?」「/tmp のパーミッション表記は?」

暗記ポイント

  • find <path> -perm -4000 -type f SUID 一覧
  • find <path> -perm -2000 -type f SGID 一覧(実行ファイル)
  • find <path> -perm -1000 -type d Sticky 一覧(ディレクトリ)
  • /tmp = drwxrwxrwt1777)/ /usr/bin/passwd = -rwsr-xr-x4755

第9章:現場での使いどころ

  • SSH 秘密鍵の保護chmod 600 ~/.ssh/id_ed25519 は必須。644 等で開かれていると ssh クライアントが「too open」と拒否する
  • Webサーバードキュメントルートchown -R nginx:nginx /var/www/html、ディレクトリは 755 ファイルは 644find ... -type f -exec chmod 644 {} + + find ... -type d -exec chmod 755 {} + の組み合わせで一括
  • チーム共有ディレクトリchown :devteam /shared + chmod 2775 /shared(SGID 付き)。チームメンバーが作ったファイルが自動的に devteam グループになる
  • ログファイル/var/log/messagesroot:root 600。一般ユーザーから見えてはいけない情報を含む
  • セキュアな umask~/.bashrcumask 027 を入れる運用。新規作成ファイルがその他から見えなくなる
  • SUID 持ちの定期監査find / -perm -4000 -type f を週次で実行し、意図しない SUID が増えていないかチェック(攻撃者の足跡として SUID バックドアは典型)

第10章:ヒヤリハット — chmod -R 777 / の悲劇

⚠️ 「アプリが動かないので 777 にしてみた」

新人H君は、Webアプリのアップロードディレクトリで権限エラーが出ているのを見て「chmod -R 777 で全部解放すれば動くはず」と判断。sudo chmod -R 777 / と打ち、ルートから順に再帰的に 777 を適用していきました(--preserve-root はディレクトリ削除には効くが chmod には効かない)。

結果、SSH デーモンが秘密鍵の権限を「too open」と判定して拒否sudo/etc/sudoers777 になったことで「invalid permissions」で機能停止。コンソールから root ログインも、/etc/passwd の権限変化で挙動不審。復旧はバックアップからの全システム復元か、レスキューモードでの大量権限再設定。本番サービスは半日停止しました。

教訓

  • chmod 777 は「最終手段」というより禁忌。動かない原因を切り分けるのが先
  • 権限エラーが出たら:プロセス所有者を ps -ef で確認 → 必要な権限だけを最小に追加
  • SSH 秘密鍵・sudoerspasswdshadow の権限は絶対に緩めない(システムが自分でチェックしている)
  • 再帰オプション -R は影響範囲が見えにくい。本番で -R を使う前に find ... -print で対象を確認

類似事例/etc/shadow644 にしてしまい、認証情報のハッシュが全ユーザーから読める状態に。これは情報漏洩インシデントとして報告対象。システム既定のパーミッションを変更したくなったら、その前に「なぜそのパーミッションになっているか」を理解するのが鉄則です。

やってみよう

linuc-alma にログインしている前提で、演習1〜4を順に実行してください。

演習1:パーミッションを読む

  1. rm -rf ~/linuc-perm
  2. mkdir -p ~/linuc-perm/{normal,share,private}
  3. touch ~/linuc-perm/normal/file{1..2}.txt
  4. ls -ld ~/linuc-perm ~/linuc-perm/normal で 755 を確認
  5. ls -l ~/linuc-perm/normal/ で 644 を確認
  6. stat ~/linuc-perm/normal/file1.txtAccess: (0644/-rw-r--r--) を確認

演習2:chmod 両方式

  1. chmod 600 ~/linuc-perm/normal/file1.txt でオクタル指定
  2. ls -l ~/linuc-perm/normal/file1.txt-rw-------
  3. chmod u+x,g+r ~/linuc-perm/normal/file1.txt でシンボリック追加
  4. ls -l ~/linuc-perm/normal/file1.txt-rwxr-----
  5. statAccess: (0740/-rwxr-----) を確認

演習3:umask の効果

  1. umask で現在値(既定 0022
  2. (umask 077 ; touch ~/linuc-perm/private/secret.txt ; mkdir ~/linuc-perm/private/dir077)
  3. ls -l ~/linuc-perm/private/secret.txt-rw-------
  4. ls -ld ~/linuc-perm/private/dir077drwx------
  5. サブシェルを抜けると元の umask に戻ることを umask で確認

演習4:特殊権限を観察

  1. ls -l /usr/bin/passwd-rwsr-xr-x)— SUID
  2. ls -ld /tmpdrwxrwxrwt)— Sticky
  3. find /usr/bin -perm -4000 -type f | head -8 で SUID 持ち一覧
  4. sudo chgrp users ~/linuc-perm/share でグループ変更
  5. sudo chmod g+s ~/linuc-perm/share で SGID 付与(自分が所属しないグループのため sudo 必須)
  6. ls -ld ~/linuc-perm/sharedrwxr-sr-x
  7. touch ~/linuc-perm/share/inherited.txt
  8. ls -l ~/linuc-perm/share/inherited.txt でグループが users に継承されていることを確認
  9. クリーンアップrm -rf ~/linuc-perm

分からないオプションは man chmodman chownman umaskbash 組み込みの場合は help umask)で調べる習慣を身につけてください。

理解度チェック

○か×で答えてください。回答と解説は次回冒頭で振り返ります。

  1. chmod 644 filechmod u=rw,g=r,o=r file は同じ結果になる。
  2. ディレクトリの x 権限は、そのディレクトリへの cd やその配下のファイルに対する stat に必要である。
  3. umask の値は既存ファイルの権限にも影響する。
  4. /usr/bin/passwd のパーミッション -rwsr-xr-xs は SGID を表す。
  5. /tmp の Sticky bit があるおかげで、他ユーザーが作った一時ファイルを消すことができない。

解答

  • 1.  オクタル 644 = rw-r--r-- = u=rw,g=r,o=r。同じ結果
  • 2.  ディレクトリの x は「通り抜け」権限。これがないと配下にアクセスできない
  • 3. × umask新規作成時のみに効く。既存ファイルの権限は変えない
  • 4. × 所有者 x 位置の sSUID。SGID はグループ x 位置の s
  • 5.  Sticky bit があるディレクトリでは、ファイルの所有者と root 以外は削除・改名できない

次回予告

第9回は「コマンドライン・リダイレクト・パイプの基礎」です。> >> < 2> 2>&1 | など記号の意味、標準入力/標準出力/標準エラー出力の概念、teexargs の使い方を扱います。本記事までで「ファイルを置き、権限を整える」ところまで来ました。次は「コマンドの出力をどうつなぐか」に進みます。

LinuC 101 試験対策シリーズ 全12回

広告
Linux
スポンサーリンク