Linux/Unixにおけるファイル権限:読み取り、書き込み、変更方法

⚡ スマートサマリー

LinuxおよびUnixにおけるファイル権限は、各ファイルの読み取り、書き込み、実行を誰が行えるかを制御し、所有権(ユーザー、グループ、その他に割り当てる)と読み取り、書き込み、実行の権限ビットという2つの層を通してマルチユーザーシステムを保護します。

  • 👥 所有: すべてのファイルとディレクトリは、ユーザー(所有者)、グループ、そしてその他(時には「世界」と呼ばれる)に属しています。
  • 🔑 権限: 各所有者クラスには、読み取り(r)、書き込み(w)、実行(x)の3つの権限が適用されます。
  • 📃 リスト: ls -l コマンドは、所有者、グループ、およびワールドに対して -rw-rw-r– のようなパーミッション文字列を表示します。
  • 🔢 絶対モード: 3桁の8進数でchmodコマンドを実行すると、例えば764のように、3つのクラスすべてに対して一度にパーミッションが設定されます。
  • シンボリックモード: chmod コマンドで u、g、o、a、+、-、= を使用すると、他の所有者クラスには影響を与えずに、1 つの所有者クラスを変更できます。
  • 🧭 所有権コマンド: chownコマンドは所有者とグループの両方を変更しますが、chgrpコマンドはグループのみを変更します。
  • 🤖 AIによる支援: AIアシスタントとGitHub Copilotは、chmodコマンドとchownコマンドを生成して説明することができます。

LinuxとUnixにおけるファイル権限:ファイルの読み取り、書き込み、変更方法

ファイル権限 Linux Unixは、各ファイルの読み取り、変更、実行権限を誰が持つかを決定することで、共有マルチユーザーシステムのセキュリティを維持します。このページでは、ファイルの所有権、読み取り、書き込み、実行権限、およびそれらを変更するコマンドについて説明します。

Linuxは、多数のユーザーが同時にアクセスできるマルチユーザーオペレーティングシステムであるUnixのクローンです。Linuxは、メインフレームやサーバー上でも変更なしで使用できます。しかし、不正なユーザーや悪意のあるユーザーが重要なデータを破損、変更、または削除する可能性があるため、セキュリティ上の懸念が生じます。効果的なセキュリティのために、Linuxは認証を2つのレベルに分けています。

  • 所有権
  • 許可

ファイル権限と所有権の概念は、Linuxにおいて非常に重要です。ここでは、Linuxの権限と所有権について説明し、両方について解説します。まずは所有権から始めましょう。

Linux ファイルの所有権

Unix/Linuxシステム上のすべてのファイルとディレクトリには、以下の3種類の所有者が割り当てられます。下の図は、所有権がユーザー、グループ、その他のユーザーにどのように対応しているかを示しています。

Linuxのファイル所有権の図(ユーザー、グループ、その他の権限クラスを示す)

ユーザー

ユーザーはファイルの所有者です。 デフォルトでは、ファイルを作成した人がその所有者になります。 したがって、ユーザーは所有者と呼ばれることもあります。

グループ

A ユーザー・グループ 複数のユーザーを含めることができます。グループに属するすべてのユーザーは、ファイルに対して同じLinuxグループ権限を持ちます。たとえば、複数のユーザーがファイルにアクセスする必要があるプロジェクトがあるとします。各ユーザーに手動で権限を割り当てる代わりに、すべてのユーザーをグループに追加し、ファイルにグループ権限を割り当てることで、グループメンバーのみがファイルを読み取ったり変更したりできるようになり、他のユーザーはアクセスできなくなります。

その他

ファイルへのアクセス権を持つ他のユーザー。このユーザーは、ファイルを作成したわけでも、ファイルを所有できるユーザーグループに属しているわけでもありません。実際には、他のすべてのユーザーを指します。したがって、他のユーザーに対するアクセス許可を設定することは、「全世界に対するアクセス許可を設定する」とも呼ばれます。

ここで大きな疑問が生じます。Linuxはどのようにしてこれら3種類のユーザーを区別し、ユーザー「A」が他のユーザー「B」の重要な情報やデータを含むファイルに影響を与えないようにするのでしょうか?これは、自分のファイルを扱う同僚に自分のファイルを操作されたくないのと同じです。 Linuxコンピューター 画像を閲覧するには、権限が必要です。ここで権限が重要になり、権限によってユーザーの行動が規定されます。

Linuxのパーミッションシステムについて理解しましょう。

Linuxファイルのアクセス許可

Unix/Linuxシステム内のすべてのファイルとディレクトリには、上記で説明した3つの所有者すべてに対して、以下の3つのアクセス許可が定義されています。

  • 読む: この権限により、ファイルを開いて読み込むことができます。ディレクトリに対する読み取り権限があれば、そのディレクトリの内容を一覧表示できます。
  • 書きます: 書き込み権限があれば、ファイルの内容を変更することができます。ディレクトリへの書き込み権限があれば、そのディレクトリに保存されているファイルを追加、削除、名前変更することができます。ファイルへの書き込み権限はあっても、そのファイルが保存されているディレクトリへの書き込み権限がない場合を考えてみましょう。この場合、ファイルの内容を変更することはできますが、ディレクトリからファイルの名前を変更したり、移動したり、削除したりすることはできません。
  • 実行します。 In Windows実行可能プログラムは通常「.exe」という拡張子を持ち、簡単に実行できます。Unix/Linuxでは、実行権限が設定されていない限り、プログラムを実行することはできません。実行権限が設定されていない場合でも、プログラムコードを表示したり変更したりすることはできますが(読み取り権限と書き込み権限が設定されている場合)、実行することはできません。

Linuxにおけるファイル権限を例を挙げて見ていきましょう。ターミナルでls -lを実行すると、次のようになります。

ls -l

以下のスクリーンショットは、長いリストの中にある権限文字列を示しています。

ターミナルで ls -l コマンドを実行して、ファイルのパーミッション文字列 rw-rw-r-- を表示する。

ここで強調表示されている「-rw-rw-r–」というコードは、所有者、ユーザーグループ、および全世界に対して与えられたUnixのパーミッションを示しています。

ここで、最初の「-」はファイルが選択されたことを意味します。下のアイコンは通常のファイルを示します。

リストされたアイテムが通常のファイルであることを示す小さなアイコン

そうでなければ、それがディレクトリであれば、以下のリストのように「d」が表示されます。

ターミナルに、パーミッション文字列の先頭に「d」が付いたディレクトリを表示する。

キャラクターは覚えやすいです。

  • r = 読み取り権限
  • w = 書き込み権限
  • x = 実行権限
  • – = 許可なし

このように考えてみましょう。コードの最初の部分は「rw-」です。これは、所有者「Home」が以下のことができることを示しています。

  • ファイルを読む
  • ファイルの書き込みまたは編集

実行ビットが「-」に設定されているため、所有者はファイルを実行できません。下のアイコンは、実行ビットがクリアされてダッシュになっている状態を示しています。

実行権限ビットがダッシュにクリアされたことを示す小さなアイコン

設計上、Fedora、CentOS、および Ubuntu ユーザーを、そのユーザーと同じ名前のグループに追加します。したがって、ユーザー「tom」は「tom」という名前のグループに追加されます。

2番目の部分は「rw-」です。これはユーザーグループ「Home」用で、グループメンバーは以下のことができます。

  • ファイルを読む
  • ファイルの書き込みまたは編集

3つ目の部分は全世界向けで、つまりすべてのユーザーを対象としています。「r–」と表示されています。これは、ユーザーが以下のことしかできないことを意味します。

  • ファイルを読む

以下の内訳は、パーミッション文字列の各部分を、所有者、グループ、およびワールドにマッピングしたものです。

rw-rw-r-- パーミッション文字列を所有者、グループ、ワールドの各セクションに分解します。

Linuxでファイル/ディレクトリのパーミッションを変更する方法:'chmod'コマンドを使用する

例えば、同僚に自分のプライベートな画像を見られたくない場合、ファイル権限を変更することでそれが可能です。

'chmod' を使用できます commandこれは「モード変更」の略です。このコマンドを使用すると、ファイルまたはディレクトリに対して、所有者、グループ、および全世界に対して、読み取り、書き込み、実行の権限を設定できます。

構文:

chmod permissions filename

このコマンドを使用する方法は2つあります。

  • 絶対モード
  • 記号モード

Linuxにおける絶対(数値)モード

このモードでは、ファイル権限は文字ではなく、3桁の8進数で表されます。以下の表に、すべての権限タイプに対応する数値を示します。

権限の種類 シンボル
0 無許可 -
1 実行する -バツ
2 書きます -w-
3 実行 + 書き込み -wx
4 タリアセン・ウェストにおける修復作業について NS-
5 読み取り + 実行 rx
6 読む+書く rw-
7 読み書き実行 rwx

下のターミナルウィンドウに示されているように、chmodコマンドの動作を見てみましょう。

ファイル sample のパーミッションを変更するために、ターミナルで chmod 764 を実行します。

上記のターミナルウィンドウでは、ファイル「sample」のパーミッションを「764」に変更しました。「764」という絶対パスコードは以下のことを意味します。

  • 所有者は、読み書きおよび実行が可能です。
  • ユーザーグループは読み書きが可能です。
  • 世界は読むことしかできない。

これは、以下の結果のように「-rwxrw-r–」と表示されます。

chmod 764実行後のサンプルファイル(-rwxrw-r--パーミッション文字列付き)を示すターミナル一覧

Linuxでは、絶対値を指定することでファイルのユーザー権限を変更できます。

Linux のシンボリック モード

絶対モードでは、3人全員の所有者の権限を変更できます。シンボリックモードでは、特定の所有者の権限を変更できます。シンボリックモードでは、数式を使用してUnixファイルの権限を変更します。

Operator 詳細説明
+ ファイルまたはディレクトリにアクセス許可を追加します
権限を削除します
= 権限を設定し、以前に設定された権限を上書きします。

各所有者は以下のとおりです。

ユーザー 意味
u ユーザー/所有者
g グループヘッド
o その他
a

パーミッションは755のような数値ではなく、rwxのような文字で指定します。以下の例をご覧ください。

端末で、u、g、o、+、-、= の記号コマンドを使用して特定の権限を変更する chmod コマンドを使用する

Linux での所有権とグループの変更

ファイルまたはディレクトリの所有権を変更するには、次のコマンドを使用できます。

chown user filename

ファイルまたはディレクトリのユーザーとグループの両方を変更したい場合は、次のコマンドを使用します。

chown user:group filename

以下に、その実際の動作を示します。

ターミナルでchownコマンドを実行してファイルの所有者とグループを変更する

グループの所有者のみを変更したい場合は、次のコマンドを使用してください。

chgrp group_name filename

「chgrp」は変更グループを意味します。以下のスクリーンショットは、chgrpコマンドの使用例を示しています。

ターミナルでchgrpコマンドを実行してファイルのグループ所有者のみを変更する

先端

  • ファイル /etc/group には、システム上で定義されているすべてのグループが含まれています。
  • 以下に示すように、「groups」コマンドを使用すると、自分が所属しているすべてのグループを見つけることができます。

ターミナルでgroupsコマンドを実行して、ユーザーが所属するグループの一覧を表示する

  • 以下に示すように、newgrp コマンドを使用すると、デフォルトグループ以外のグループのメンバーとして作業できます。

別のグループに切り替えるためにnewgrpコマンドを実行するターミナル

  • 同じファイルを2つのグループが所有することはできません。
  • Linuxでは、ネストされたグループという概念は存在しません。あるグループが別のグループのサブグループになることはできません。
  • x — ディレクトリを実行するということは、ディレクトリに「入る」ことが許可され、サブディレクトリへのアクセス権を取得できる可能性があることを意味します。
  • ファイルやディレクトリに設定できるその他のアクセス許可については、後日公開する上級チュートリアルで説明します。

よくあるご質問

chmodコマンドで実行権限を追加します。シンボリック形式の`chmod +x script.sh`はすべてのユーザーに実行権限を付与し、`chmod u+x script.sh`は所有者のみに実行権限を付与します。その後、スクリプトのディレクトリから`./script.sh`コマンドで直接スクリプトを実行できます。

umask は、新しく作成されたファイルとディレクトリから削除されるデフォルトのパーミッションを設定します。ファイルは 666 から、ディレクトリは 777 から始まり、umask の値はそれ以下になります。tracted。一般的なumask値022では、ファイルには644、ディレクトリには755の権限が付与されます。umaskを実行して現在の値を確認してください。

これらは特別なパーミッションビットです。setuidはプログラムを所有者の権限で実行し、setgidはグループの権限で実行したり、新しいファイルにディレクトリのグループを継承させたりします。また、スティッキービットは、/tmpなどの共有ディレクトリ内でファイルの所有者のみがファイルを削除できるようにします。

はい。chownコマンドでファイルの所有者を変更できるのは、rootユーザー、またはsudo権限で実行しているユーザーのみです。通常の所有者は、自分が所属するグループにファイルを渡すことはできますが、セキュリティ上の理由から、別のユーザーに再割り当てするにはroot権限が必要です。

そのエラーは、ファイルを変更する権限がないことを意味します。chmodを実行するには、ファイルの所有者であるか、root権限を持っている必要があります。chownを実行するには、通常root権限が必要です。コマンドの前にsudoを付けるか、ファイルの所有者に切り替えて、もう一度試してください。

再帰的な -R オプションを使用してください。`chmod -R 755 myfolder` は、フォルダとその中のすべてのファイルおよびサブフォルダにアクセス許可を適用し、`chown -R user:group myfolder` は、所有権について同様の処理を行います。-R オプションはフォルダ以下のすべての項目に影響するため、慎重に使用してください。

AIアシスタントは、「このスクリプトを自分だけが実行できるようにする」といったリクエストを適切なchmodコマンドに変換したり、755のようなモードの意味を説明したり、777のような危険な設定について警告したりすることができます。機械学習によるセキュリティツールは、権限が危険なほど緩いと思われるファイルも検出します。

Yes. GitHubコパイロット 短いコメントで希望する権限や所有者を説明すると、chmod、chown、chgrp コマンドが提案され、入力と同時に補完されます。 Rev権限や所有権の変更はセキュリティに影響を与えるため、実行する前に各提案を確認してください。