シェルスクリプトに実行権限を付与する方法

ShellBeginner
オンラインで実践に進む

はじめに

このチュートリアルでは、Shell スクリプトに実行権限を付与する手順を説明します。ファイルの権限とその適用方法を理解することは、Shell プログラミングにおいて重要な要素であり、スクリプトを実行可能にして実行できる状態にすることができます。

ファイルの権限について

Linux オペレーティングシステムでは、すべてのファイルとディレクトリには、誰がそれに対して特定のアクションを実行できるかを決定する一連の権限があります。これらの権限は、読み取り、書き込み、実行の 3 つの主要なカテゴリに分けられます。

ファイルの権限

ファイルの権限は、10 文字の文字列で表され、次のようになります。

-rw-r--r--

最初の文字はファイルの種類を示し、- は通常のファイルを表し、d はディレクトリを表し、その他の文字は特殊なファイルの種類を表します。

残りの 9 文字は、ファイルの権限を表し、3 文字ずつ 3 つのグループに分けられます。

  1. ユーザー権限:最初の 3 文字は、ファイルの所有者の権限を表します。
  2. グループ権限:次の 3 文字は、ファイルが属するグループの権限を表します。
  3. その他の権限:最後の 3 文字は、その他すべてのユーザーの権限を表します。

これらの 3 文字のグループはそれぞれ同じパターンに従います。

  • r:読み取り権限
  • w:書き込み権限
  • x:実行権限
  • -:権限なし

たとえば、権限 -rw-r--r-- は、ファイルの所有者に読み取りと書き込みの権限があり、グループには読み取り権限があり、その他すべてのユーザーにも読み取り権限があることを示しています。

ディレクトリの権限

ディレクトリの権限は、ファイルの権限とは少し異なります。権限は同じ 3 つのグループに分けられますが、権限の意味は異なります。

  • r:ユーザーがディレクトリの内容を一覧表示できるようにします。
  • w:ユーザーがディレクトリ内のファイルやサブディレクトリを作成、削除、名前変更できるようにします。
  • x:ユーザーがディレクトリにアクセスして移動できるようにします。

たとえば、権限 drwxr-xr-x は、ディレクトリの所有者に読み取り、書き込み、実行の権限があり、グループには読み取りと実行の権限があり、その他すべてのユーザーにも読み取りと実行の権限があることを示しています。

8 進数の権限について

権限のシンボル表記に加えて、8 進数(8 進法)を使用して権限を表すこともできます。各権限には値が割り当てられています。

  • r = 4
  • w = 2
  • x = 1

ファイルまたはディレクトリの権限は、3 桁の 8 進数で表され、各桁はそれぞれユーザー、グループ、その他の権限を表します。

たとえば、権限 -rw-r--r-- は 8 進数 644 として表すことができ、ここで:

  • ユーザー権限:rw- = 4 + 2 + 0 = 6
  • グループ権限:r-- = 4 + 0 + 0 = 4
  • その他の権限:r-- = 4 + 0 + 0 = 4

実行権限の付与

シェルスクリプトを実行するには、ファイルに実行権限が設定されている必要があります。これは、「change mode」(モードを変更する)を意味する chmod コマンドを使用して行うことができます。

chmod コマンドの使用

chmod コマンドは、ファイルまたはディレクトリの権限を変更するために使用されます。基本的な構文は次のとおりです。

chmod [options] mode file

ここで:

  • [options] は、chmod コマンドの動作を変更するオプションのフラグです。
  • mode は、設定したい新しい権限モードです。
  • file は、権限を変更したいファイルまたはディレクトリの名前です。

シェルスクリプトに実行権限を付与するには、次のコマンドを使用できます。

chmod +x script.sh

これにより、ユーザー、グループ、その他のユーザーに対して、ファイル script.sh に実行権限 (x) が追加されます。

あるいは、権限の 8 進数表記を使用することもできます。

chmod 755 script.sh

これにより、権限が rwxr-xr-x に設定され、ここで:

  • ユーザー(所有者)には読み取り、書き込み、実行の権限があります。
  • グループとその他のユーザーには読み取りと実行の権限があります。

再帰的に実行権限を適用する

複数のファイルとサブディレクトリがあるディレクトリがある場合、-R(再帰的)オプションを使用して再帰的に実行権限を適用することができます。

chmod -R +x directory/

これにより、directory/ ディレクトリ内のすべてのファイルとサブディレクトリに実行権限が付与されます。

同様に、8 進数表記を使用して再帰的に権限を設定することもできます。

chmod -R 755 directory/

これにより、directory/ ディレクトリ内のすべてのファイルとサブディレクトリの権限が rwxr-xr-x に設定されます。

適切なファイル権限を理解して適用することで、シェルスクリプトが実行可能であり、意図したユーザーによって実行できることを確認できます。

実行権限の適用

これでシェルスクリプトに実行権限を付与する方法がわかったので、いくつかの実用的なアプリケーションと例を見てみましょう。

シェルスクリプトの実行

シェルスクリプトに実行権限を付与したら、次のコマンドを使用して実行できます。

./script.sh

これにより、script.sh ファイルが現在の作業ディレクトリにあると仮定して実行されます。

スクリプトがシステムの PATH に含まれていないディレクトリにある場合でも、スクリプトへの完全なパスを指定することで実行できます。

/path/to/script.sh

実行権限によるタスクの自動化

実行権限を付与することは、繰り返し行うタスクやスクリプトを自動化したい場合に特に有用です。たとえば、バックアップ操作を行うシェルスクリプトを作成し、そのスクリプトに実行権限を設定することができます。これにより、バックアップが必要なときにいつでも簡単にバックアップスクリプトを実行できます。

graph LR
  A[Create Backup Script] --> B[Grant Execution Permission]
  B --> C[Run Backup Script]

機密性の高いスクリプトのセキュリティ保護

実行権限の適切な管理は、機密性の高いスクリプトやプログラムのセキュリティ保護にも重要です。特定のスクリプトを実行できるユーザーを慎重に制御することで、不正アクセスや誤用の可能性を制限することができます。

たとえば、管理タスクを実行したり、機密データにアクセスしたりするスクリプトがある場合があります。この場合、そのスクリプトの実行権限を持つのは承認されたユーザーまたはプロセスのみにする必要があります。

共同開発

複数のチームメンバーでプロジェクトに取り組む場合、実行権限を管理することで、すべてのメンバーが必要なスクリプトやプログラムを実行できるようにすることができます。適切な権限を設定することで、チームメンバーが必要なスクリプトを実行できるようにしながら、システム全体のコントロールを維持することができます。

実行権限を適切に適用する方法を理解することで、シェルスクリプトのワークフローのセキュリティ、自動化、共同作業の側面を強化することができます。

まとめ

このチュートリアルの終わりまでに、シェル環境におけるファイルの権限と、スクリプトに実行権限を付与する手順をしっかりと理解することができるでしょう。この知識を活用することで、シェルスクリプトを効果的に作成および管理し、意図したとおりに実行できるようにすることができます。