Linuxのchmodコマンドで記号指定(u/g/o/a)を理解しよう!初心者向け完全ガイド
生徒
「Linuxでファイルのパーミッションを変更したいんですけど、どうすればいいですか?」
先生
「それならchmodコマンドを使いますよ。特に記号指定という方法を使うと、とても分かりやすくパーミッションを変更できます。」
生徒
「記号指定って何ですか?難しくないですか?」
先生
「u、g、o、aという文字を使って、誰に対してどんな権限を与えるかを指定する方法です。数字で指定する方法よりも直感的で分かりやすいですよ。一緒に学んでいきましょう。」
1. chmodコマンドとは?
chmodコマンドは、Linuxでファイルやディレクトリのパーミッション(権限)を変更するための基本的なコマンドです。パーミッションとは「誰がそのファイルを読めるか、書き換えられるか、実行できるか」を決める設定のことです。
例えば、あなたが書いた日記を想像してください。その日記を「自分だけが読める」「家族も読める」「誰でも読める」のように、公開範囲を設定できます。Linuxのパーミッションも同じように、ファイルへのアクセス権限を細かく設定できる仕組みなのです。
chmodには数字で指定する方法と記号で指定する方法の二つがありますが、この記事では記号指定について詳しく解説していきます。
2. 記号指定(u/g/o/a)の基本
記号指定では、まず「誰に対して」権限を設定するかを決めます。これには四つの記号を使います。
- u(user):ファイルの所有者(オーナー)
- g(group):ファイルの所有グループ
- o(other):その他のユーザー
- a(all):すべてのユーザー(u、g、oの全部)
これは会社の文書管理に例えると分かりやすいです。u(ユーザー)は文書の作成者本人、g(グループ)は同じ部署の人たち、o(その他)は他の部署の人や外部の人、a(オール)は社内外すべての人、というイメージです。
3. パーミッションの種類(r/w/x)
次に、「どんな権限を与えるか」を決めます。権限には三つの種類があります。
- r(read):読み取り権限(ファイルの内容を見られる)
- w(write):書き込み権限(ファイルを編集・削除できる)
- x(execute):実行権限(プログラムとして実行できる)
図書館の本で例えると、r(読む)は本を読むこと、w(書く)は本に書き込みをすること、x(実行)はその本のレシピを実際に料理として作ることに相当します。
4. 記号指定の基本的な書き方
chmodコマンドで記号指定を使う基本的な書き方は以下のようになります。
chmod [誰に][操作][権限] ファイル名
ここで「操作」には三つの記号を使います。
- +(プラス):権限を追加する
- -(マイナス):権限を削除する
- =(イコール):権限を指定したものだけにする
例えば、ファイルの所有者に実行権限を追加したい場合は、次のように書きます。
chmod u+x script.sh
ls -l script.sh
-rwxr--r-- 1 user group 150 Jan 9 10:30 script.sh
この例では、u+xによって所有者(user)に実行権限(x)を追加しています。ls -lコマンドで確認すると、所有者の部分がrwxとなり、実行権限が付いたことが分かります。
5. 具体的な使用例
それでは、実際の使用例をいくつか見ていきましょう。
グループに書き込み権限を追加する
chmod g+w report.txt
ls -l report.txt
-rw-rw-r-- 1 user group 2048 Jan 9 11:15 report.txt
この例では、グループ(group)に書き込み権限(w)を追加しています。同じグループのメンバーがファイルを編集できるようになります。
その他のユーザーから読み取り権限を削除する
chmod o-r private.txt
ls -l private.txt
-rw-r----- 1 user group 512 Jan 9 12:00 private.txt
この例では、その他のユーザー(other)から読み取り権限(r)を削除しています。これにより、ファイルの所有者とグループ以外の人はファイルを読めなくなります。
すべてのユーザーに実行権限を追加する
chmod a+x program.sh
ls -l program.sh
-rwxr-xr-x 1 user group 1024 Jan 9 13:45 program.sh
この例では、すべてのユーザー(all)に実行権限(x)を追加しています。誰でもこのスクリプトを実行できるようになります。
6. 複数の権限を同時に設定する方法
chmodコマンドでは、複数の権限を同時に設定することも可能です。カンマ(,)で区切ることで、一つのコマンドで複数の操作を実行できます。
chmod u+x,g+w,o-r document.txt
ls -l document.txt
-rwxrw---- 1 user group 768 Jan 9 14:20 document.txt
この例では、一度に三つの操作を行っています。所有者に実行権限を追加し、グループに書き込み権限を追加し、その他のユーザーから読み取り権限を削除しています。
また、同じ対象に対して複数の権限を設定する場合は、権限の文字を続けて書くことができます。
chmod u+rwx config.conf
ls -l config.conf
-rwxr--r-- 1 user group 256 Jan 9 15:00 config.conf
これは所有者に読み取り、書き込み、実行のすべての権限を一度に追加する例です。
7. イコール(=)を使った権限の上書き
イコール記号(=)を使うと、既存の権限をすべて削除して、指定した権限だけを設定することができます。これは権限をリセットして新しく設定し直したいときに便利です。
chmod u=rw,g=r,o= secret.txt
ls -l secret.txt
-rw-r----- 1 user group 128 Jan 9 16:10 secret.txt
この例では、所有者には読み書きのみ、グループには読み取りのみ、その他のユーザーには権限なしと明確に設定しています。o=のように権限を何も指定しないと、その対象からすべての権限が削除されます。
8. ディレクトリのパーミッション変更
chmodコマンドはファイルだけでなく、ディレクトリ(フォルダ)のパーミッションも変更できます。ディレクトリの場合、権限の意味が少し異なります。
- r(読み取り):ディレクトリ内のファイル一覧を見られる
- w(書き込み):ディレクトリ内でファイルを作成・削除できる
- x(実行):ディレクトリ内に移動できる
chmod u+rwx,g+rx,o+rx project_folder
ls -ld project_folder
drwxr-xr-x 2 user group 4096 Jan 9 17:00 project_folder
ディレクトリには通常、実行権限(x)が必要です。これがないと、たとえ読み取り権限があっても、ディレクトリの中に入ることができません。
9. 数字指定との違いと使い分け
chmodコマンドには数字で指定する方法もあります。例えばchmod 755 file.txtのような書き方です。数字指定と記号指定には、それぞれメリットがあります。
記号指定のメリット
- どの対象に対して何をするのかが直感的に分かりやすい
- 既存の権限を保持したまま、一部だけを変更できる
- 初心者でも理解しやすく、間違いが少ない
数字指定のメリット
- 短く書けて入力が速い
- 権限全体を一度に設定できる
- スクリプトで使いやすい
初心者の方や、特定の権限だけを変更したい場合は記号指定がおすすめです。一方、システム管理者や慣れた方は、状況に応じて数字指定と記号指定を使い分けています。
10. よくある使用パターンと注意点
実際の開発現場でよく使われるパターンをいくつか紹介します。
スクリプトファイルを実行可能にする
chmod u+x backup.sh
シェルスクリプトやPythonスクリプトなどを作成したとき、実行権限を付けるために使います。
ログファイルをグループで共有する
chmod g+rw application.log
チームメンバー全員がログファイルを読み書きできるようにする場合に使います。
注意点
パーミッションの変更は慎重に行う必要があります。特に、システムファイルや重要な設定ファイルのパーミッションを誤って変更すると、システムが正常に動作しなくなる可能性があります。変更前には必ずls -lコマンドで現在の権限を確認し、本当に変更が必要かを確認しましょう。
また、セキュリティの観点から、必要以上に広い権限を与えないことも重要です。特にchmod 777のようにすべてのユーザーにすべての権限を与える設定は、セキュリティリスクが高いため、開発環境以外では避けるべきです。