Linuxのパーミッションとchmodの基本|rwx・755・644の意味を初心者向けに解説

  • URLをコピーしました!

前の記事では、 Linuxのディレクトリ構造 について学習しました。

Linuxでは、 /etcに設定ファイル、 /var/logにログ、 /homeにユーザーのファイルなど、 役割に応じてファイルが配置されています。

しかし、 ファイルが存在する場所が分かっても、誰でも自由に変更できるとは限りません。

設定ファイルは読めるのに編集できない。
Scriptを作ったのに実行できない。
他のユーザーのファイルを開けない。

これは「パーミッション」が関係している可能性があります。
🐧 LINUX BEGINNER

この記事はLinux初級講座の最終レッスンです。 ここまで学習した内容をつなげながら、 Linuxの権限管理の基本を理解しましょう。

Linux初級講座を見る →
LESSON GOAL この記事のゴール

-rw-r--r--などのパーミッション表示を読み、 owner・group・othersとr・w・xの意味を理解し、 chmodで基本的な権限変更ができる 状態を目指します。

目次

Linuxのパーミッションとは?

パーミッションとは、 ファイルやディレクトリに対して「誰が・何をできるか」を決める権限 です。

たとえば、ある設定ファイルに対して、

USER A 読む OK
USER B 書き換える NG
ROOT 読む・書く OK

のように、 ユーザーごとに操作可能な範囲を制御できます。

なぜパーミッションが必要なのか

Linuxは複数ユーザーで利用されることを前提として設計されています。

もしすべてのユーザーが、 すべてのファイルを自由に変更できてしまうと、 重要な設定やデータを誤って変更する可能性があります。

01 設定を守る

重要な設定ファイルを勝手に変更されないようにする。

02 データを守る

他ユーザーのファイルへのアクセスを制限する。

03 実行を制御する

実行してよいファイルだけ実行可能にする。

パーミッションはls -lで確認できる

ファイルのパーミッションは、 ls -l で確認できます。

Linux Terminal
$ ls -l
-rw-r--r-- 1 user user 128 Aug 17 10:00 memo.txt

左端に表示されている、

-rw-r--r--

の部分がパーミッションです。

-rw-r–r– を分解してみよう

TYPE ファイル種別
OWNER rw- 所有者
GROUP r– グループ
OTHERS r– その他

最初の1文字を除くと、 パーミッションは3文字ずつに分かれています。

OWNER 誰が所有している? GROUP 同じグループのユーザー OTHERS それ以外のユーザー

先頭の1文字はファイルの種類

パーミッション表示の最初の1文字は、 ファイルやディレクトリの種類を表します。

- 通常ファイル
d ディレクトリ
l シンボリックリンク

たとえば、

drwxr-xr-x

なら、 先頭が d なのでディレクトリです。

r・w・xの意味を理解しよう

Linuxのパーミッションでは、 r・w・x という3つの文字を使います。

r Read 読み取り
w Write 書き込み
x Execute 実行

ファイルに対するr・w・x

権限 ファイルでの意味
r ファイルの内容を読み取れる
w ファイルの内容を書き換えられる
x ファイルをプログラム・スクリプトとして実行できる

rw-なら何ができる?

たとえば所有者の権限が、

rw-

なら、

r 読み取り できる
w 書き込み できる
x 実行 できない

という意味です。

owner・group・othersとは?

USER / OWNER 所有者

そのファイルを所有しているユーザー。

GROUP グループ

ファイルに設定されているグループに所属するユーザー。

OTHERS その他

所有者でも対象グループでもないユーザー。

たとえば、

$ ls -l memo.txt
-rw-r--r-- 1 user developers 128 Aug 17 10:00 memo.txt

なら、

OWNER user
GROUP developers
PERMISSION rw-r–r–

-rw-r–r– を実際に読んでみよう

OWNER rw- 読める・書ける
GROUP r-- 読めるだけ
OTHERS r-- 読めるだけ
「3文字 × 3組」に分ければ読みやすい

長い文字列として覚えるのではなく、 rw- / r-- / r-- の3グループに分けて考えましょう。

ディレクトリではr・w・xの意味が少し違う

ここはLinux初心者がつまずきやすい重要ポイントです。

ディレクトリでもr・w・xを使いますが、 ファイルとは意味が少し異なります。

r 一覧を確認 Directory内の名前を確認できる
w 作成・削除 Directory内でFile等を作成・削除できる
x Directoryへアクセス cdしたり内部のFileへアクセスできる
IMPORTANT Directoryのxは「実行」ではなく「アクセス」のイメージ

ファイルのxは実行権限ですが、 DirectoryのxはそのDirectory内へアクセスするために重要な権限です。

chmodコマンド:パーミッションを変更する

パーミッションを変更するときに利用するのが、 chmod です。

chmodは change mode に由来します。

chmod 権限 ファイル名

chmodにはいくつか指定方法がありますが、 初級ではまず 数値指定 を理解すると分かりやすいです。

r・w・xは数字でも表せる

chmodでは、 各権限を次の数字として扱います。

r 4 Read
w 2 Write
x 1 Execute

必要な権限の数字を足し算します。

rwx 4 + 2 + 1 7
rw- 4 + 2 6
r-x 4 + 1 5
r– 4 4

chmod 755とは?

たとえば、

chmod 755 script.sh

とすると、

OWNER 7 rwx
GROUP 5 r-x
OTHERS 5 r-x

となります。

$ chmod 755 script.sh

$ ls -l script.sh
-rwxr-xr-x 1 user user 350 Aug 17 10:00 script.sh

chmod 644とは?

通常のテキストファイルなどでよく見るのが、 644 です。

chmod 644 memo.txt
OWNER 6 rw-
GROUP 4 r--
OTHERS 4 r--
$ chmod 644 memo.txt

$ ls -l memo.txt
-rw-r--r-- 1 user user 128 Aug 17 10:00 memo.txt

まず覚えたい代表的なパーミッション

数値 表示 イメージ
644 rw-r--r-- 一般的なFileなど
600 rw------- 所有者だけ読み書き
755 rwxr-xr-x 実行File・Directoryなど
700 rwx------ 所有者だけフル権限
数字を丸暗記するより、4・2・1から計算できることが重要

644や755は頻繁に登場しますが、 r=4、w=2、x=1 を理解していれば他のパーミッションも読み解けます。

chmodは文字でも指定できる

chmodでは、 数値だけでなく文字を使った指定もできます。

u user owner
g group group
o others others
a all すべて

たとえば、 所有者に実行権限を追加する場合、

chmod u+x script.sh

と指定できます。

$ ls -l script.sh
-rw-r--r-- 1 user user 350 Aug 17 10:00 script.sh

$ chmod u+x script.sh

$ ls -l script.sh
-rwxr--r-- 1 user user 350 Aug 17 10:00 script.sh

+ と – で権限を追加・削除できる

+ 権限を追加 chmod u+x file
- 権限を削除 chmod g-w file

たとえば、

chmod o-r memo.txt

なら、 othersから読み取り権限を削除します。

実行権限がないScriptはそのまま実行できない

たとえば、 次のScriptがあるとします。

$ ls -l backup.sh
-rw-r--r-- 1 user user 200 Aug 17 10:00 backup.sh

所有者にも x がありません。

その状態で実行すると、

$ ./backup.sh
bash: ./backup.sh: Permission denied

となる場合があります。

そこで、

chmod u+x backup.sh

として実行権限を追加します。

$ chmod u+x backup.sh

$ ls -l backup.sh
-rwxr--r-- 1 user user 200 Aug 17 10:00 backup.sh

chmod 777を安易に使わない

Linuxについて調べていると、 問題が起きたときに chmod 777 を設定する例を見かけることがあります。

chmod 777 file

777は、

OWNER 7 rwx
GROUP 7 rwx
OTHERS 7 rwx

つまり、 すべてのユーザーへ読み取り・書き込み・実行を許可 します。

SECURITY 「動かないから777」は避ける

必要以上の権限を与えるとSecurity上の問題につながります。 まず「誰に、どの権限が必要なのか」を確認しましょう。

Permission deniedが出たら何を確認する?

01 ls -l

対象File・Directoryのパーミッションを確認。

02 誰で操作している?

現在のUserとowner/groupを確認。

03 必要な権限は?

Read・Write・Executeのどれが必要か判断。

$ ls -l script.sh
-rw-r--r-- 1 user user 350 Aug 17 10:00 script.sh

「実行できない」という問題なら、 まず xがあるかどうか を見る、というように原因を絞り込みます。

ここで実際に試してみよう:chmodパーミッションシミュレーター

疑似Terminalで ls -lchmod を実行し、 パーミッションがどう変化するか確認してみましょう。

INTERACTIVE LAB

Linux Permission Simulator

CHMOD
CURRENT PERMISSION -rw-r–r– memo.txt
user@linux
Linux permission practice
ls -l / chmod 644 / chmod 755 / chmod u+x を試してみましょう。
user@linux:~$
TRY COMMAND

まずls -lで現在の権限を確認しましょう

chmodを実行すると、CURRENT PERMISSIONの表示も変化します。

理解度チェック:755を読み解いてみよう

chmod 755 script.sh

この場合、 groupの権限 はどれでしょうか?

回答を選択してください

755の2桁目がgroupです。5を4・2・1に分解して考えてみましょう。

ここまででLinux初級の基本操作を学びました

今回の記事で、 Linux初級講座の基本レッスンは一区切りです。

ここまでに学習した内容を振り返ると、

01 Linuxとは?

OSとLinuxの全体像

02 Distribution

Ubuntu・RHEL系など

03 Linux Command

Command・Option・Argument

04 pwd / ls / cd

Directoryを確認・移動

05 cp / mv / rm

File操作

06 mkdir / rmdir

Directory作成・削除

07 cat / less / head / tail

File内容の確認

08 grep / find

検索

09 Directory構造

/etc・/var・/homeなど

10 Permission

rwx・chmod

Linuxの「基本操作が分かる」状態まで到達

ここから中級では、 User・Group管理、Process、Service、Log、Network、 Disk、Package管理など、 Linux Serverを管理するための知識 へ進んでいきます。

確認問題:Linuxのパーミッションを理解できたか確認しよう

QUESTION 01

ファイルに対する「w」の意味はどれですか?

正解:B

wはWriteを意味し、 Fileの内容を書き換える権限です。

QUESTION 02

chmod 644 file.txt のowner権限はどれですか?

正解:C

6は4(r)+2(w)なのでrw-です。 644はrw-r–r–を意味します。

QUESTION 03

chmod 777を安易に設定すべきでない主な理由はどれですか?

正解:A

777はowner・group・othersすべてへrwxを与えるため、 必要以上の権限となる可能性があります。

YOUR SCORE 0 / 3

3問に挑戦してみましょう。

まとめ

01

Permissionは 「誰が・何をできるか」を制御する仕組み

02

r=Read、 w=Write、 x=Execute

03

Permissionは owner・group・others の3つに分かれる

04

chmodでは r=4、w=2、x=1 として数値指定できる

05

chmod 777のような 必要以上の権限付与は避ける

BEGINNER COMPLETE

🎉 Linux初級講座はここまでです

Linuxの基本概念、Command、File・Directory操作、検索、 Directory構造、Permissionまで学習しました。

次はLinux Serverをより実践的に管理するための Linux中級講座 へ進みましょう。

01 User・Group管理
02 Process管理
03 Service管理
04 Log・障害調査
05 Network
06 Disk・Package管理
Linux中級講座へ進む
LINUX BEGINNER

Linux初級講座の一覧へ戻る

初級内容を復習したい場合は、 Linux初級講座の一覧ページへ戻れます。

← Linux初級講座へ戻る
目次