【chmod】Linuxコマンド_ファイル・ディレクトリのパーミッション(権限)を変更する

LinuxOSではファイルやディレクトリに対し、読み取りや書き込みを禁止にしたり、他のユーザーからのアクセスを禁止にしたりするために、「パーミッション」を設定する「chmod」コマンドを使用します。

「chmod」コマンドの使い方(Linux)

まず、以下のように対象ファイル「test01.txt」をlsコマンドを用いてパーミッションを確認します。

$ ls -l
total 0
-rw-r--r-- 1 root testgp 0 10月 17 00:26 test01.txt

パーミッションの状態と解説は以下を参考にしてください。

パーミッションの状態は以下の対象となります。

  • オーナー
  • 所属グループ
  • その他

さらに対象ごとに以下のような許可条件があります。

  • 読み込み(r)
  • 書き込み(w)
  • 実行(x)

上記のように許可されている場合は各許可条件(r・w・x)が表示され、許可されていない場合は(-)が表示されます。

各許可条件について

各許可条件についての説明は以下となります。

読み込み(r) ファイルの内容を表示できる条件
cat、lessコマンドなどを使用し表示できるか
書き込み(w) ファイルをエディタなどで使用し編集可能か
実行(x) 対象のファイルを操作・実行できるか

上記、「test01.txt」ファイルにおいて以下のパーミッション設定となります。

  • オーナー:読み込み・書き込みを許可
  • グループ:読み込みのみ
  • その他:読み込みのみ

「chmod」コマンドを使用してファイルのパーミッションを変更する

対象ファイルの現在のパーミッションを変更するには、「chmod」コマンドを使用します。
以下で、ファイルの所属グループに書き込み権限を許可します。

chmodコマンドにおける、オーナー、所属グループ、その他の対象オプションは以下となります。

  • オーナー:「u」
  • 所属グループ:「g」
  • その他:「o」
  • 全対象:「a」

また、現在のパーミッションに追加する場合は「+」、削除する場合は「-」、指定した条件のみにする場合は「=」を使用します。

以下で、ファイル「test01.txt」の所属グループに書き込み権限を付与します。
現状、所属グループには書き込み権限がありません。

$ ls -l
total 0
-rw-r--r-- 1 root testgp 0 10月 31 07:51 test01.txt

以下でコマンド実行後、所属グループに書き込み権限が付与されたことが確認できます。

$ chmod g+w test01.txt 
$ ls -l
total 0
-rw-rw-r-- 1 root testgp 0 10月 31 07:51 test01.txt

次に所属グループから書き込み権限を削除します。
「-」オプションを使用することで所属グループの書き込み権限さ削除されたことが確認できます。

$ chmod g-w test01.txt 
$ ls -l
total 0
-rw-r--r-- 1 root testgp 0 10月 31 07:51 test01.txt

次は所属グループで書き込み権限のみを指定します。
「=」オプションを使用することで所属グループに書き込み権限のみ許可されたことが確認できます。

$ chmod g=w test01.txt 
$ ls -l
total 0
-rw--w-r-- 1 root testgp 0 10月 31 07:51 test01.txt

「chmod」コマンドで8進数を用いたパーミッション設定

「chmod」コマンドによるパーミッションのモード設定には8進数を使用する方法があります。
以下では、8進数を数字を利用した各モード設定の表となります。

8進数 rwx
0
1 –x
2 -w-
3 -wx
4 r–
5 r-x
6 rw-
7 rwx

上記、モード設定から「test01.txt」ファイルのパーミッションの変更をします。
以下ではオーナーのみ書き込み・読み込みを設定(600)した例となります。

$ chmod 600 test01.txt 
$ ls -l
total 0
-rw------- 1 root root 0 10月 31 07:51 test01.txt

オーナーのみ書き込み・読み込み許可(6)、所属グループ、その他は全ての権限を削除(0)した結果となります。

ディレクトリのパーミッション変更

ディレクトリのパーミッション変更は以下の操作を制限することができます。

  • 対象ディレクトリへの移動
  • 対象ディレクトリ内でのファイルの参照や作成

以下ではディレクトリのパーミッションの設定を実施した例となります。

「test01」ディレクトリのデフォルトのパーミッションの状態は以下となります。

$ ls -l
total 4
drwxr-xr-x 2 root root 4096 10月 31 08:15 test01

所属グループに書き込み権限を追加し、「w」が付与されたことが確認できます。

$ chmod g+w test01
$ ls -l
total 4
drwxrwxr-x 2 root root 4096 10月 31 08:15 test01

8進数を利用して、オーナーのみ読み込み・書き込み・実行権限を与えます。

$ chmod 700 test01
$ ls -l
total 4
drwx------ 2 root root 4096 10月 31 08:15 test01

所属グループ、その他の権限が削除されたことが確認できます。

「chmod」コマンドオプション

「chmod」コマンドのオプションは以下の通りとなります。

$ chmod --help
使用法: chmod [OPTION]... MODE[,MODE]... FILE...
または: chmod [OPTION]... OCTAL-MODE FILE...
または: chmod [OPTION]... --reference=RFILE FILE...
Change the mode of each FILE to MODE.
With --reference, change the mode of each FILE to that of RFILE.

  -c, --changes          verbose と似ているが、変更があるもののみ出力する
  -f, --silent, --quiet  ほとんどのエラーメッセージを抑止する
  -v, --verbose          各ファイルを処理する毎に診断メッセージを表示する
      --no-preserve-root  '/' を特別扱いしない (既定)
      --preserve-root     '/' に対する再帰的な操作を失敗させる
      --reference=RFILE  MODE 値を指定する代わりに RFILE の MODE を使用する
  -R, --recursive        ファイルとディレクトリを再帰的に変更する
      --help     この使い方を表示して終了する
      --version  バージョン情報を表示して終了する

各 MODE は '[ugoa]*([-+=]([rwxXst]*|[ugo]))+|[-+=][0-7]+' の形式です.

GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Report chmod translation bugs to <https://translationproject.org/team/>
Full documentation at: <https://www.gnu.org/software/coreutils/chmod>
or available locally via: info '(coreutils) chmod invocation'

「chmod」コマンドの使い方は以上となります。

エンジニアのオンライン学習

エンジニアにおすすめのオンライン教材比較
ITエンジニアが自宅で学習ができるオンラインスクール比較

エンジニアのおすすめ学習「Progate」と「Udemy」比較

VPS_比較
最新情報をチェックしよう!