順番に読み進めながら学べます

パーミッション — 読み方と chmod

ls -lのrwx表記と8進数の読み方、chmodの記号と数字での書き換え、chownの構文までを、ブラウザ端末で実際に操作しながら学べます。

パーミッションの読み方 — ls -l と 8 進数

パーミッションは、ファイルやディレクトリに対して誰が何をできるかを表す設定です。

ls -lを実行すると、各行の先頭に-rwxr-xr-xのような 10 文字が並びます。

先頭 1 文字は種類(-がファイル、dがディレクトリ)、続く 9 文字を 3 文字ずつ区切って読みます。

9 文字は左から所有者・グループ・その他の 3 組です。

各組はr(読み取り)・w(書き込み)・x(実行)の順で、許可されていれば文字、なければ-になります。

r=4w=2x=1は 2 進 3 桁(各ビット)に対応し、4・2・1 の桁を足した数になります。

1 組を足した数字で表すと、rwxは 7、r-xは 5、r--は 4 となり、3 組を並べて755644という 8 進数表記になります。

記号意味r4+w2+x1数字
---何もできない00
--x実行のみ11
r--読み取りのみ44
r-x読み取り+実行4+15
rw-読み書き4+26
rwx全権4+2+17
8 進rwx 表記用途
644rw-r--r--通常ファイル
755rwxr-xr-xスクリプト・ディレクトリ
700rwx------秘密鍵・個人ディレクトリ
600rw-------設定ファイル
rwx と 8 進数の対応
所有者 (owner)グループ (group)その他 (other)rwx = r4+w2+x1r-x = r4+x1r-x = r4+x1= 7= 5= 5755
rwxr-xr-xは所有者 7・グループ 5・その他 5 で755と読みます。

この環境の権限と本番サーバーでの動き

このブラウザ環境は root 単独で動くため、chmodでビットを変えても root はアクセス制限を無視し、Permission deniedは再現しません。

本講座ではビットの読み方とchmod / chownの構文を学びます。

ls -lの表示が変わることは実際に確認できます。

複数ユーザの本番サーバーでは、この権限設定がアクセス制御として機能します。

touch report.txt        # 素材を作成
ls -l report.txt        # 先頭の rwx 表記を読む
ls -l                   # ディレクトリの一覧で d も確認

touch report.txtで素材ファイルを作成してください。

ls -l report.txtを実行し、先頭に並ぶrwxの表記を読み取ってください。

③ 読み取った 9 文字を 3 文字ずつ区切り、r=4w=2x=1を足して 8 進数 3 桁に変換してみてください。

ls -lで現在のディレクトリ全体を一覧し、ファイルとディレクトリの先頭文字の違いを確認してください。(正しく実行できれば解説が表示されます)

Linux console
0 / 3 実行済み
Loading Linux Terminal...

権限を変える — chmod

chmodはパーミッションを変更します。

書き方は 2 通りあり、chmod +x fileのように記号で「実行を足す」と指定する記号モードと、chmod 644 fileのように 3 桁の 8 進数で所有者・グループ・その他をまとめて指定する数字モードがあります。

モード書き方意味
記号chmod [ugoa][+-=][rwx]chmod +x file実行を足す
数字chmod NNN filechmod 644 file3 組を一括指定
chmod の記号モードと数字モード
chmod +x run.shx(実行)を全員に足すchmod 644 data.txtrw-r--r-- に設定(読み書き/読み/読み)chmod 700 secret.txtrwx------ に設定(所有者だけ全権)
記号+xは実行を足し、数字644 / 700は 3 組をまとめて指定します。
touch script.sh             # 素材を作成
chmod +x script.sh          # 実行を足す
ls -l script.sh             # x が付いたか確認

touch script.shで素材ファイルを作成してください。

chmod +x script.shで実行の権限を足し、ls -l script.shで先頭の表記にxが増えたことを確認してください。

③ 続けてchmod 644 script.shを実行し、ls -l script.shで表記がrw-r--r--に変わったことを確認してください。

Linux console
0 / 4 実行済み
Loading Linux Terminal...

所有者だけに絞る — chmod 700

chmod 700は所有者にrwx、グループとその他には何も与えない設定です。

秘密鍵や個人用のディレクトリなど、所有者以外に触らせたくないものに使う典型的な指定です。

表示はrwx------になります。

touch secret.txtで素材ファイルを作成してください。

chmod 700 secret.txtを実行してください。

ls -l secret.txtで表記がrwx------に変わり、グループとその他の欄がすべて-になっていることを確認してください。

Linux console
0 / 3 実行済み
Loading Linux Terminal...

所有者を変える — chown

chownは、ファイルやディレクトリの所有者を変更するコマンドです。

構文はchown ユーザ名 fileで、グループも一緒に変えるならchown ユーザ名:グループ名 fileと書きます。

ここでの:はユーザ名とグループ名の区切りで、:の前が所有者、後ろがグループを表します。

書き方意味
chown ユーザ名 file所有者を変更chown alice file.txt
chown ユーザ名:グループ名 file所有者とグループを変更chown alice:dev file.txt

所有者の変更は本来 root の操作で、複数ユーザのサーバーでファイルの持ち主を引き継ぐときに使います。

この環境では実行する場面が無いため、次の例で構文の形だけを読んで覚えます。

chown alice file.txt        # 所有者を alice に変更
chown alice:dev file.txt    # 所有者 alice・グループ dev に変更
QUIZ

理解度チェック

まずは1問ずつ答えてみましょう。

Q1ls -lの先頭に出る-rwxr-xr-xを 8 進数で表すとどれですか?

Q2chmod +x script.shは何をしますか?

Q3chmod 700 secret.txtを実行したあとの表記はどれですか?