序章

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

このチュートリアルでは、Linuxの所有権と権限を表示および理解する方法について説明します。 パーミッションを変更する方法のチュートリアルをお探しの場合は、次のガイドをご覧ください:Linuxパーミッションの基本とVPSでのUmaskの使用方法

前提条件

このシリーズの以前のチュートリアルでカバーされている概念を理解していることを確認してください。

このチュートリアルに従うためにLinuxサーバーにアクセスする必要は厳密にはありませんが、Linuxサーバーを使用すると、実際に体験することができます。 設定したい場合は、このリンクをチェックしてください。

ユーザーについて

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

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

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

cat /etc/passwd

スーパーユーザー

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

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

グループについて

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

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

cat /etc/group

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

所有権と権限の表示

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

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

ls -l

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

これは、出力の各列のラベルが付いた、出力がどのように見えるかのスクリーンショットの例です。

ls -l

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

理解モード

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

Mode and permissions breakdown

ファイルタイプ

Linuxには、normalspecialの2つの基本的なタイプのファイルがあります。 ファイルタイプは、ファイルのモードの最初の文字で示されます。このガイドでは、これをファイルタイプフィールドと呼びます。

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

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

権限クラス

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

どのユーザーが各権限クラスに属しているかを見てみましょう。

  • ユーザー:ファイルの所有者はこのクラスに属しています
  • グループ:ファイルのグループのメンバーはこのクラスに属しています
  • その他userまたはgroupクラスに属していないユーザーはすべてこのクラスに属します。

シンボリックパーミッションの読み取り

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

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

  • 読み取り:最初の位置にあるrで示されます
  • 書き込み:2番目の位置にあるwで示されます
  • Execute :3番目の位置にあるxで示されます。 特別な場合には、ここに別のキャラクターがいる可能性があります

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

読み取り、書き込み、実行を理解する

ファイルのどのパーミッションを読み取るかがわかったので、各パーミッションが実際にユーザーに何を許可しているかを知りたいと思うかもしれません。 それぞれの権限について個別に説明しますが、ファイルやディレクトリへの有意義なアクセスを可能にするために、それらは互いに組み合わせて使用されることが多いことに注意してください。

これは、3つの基本的なアクセス許可タイプがユーザーに付与するアクセスの簡単な内訳です。

読む

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

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

書く

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

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

実行する

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

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

モード(およびアクセス許可)の例

ファイルのモードを読み取る方法と、各権限の意味を理解したところで、概念をまとめるために、一般的なモードの例をいくつか紹介し、簡単に説明します。

  • -rw-------:所有者のみがアクセスできるファイル
  • -rwxr-xr-x:システム上のすべてのユーザーが実行できるファイル。 「世界で実行可能な」ファイル
  • -rw-rw-rw-:システム上のすべてのユーザーが変更できるファイル。 「誰でも書き込み可能な」ファイル
  • drwxr-xr-x:システム上のすべてのユーザーが読み取ってアクセスできるディレクトリ
  • drwxrwx---:所有者とグループによって(その内容を含めて)変更可能なディレクトリ
  • drwxr-x---:そのグループがアクセスできるディレクトリ

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

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

所有権と権限の変更

このチュートリアルを簡単にするために、ここではファイルの所有権とアクセス許可を変更する方法については説明しません。 chownchgrp、およびchmodを使用してこれらのタスクを実行する方法については、次のガイドを参照してください:Linuxパーミッションの基本とVPSでのUmaskの使用方法

結論

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