前書き

Linuxは、ファイルシステムレベルでセキュリティを提供するための_file Ownership_および_permissions_のUnixコンセプトに基づいたマルチユーザーOSです。 Linuxのスキルを向上させることを計画している場合、所有権と権限がどのように機能するかについて十分に理解していることが不可欠です。 ファイルの所有権とアクセス許可を扱う際には多くの複雑さがありますが、それらがどのように機能するかの基本的な理解に必要な詳細まで概念を抽出するために最善を尽くします。

このチュートリアルでは、Linuxの所有権と許可を表示および理解する方法について説明します。 権限を変更する方法に関するチュートリアルを探している場合は、このガイドをご覧ください:https://www.digitalocean.com/community/tutorials/linux-permissions-basics-and-how-to-use-umask-on- a-vps#types-of-permissions [Linuxアクセス許可の基本とVPSでUmaskを使用する方法]

前提条件

このシリーズの以前のチュートリアルで説明されている概念を必ず理解してください。

このチュートリアルに従うためにLinuxサーバーにアクセスすることは必ずしも必要ではありませんが、使用するサーバーを用意しておけば、実際に体験することができます。 設定する場合は、https://www.digitalocean.com/community/tutorials/how-to-create-your-first-digitalocean-droplet-virtual-server [このリンクをチェック]でヘルプを参照してください。

ユーザーについて

はじめに述べたように、Linuxはマルチユーザーシステムです。 Linuxの_users_と_groups_の基本を理解してからでないと、所有権と許可が適用されるエンティティであるため、所有権と許可について説明する必要があります。 ユーザーが何であるかの基本から始めましょう。

Linuxには、_system users_と_regular users_の2種類のユーザーがあります。 従来、システムユーザーはシステム上で非対話型またはバックグラウンドプロセスを実行するために使用され、通常のユーザーはプロセスへのログインとプロセスの対話型実行に使用されていました。 Linuxシステムに初めてログインすると、OSが依存するサービスを実行する多くのシステムユーザーで起動することに気付く場合があります。これは完全に正常です。

システム上のすべてのユーザーを表示する簡単な方法は、 `+ / etc / passwd`ファイルの内容を調べることです。 このファイルの各行には、user name(最初の `:`の前の名前)で始まる単一のユーザーに関する情報が含まれています。 次のコマンドで `+ passwd +`ファイルを印刷します:

cat /etc/passwd

スーパーユーザー

2つのユーザータイプに加えて、superuser、または_root_ユーザーがあり、ファイルの所有権とアクセス許可の制限をオーバーライドすることができます。 実際には、これは、スーパーユーザーが自身のサーバー上のすべてにアクセスする権利を持っていることを意味します。 このユーザーは、システム全体の変更を行うために使用され、安全に保つ必要があります。

「スーパーユーザー権限」を引き受ける機能を持つ他のユーザーアカウントを構成することもできます。 実際、システム管理タスクの `+ sudo +`特権を持つ通常のユーザーを作成することはベストプラクティスと見なされます。

グループについて

グループは、ゼロ以上のユーザーのコレクションです。 ユーザーはデフォルトグループに属し、サーバー上の他のグループのメンバーになることもできます。

すべてのグループとそのメンバーを表示する簡単な方法は、サーバー上の `+ / etc / group`ファイルを調べることです。 この記事ではグループ管理については説明しませんが、グループに興味がある場合はこのコマンドを実行できます。

cat /etc/group

ユーザーとグループがわかったので、ファイルの所有権と許可について話しましょう!

所有権と権限の表示

Linuxでは、すべてのファイルは1人のユーザーと1つのグループによって所有されており、独自のアクセス許可を持っています。 ファイルの所有権と許可を表示する方法を見てみましょう。

ファイルのパーミッションを表示する最も一般的な方法は、長いリストオプションで + ls +`を使用することです。 `+ ls -l myfile +。 現在のディレクトリ内のすべてのファイルのアクセス許可を表示するには、次のように引数なしでコマンドを実行します。

ls -l

*ヒント:*空のホームディレクトリにいて、表示するファイルをまだ作成していない場合は、次のコマンドを実行して `+ / etc `ディレクトリの内容を一覧表示できます: ` ls- l / etc + `

出力の各列のラベルを使用して、出力がどのように見えるかのスクリーンショットの例を次に示します。

画像:https://assets.digitalocean.com/articles/linux_basics/ls-l.png [ls -l]

各ファイルのモード(権限を含む)、所有者、グループ、および名前がリストされていることに注意してください。 _Mode_列は別として、このリストはかなり簡単に理解できます。 これらのすべての文字とハイフンの意味を説明するために、_Mode_列をそのコンポーネントに分解してみましょう。

モードを理解する

すべてのグループ化と文字の意味を説明するために、上記の例の最初のファイルの_mode_のこのクローズアップを見てください。

image:https://assets.digitalocean.com/articles/linux_basics/mode.png [モードと権限の内訳]

ファイルの種類

Linuxには、_normal_と_special_の2つの基本的なファイルタイプがあります。 ファイルタイプは、ファイルの_mode_の最初の文字で示されます。このガイドでは、これを_file type field_と呼びます。

通常のファイルは、ファイルタイプフィールドにハイフン( -)が付いたファイルで識別できます。 通常ファイルは、データを含むことができる単なるファイルです。 それらは、特殊ファイルと区別するために、通常ファイルまたは通常ファイルと呼ばれます。

特殊ファイルは、ファイルタイプフィールドに文字などの非ハイフン文字を含むファイルによって識別でき、通常のファイルとは異なる方法でOSによって処理されます。 [ファイルタイプ]フィールドに表示される文字は、特定のファイルの種類を示しています。 たとえば、最も一般的な種類の特殊ファイルであるディレクトリは、(前のスクリーンショットのように)ファイルタイプフィールドに表示される「+ d +」文字によって識別されます。 他にもいくつかの種類の特殊ファイルがありますが、ここで学んでいることは重要ではありません。

許可クラス

この図から、_Mode_列はファイルの種類を示しており、その後にユーザー(所有者)、グループ、およびその他の3つのトライアド、つまりクラスのアクセス許可が続いていることがわかります。 クラスの順序は、すべてのLinuxディストリビューションで一貫しています。

各アクセス許可クラスに属するユーザーを見てみましょう。

  • ユーザー:ファイルの_owner_はこのクラスに属します

  • グループ:ファイルのグループのメンバーはこのクラスに属します

  • その他:_user_または_group_クラスの一部ではないユーザーは、このクラスに属します。

シンボリック許可の読み取り

次に注意することは、3つの文字のセット、つまりトライアドです。これらは、各クラスが特定のファイルに対して持つ許可を記号形式で示すためです。

各トライアドでは、読み取り、書き込み、および実行のアクセス許可は次のように表されます。

  • 読み取り:最初の位置の `+ r +`で示されます

  • 書き込み:2番目の位置にある「+ w +」で示されます

  • 実行:3番目の位置にある「+ x +」によって示されます。 いくつかの特別な場合には、ここに異なるキャラクターがあるかもしれません

これらの文字のいずれかの場所にあるハイフン( -)は、それぞれのクラスでそれぞれの許可が利用できないことを示します。 たとえば、ファイルの_group_トライアドが `+ r-+`の場合、ファイルはファイルに関連付けられているグループに対して「読み取り専用」になります。

読み取り、書き込み、実行について

ファイルのどのアクセス許可を読み取るかがわかったので、おそらく各アクセス許可が実際にユーザーに許可していることを知りたいでしょう。 各アクセス許可について個別に説明しますが、ファイルとディレクトリへの有意義なアクセスを可能にするために、それらを互いに組み合わせて使用​​することが多いことに留意してください。

以下に、3つの基本的な許可タイプがユーザーに付与するアクセスの概要を示します。

Read

通常のファイルの場合、読み取り許可により、ユーザーはファイルの内容を表示できます。

ディレクトリーの場合、読み取り許可により、ユーザーはディレクトリー内のファイルの名前を表示できます。

書きます

通常のファイルの場合、書き込み許可により、ユーザーはファイルを変更および削除できます。

ディレクトリの場合、書き込み許可により、ユーザーはディレクトリを削除し、その内容を変更(ディレクトリ内のファイルを作成、削除、および名前変更)し、ユーザーが読み取れるファイルの内容を変更できます。

実行する

通常のファイルの場合、実行権限により、ユーザーはファイルを実行できます(ユーザーには読み取り権限も必要です)。 そのため、ユーザーが実行する前に、実行可能プログラムとシェルスクリプトの実行権限を設定する必要があります。

ディレクトリの場合、実行許可により、ユーザーはアクセス(つまり、トラバース)できます(つまり、 + cd +)およびディレクトリ内のファイルに関するメタデータ( `+ ls -l +`にリストされている情報)にアクセスします。

モード(および権限)の例

ファイルのモードの読み方と各許可の意味を理解したので、概念をまとめるために、簡単な説明とともに、共通モードの例をいくつか示します。

  • + -rw ------- +:所有者のみがアクセスできるファイル

  • + -rwxr-xr-x +:システム上のすべてのユーザーが実行可能なファイル。 「世界で実行可能な」ファイル

  • + -rw-rw-rw- +:システム上のすべてのユーザーが変更できるファイル。 「world-writable」ファイル

  • + drwxr-xr-x +:システム上のすべてのユーザーが読み取りおよびアクセスできるディレクトリ

  • + drwxrwx --- +:所有者とグループによって(内容を含む)変更可能なディレクトリ

  • + drwxr-x --- +:グループがアクセス可能なディレクトリ

お気づきかもしれませんが、通常、ファイルの所有者は、他の2つのクラスと比較すると、ほとんどのアクセス許可を享受します。 通常、_group_クラスと_other_クラスには所有者の権限のサブセット(同等またはそれ以下)しかありません。 これは、特定の理由でファイルにアクセスする必要があるユーザーのみがファイルにアクセスできるようにする必要があるためです。

もう1つ注意すべき点は、多くのアクセス許可の組み合わせが可能であっても、ほとんどの状況で特定のアクセス許可の組み合わせだけが意味をなすことです。 たとえば、_write_または_execute_アクセスには、読むことができないものを変更するのが難しく、実行することができないため、ほとんどの場合_read_アクセスが伴います。

所有権と許可の変更

このチュートリアルを簡単にするために、ここではファイルの所有権と許可を変更する方法については説明しません。 これらのタスクを実行するために「+ chown 」、「 chgrp 」、および「 chmod +」を使用する方法については、このガイドを参照してください:https://www.digitalocean.com/community/tutorials/linux-permissions-basics- and-how-to-use-to-use-u-mask-on-a-vps#types-of-permissions [Linuxアクセス許可の基本とVPSでUmaskを使用する方法]。

結論

これで、Linuxで所有権と許可がどのように機能するかを十分に理解できるはずです。 Linuxの基本について詳しく知りたい場合は、このシリーズの次のチュートリアルを読むことを強くお勧めします。