このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Linux】アクセス権の変更:chmodコマンド

chmodコマンドの概要

 「chmod」コマンドは、ファイルやディレクトリのアクセス権を変更するために使用されます。アクセス権は、所有者、グループ、およびその他のユーザーに対して、読み取り(read)、書き込み(write)、実行(execute)の各権限を設定できます。「chmod」コマンドは、これらの権限を数値モードまたは記号モードで指定して変更することができます。

アクセス権の指定方法

モード説明
数値モードアクセス権を8進数で指定する755 → 所有者: rwx (7), グループ: r-x (5), その他のユーザー: r-x (5)
記号モードアクセス権を記号で指定するu=rwx,g=rx,o=rx → 所有者: rwx, グループ: rx, その他のユーザー: rx
アクセス権の指定方法

数値モードの詳細

数値読み取り (r)書き込み (w)実行 (x)説明
7読み取り、書き込み、実行
6読み取り、書き込み
5読み取り、実行
4読み取り
3書き込み、実行
2書き込み
1実行
0なし
数値モードの詳細

記号モードの詳細

記号説明
u所有者(ユーザー)u=rwx
gグループg=rx
oその他のユーザーo=r
aすべてのユーザー(所有者、グループ、その他のユーザー)a=rw
+権限を追加u+x
-権限を削除g-w
=権限を設定o=r
記号モードの詳細

主なオプションと説明

オプション説明
-R指定したディレクトリとそのサブディレクトリ全体に対してアクセス権を変更します。
主なオプションと説明

コマンドの使用例と解説

1.ファイルとディレクトリの作成

この演習で使用するファイルとディレクトリを作成し、アクセス権を確認します。

ファイルとディレクトリを作成する。

次のコマンドを実行します。

  • date > file1」コマンドを実行します。
  • mkdir dir」コマンドを実行します。
  • date > dir/file2」コマンドを実行します。
  • ls -l」コマンドを実行します。
  • ls -l dir/file2」コマンドを実行します。
user01@ubuntu-vm:~$ date > file1
user01@ubuntu-vm:~$ mkdir dir
user01@ubuntu-vm:~$ date > dir/file2
user01@ubuntu-vm:~$ ls -l
合計 44
drwxrwxr-x 2 user01 user01 4096  6月 10 00:46 dir
-rw-rw-r-- 1 user01 user01   43  6月 10 00:44 file1
(省略)
drwxr-xr-x 2 user01 user01 4096  1月  1 10:51 公開
user01@ubuntu-vm:~$ ls -l dir/file2 
-rw-rw-r-- 1 user01 user01 43  6月 10 00:46 dir/file2

ファイルとディレクトリのアクセス権を確認する。

ファイルとディレクトリには、デフォルトのアクセス権が設定されています。

file1・・・rw-rw-r--(664)
dir
・・・rwxrwxr-x(775)
file2・・・rw-rw-r--(664)

2.ファイルのアクセス権を数値モードで変更

・「chmod 755 file1」コマンドを実行し、「ls -l file1」コマンドでアクセス権を確認します。

 file1のアクセス権を所有者に対して読み取り、書き込み、実行(rwx)、グループおよびその他のユーザーに対して読み取り、実行(r-x)に設定します。

user01@ubuntu-vm:~$ chmod 755 file1
user01@ubuntu-vm:~$ ls -l file1
-rwxr-xr-x 1 user01 user01 43  6月 10 00:44 file1

 file1ファイルのアクセス権を確認します。アクセス権が「755」に変わっていることが確認できます。

file1・・・rwxr-xr-x(755)

3.ディレクトリとその中のすべてのファイルのアクセス権を数値モードで変更

・「chmod -R 755 dir」コマンドを実行し、「ls -l」と「ls -l dir/file2」コマンドでアクセス権を確認します。

 dirディレクトリとその中のすべてのファイルおよびサブディレクトリのアクセス権を所有者に対して読み取り、書き込み、実行(rwx)、グループおよびその他のユーザーに対して読み取り、実行(r-x)の「755」に設定します。

user01@ubuntu-vm:~$ chmod -R 755 dir
user01@ubuntu-vm:~$ ls -l
合計 44
drwxr-xr-x 2 user01 user01 4096  6月 10 00:46 dir
-rwxr-xr-x 1 user01 user01   43  6月 10 00:44 file1
(省略)
drwxr-xr-x 2 user01 user01 4096  1月  1 10:51 公開
user01@ubuntu-vm:~$ ls -l dir/file2
-rwxr-xr-x 1 user01 user01 43  6月 10 00:46 dir/file2

 dirディレクトリとfiel2ファイルのアクセス権を確認します。アクセス権が「755」に変わっていることが確認できます。

dir ・・・rwxr-xr-x(755)
file2・・・rwxr-xr-x(755)

4.ファイルのアクセス権を記号モードで変更

・「chmod u=rwx,g=rx,o=r file1」コマンドを実行し、「ls -l file1」コマンドでアクセス権を確認します。

 file1のアクセス権を所有者に対して読み取り、書き込み、実行(rwx)、グループに対して読み取り、実行(rx)、その他のユーザーに対して読み取り(r)の「754」設定します。

user01@ubuntu-vm:~$ chmod u=rwx,g=rx,o=r file1
user01@ubuntu-vm:~$ ls -l file1
-rwxr-xr-- 1 user01 user01 43  6月 10 00:44 file1

 file1ファイルのアクセス権を確認します。アクセス権が「754」に変わっていることが確認できます。

file1・・・rwxr-xr--(754)

5.ディレクトリ内のすべてのファイルに対して記号モードで実行権を追加

アクセス権の変更

まず、dirディレクトリとfile2ファイルのアクセス権を変更しておきます。

・「chmod -R 744 dir」コマンドを実行し、「ls -l」と「ls -l dir/file2」コマンドでアクセス権を確認します。

user01@ubuntu-vm:~$ chmod -R 744 dir
user01@ubuntu-vm:~$ ls -l
合計 44
drwxr--r-- 2 user01 user01 4096  6月 10 00:46 dir
-rwxr-xr-- 1 user01 user01   43  6月 10 00:44 file1
(省略)
user01@ubuntu-vm:~$ ls -l dir/file2 
-rwxr--r-- 1 user01 user01 43  6月 10 00:46 dir/file2

 dirディレクトリとfiel2ファイルのアクセス権を確認します。アクセス権が「744」に変わっていることが確認できます。

dir ・・・rwxr--r--(744)
file2・・・rwxr--r--(744)

記号モードで実行権を追加

ディレクトリ内のすべてのファイルに対して記号「+」で実行権を追加します。

・「chmod -R +x dir」コマンドを実行し、「ls -l」と「ls -l dir/file2」コマンドでアクセス権を確認します。

 dirディレクトリとその中のすべてのファイルおよびサブディレクトリに対して実行権(x)を追加します。

user01@ubuntu-vm:~$ chmod -R +x dir
user01@ubuntu-vm:~$ ls -l
合計 44
drwxr-xr-x 2 user01 user01 4096  6月 10 00:46 dir
-rwxr-xr-- 1 user01 user01   43  6月 10 00:44 file1
(省略)
user01@ubuntu-vm:~$ ls -l dir/file2
-rwxr-xr-x 1 user01 user01 43  6月 10 00:46 dir/file2

 dirディレクトリとfiel2ファイルのアクセス権を確認します。アクセス権が「755」に変わっていることが確認できます。

dir ・・・rwxr-xr-x(755)
file2・・・rw-r-xr-x(755)

6.ファイルとディレクトリの削除

この演習で作成したファイルとディレクトリを削除します。

・「rm -r file1 dir」コマンドを実行し、「ls」コマンドで確認します。

user01@ubuntu-vm:~$ rm -r file1 dir
user01@ubuntu-vm:~$ ls
snap          テンプレート  ドキュメント  ピクチャ      公開
ダウンロード  デスクトップ  ビデオ        ミュージック

まとめ

 「chmod」コマンドは、Linuxシステムにおけるファイルおよびディレクトリのアクセス権を設定および変更するための重要なツールです。数値モードおよび記号モードを使用してアクセス権を指定でき、-Rオプションを使用することでディレクトリ全体に対する権限変更を行うことができます。これにより、システムのセキュリティと操作性を向上させることができます。