💡

chmodコマンド

2023/04/17に公開

chmodコマンドについて

  • LinuxやUnix系オペレーティングシステムで
    ファイルやディレクトリのアクセス権限を変更するために使用されるコマンド
    エラーだとこんな感じに出たりします。
    Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

Permission = 許可

  • 一般的に、ファイルやディレクトリには
    "所有者"、"所有者のグループ"、"その他のユーザー"の3種類のアクセス権限が設定され、
    それぞれ、読み取り、書き込み、実行の3つの権限があります。

chmodコマンドは、これらのアクセス権限を変更するために使用される。

<基本型>

chmod [オプション] [権限] [ファイルまたはディレクトリ名]

ex.) file.txtファイルの所有者に読み取りと書き込みの権限を与え、
所有者のグループとその他のユーザーからは読み取りのみの権限を与える場合以下のようになる。

chmod 644 file.txt

これだけだとよくわからないので解説していきます!

Permission情報の確認コマンド: lsコマンド

<基本型>

ls -l [ファイルまたはディレクトリ名]

ex.) file.txtファイルのパーミッション情報を確認(表示)する場合。

ls -l file.txt

結果は以下のように表示されます。

-rw-r--r-- 1 user group 0 Apr 17 12:00 file.txt

解読方法

【 最初の列 = パーミッション情報 】

  • 最初の文字は、ファイルの種類を示し、「-」は通常のファイルを示している
    【次の9文字】
    3つのグループ(所有者、所有者のグループ、その他のユーザー)の各権限を表している。
  • 最初の3文字=所有者の権限
  • 次の3文字=所有者のグループの権限
  • 最後の3文字はその他のユーザーの権限
    を表している。

それぞれの文字の意味は以下のとおり。

r (read):読み取り権限
w (write):書き込み権限
x (execute):実行権限

これを踏まえて、上記で出力されたものを解読すると、
rw-r--r--
= 所有者に読み取りと書き込みの権限があり、
所有者のグループとその他のユーザーには読み取りのみの権限がある。
数字表現で「644」となる。
=> 数値表現を今度は以下で説明します。

パーミッションの対応表

以下は、Linux/Unixにおけるパーミッションの対応表だ。

権限に割り当てられた数値表現

権限 説明
r 読み取り(4)
w 書き込み(2)
x 実行(1)
- 権限がないことを示す(0)

上記の数字は、それぞれの権限に割り当てられた数値表現。
これらの数値を合計することで、各権限セットに対する数字表現を得ることができる!!!

権限 数字表現
--- 0
--x 1
-w- 2
-wx 3
r-- 4
r-x 5
rw- 6
rwx 7

これを踏まえて、上記で解読した rw-r--r-- は、
所有者に読み取りと書き込みの権限があり、所有者のグループとその他のユーザーには読み取りのみの権限があることを示していたが、この権限セットは、数字表現で「644」となる!!!

rw- 6 / r-- 4 / r-- 4 => 644

主要コマンド

tableでまとめたので参考までに。

オプション 説明 使用例
u ファイルの所有者に権限を設定します。 chmod u+rwx file.txt
所有者に読み書き実行権限を設定
g ファイルの所有者が所属するグループに権限を設定します。 chmod g+r file.txt
所有者のグループに読み取り権限を設定
o その他のユーザーに権限を設定します。 chmod o-rwx file.txt
その他のユーザーから全ての権限を削除
a 「u」「g」「o」すべてのユーザーに権限を設定します。 chmod a+rw file.txt
全てのユーザーに読み書き権限を追加
+ 権限を追加します。 chmod +x file.txt
全てのユーザーに実行権限を追加
- 権限を削除します。 chmod -w file.txt
全てのユーザーから書き込み権限を削除
= 権限を設定します。 chmod u=rw,g=r,o=r file.txt
所有者に読み書き権限、所有者のグループとその他のユーザーに読み取り権限を設定
r 読み取り権限を設定します。 chmod o+r file.txt
その他のユーザーに読み取り権限を追加
w 書き込み権限を設定します。 chmod g+w file.txt
所有者のグループに書き込み権限を追加
x 実行権限を設定します。 chmod u+x file.txt
所有者に実行権限を追加
numerical-mode 数字によるモードでパーミッションを設定します。 chmod 644 file.txt
所有者に読み書き権限、所有者のグループとその他のユーザーに読み取り権限を設定

Discussion