Linuxは強力なオペレーティングシステムであり、ファイルやディレクトリの権限管理を通じてシステムのセキュリティを維持できます。Linuxコマンドchmodは非常に重要なコマンドの一つです。chmodコマンドはファイルやディレクトリの権限を変更するために使用されます。今回の投稿では、chmodコマンドの基本的な使用方法から、さまざまなオプションと活用方法まで詳しく紹介します。
目次
Linuxコマンドchmodとは何か?
chmodは「change mode」の略で、ファイルやディレクトリの権限を変更するコマンドです。Linuxファイルシステムでは、権限はファイル所有者、グループ、その他のユーザーに分かれます。各ユーザーグループは、ファイルを読み取り(read)、書き込み(write)、実行(execute)する権限を持つことができます。
ファイル権限の理解
Linuxでのファイル権限は次の3つの種類に分かれます:
- 読み取り権限(read):ファイルの内容を読み取ることができます。
- 書き込み権限(write):ファイルの内容を修正することができます。
- 実行権限(execute):ファイルを実行することができます。
これらの権限はそれぞれ3つのユーザーグループに適用されます:
- 所有者(user):ファイルを所有するユーザー。
- グループ(group):ファイルが属するグループ。
- その他のユーザー(others):所有者やグループに属さないすべてのユーザー。
Linuxコマンドlsの-lオプションを利用すると、次のように先頭に「drwxrwxr-x」や「-rw-rw-r–」と表示されるものが、上記の権限とユーザーグループに関する情報です。
以下の図を見ると3つのrwxが見えます。最初はユーザー(user)、次にファイルが属するグループ(group)、最後にユーザーやグループに属さないすべてのユーザー(others)を意味します。そして、rwxそれぞれは読み取り(read)、書き込み(write)、実行(execute)権限を意味します。
chmodコマンドの使用方法
chmodコマンドはファイル権限を数字または記号で変更することができます。両方の方法を見ていきましょう。
数字モード
数字モードでは、各権限を3桁の数字で表現します。rwxは3桁の2進数として使用されます。各桁は4(読み取り)、2(書き込み)、1(実行)の値を持つことができ、この値を足して権限を設定します。
上記の図のように、パーミッションの10進数値は次のように2進数計算方式を使用して計算します。
- 読み取り、書き込み、実行権限(rwx):4 + 2 + 1 = 7
- 読み取り、書き込み権限(rw-):4 + 2 = 6
- 読み取り、実行権限(r-x):4 + 1 = 5
- 読み取り権限(r–):4 = 4
数字モードを使用して所有者に読み取り、書き込み、実行権限を付与し、グループとその他のユーザーには読み取り、実行権限を設定する方法は以下の通りです。
chmod 755 filename
ShellScript以下の図では、既存のパーミッションが664のrun.shファイルに755権限を付与した結果を確認できます。
記号モード
記号モードでは、権限を文字で表現します:
- u:所有者(user)
- g:グループ(group)
- o:その他のユーザー(others)
- a:すべてのユーザー(all)
権限の付与(+)や削除(-)を記号で示します:
- r:読み取り(read)
- w:書き込み(write)
- x:実行(execute)
記号モードを使用して所有者に読み取り、書き込み、実行権限を付与し、グループには読み取り、実行権限を付与し、その他のユーザーには読み取り権限を削除する方法は以下の通りです。
chmod u+rwx,g+rx,o-r filename
ShellScript実行結果は以下の通りです。ユーザー権限のうちrwはすでにあり、xだけがなかったのでxが追加されたことがわかります。グループ権限にはrw権限がありましたが、rx権限を追加したのでxが追加されました。最後にその他のユーザーはr権限だけがありましたが、これを削除したため、どの権限もなくなりました。
数字モードとの違いは、数字モードはその数字の権限でrwxがすべて決まるのに対し、記号モードは加算(+)符号を利用して既存ファイルの権限を追加し、減算(-)符号で既存ファイルの権限を削除する特徴があります。つまり、記号モードを利用するときにはそのファイルの全体権限を変更せず、必要な権限だけを追加または削除することができます。
chmodコマンドのオプション
chmodコマンドにはいくつかの有用なオプションがあります。よく使用されるオプションを見てみましょう。
-R(再帰的適用)
-Rオプションは、ディレクトリとその配下のすべてのファイルおよびディレクトリに権限を再帰的に適用します。たとえば、mydirディレクトリとその中のすべてのファイルとディレクトリに755権限を設定するには、次のようにします:
chmod -R 755 mydir
ShellScriptmydir配下のファイルのパーミッションは664でしたが、-Rオプションを使用するとドット1つ(.)で表されるmydirの権限は775から755に変更され、mydir配下のa.sh、b.sh、c.shファイルすべてのパーミッションが755に変更されたことが確認できます。
–reference
–referenceオプションは、他のファイルの権限を参照して同じように設定する際に使用します。たとえば、file2の権限をfile1と同じに設定するには、次のようにします:
chmod --reference=file1 file2
ShellScript以下の図はa.shファイルの権限を参照してb.shファイルの権限を同じに設定した結果です。
役に立つ活用方法
スクリプトファイルの実行権限付与
Linuxでシェルスクリプトを実行するには実行権限が必要です。
次のコマンドでスクリプトファイルに実行権限を付与できます:
chmod +x script.sh
ShellScriptこれで./script.shでスクリプトを実行できます。
ウェブサーバーファイルの権限設定
ウェブサーバーでのファイル権限設定は非常に重要です。一般的にウェブサーバーのルートディレクトリにあるファイルは次のような権限を持ちます:
- ディレクトリ:755(所有者は読み取り、書き込み、実行可能、グループとその他のユーザーは読み取り、実行可能)
- ファイル:644(所有者は読み取り、書き込み可能、グループとその他のユーザーは読み取り可能)
たとえば、ウェブサーバーのルートディレクトリwwwとその中のファイルに権限を設定するには、次のようにします:
chmod -R 755 /var/www
find /var/www -type f -exec chmod 644 {} \;
ShellScript2行目はfindコマンドを一緒に使用して/var/wwwでファイルを探します。-type fオプションを利用してファイルだけを探します。-exec chmodオプションを利用して見つけたファイルに対してchmodコマンドを実行します。
注意事項
誤った権限設定
誤った権限設定はセキュリティ問題を引き起こす可能性があります。たとえば、すべてのユーザーに書き込み権限を与えると、重大なセキュリティ問題を引き起こし、システムが損傷する可能性があります。
sudoの使用
システムファイルの権限を変更する必要がある場合は、sudoコマンドを使用して管理者権限を取得する必要があります。
sudo chmod 644 /etc/passwd
ShellScriptまとめ
chmodコマンドはLinuxでファイルやディレクトリの権限を管理するための必須ツールです。数字モードと記号モードを通じて権限を設定でき、再帰的適用や参照オプションを使用して効率的に管理できます。適切な権限設定はシステムセキュリティを維持するために非常に重要ですので、常に慎重に設定する必要があります。chmodコマンドをうまく活用して、安全で効率的なLinux環境を維持してください。
以上でchmodコマンドの使用方法とオプションについて説明しました。この投稿がLinuxの使用において多くの助けとなることを願っています。