技術共有

Linux 権限の詳細な分析 - 原則の探求

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

はじめに: このセクションでは主に Linux 権限に関連する内容について説明します。root アカウントを使用すると Linux 権限を実感できないため、このセクションの関連内容を学習し、いくつかの実験テストを行うには通常のアカウントを使用する必要があります。 次に、Linux のパーミッションを研究することで、ファイルを操作するときに常にパーミッションが失われる理由を知ることができ、ルート ディレクトリのファイル パーミッションと通常のユーザーのホーム ディレクトリのファイル パーミッションの違いを知ることができます。

ps: このセクションは、Linux を学習していて Linux コマンドをいくつか知っている友人に適しています。

ユーザーの分類

//まず、Linux におけるユーザーの分類を理解しましょう。

  • 根:スーパーユーザー、管理者
  • 一般ユーザー:つまり、私たちが作成した一部のユーザーです。 (addusr からの一般ユーザー)

これら 2 つのユーザーの基本的な違いは、root ユーザーはアクセス許可によって制限されないのに対し、一般ユーザーはアクセス許可によって制限されることです。

//す

一般ユーザーは root ユーザーに切り替えることができ、root ユーザーも一般ユーザーに切り替えることができます。

一般ユーザーから root ユーザーに切り替えます。

最初のもの - su + root パスワード。 root ユーザーに切り替えることができます。 この時点で切り替えると、切り替え後もユーザーの位置は変わりません。

2 番目のタイプ - su- + root パスワード。 また、root ユーザーに切り替えます。 この時点で切り替えると、切り替え後のユーザーの場所が root 自身のホーム ディレクトリになります。

上記 2 つの状況で切り替えた後、cral + d を使用して元に戻すことができます。

root ユーザーから通常ユーザーへの切り替え - root ユーザーから通常ユーザーへの切り替えにはパスワードは必要なく、直接切り替えることができます。

一般ユーザーが一般ユーザーに切り替わります

一般に、一般ユーザーが一般ユーザーに切り替えるには、次の 2 つの方法があります。

1 つ目 - 通常のユーザーのパスワードを持っている場合は、su + ユーザー + ユーザーのパスワードを使用して ID を切り替えることができます。

2 番目のタイプ - 最初に root ユーザーに切り替え (上記の切り替え方法を参照)、次に root ID を通じて指定されたユーザーに直接切り替えます。

cral + d を使用すると、意識アイデンティティの切り替えに戻ることができることに注意してください。

コマンド権限の昇格 : コマンドを実行するとき、root ユーザーに切り替えることはできません。現時点では、sudu + コマンド + 現在のユーザーのパスワードを使用して、いずれかのコマンドの権限を昇格するだけです。友人はここで質問するかもしれません。特定のコマンドの権限を昇格するために、なぜ root パスワードではなく自分のパスワードを入力する必要があるのですか? これは、このコマンド権限の昇格が条件付きであるためです。つまり、ユーザーがシステムのホワイトリストに追加された場合にのみ、コマンド権限の昇格を実行できます。 ホワイトリストに追加されていない場合、権限昇格コマンドは役に立ちません。

許可とは何ですか

俗語では、許可とは、何かをすることが許可されているかどうかを指します。

ユーザーの ID は、所有者、グループ、その他に分類されます。

次の一連のコマンドラインを見てみましょう。

ここで、最初の _mian_yang は最初はファイルの所有者を表し、2 番目の _mian_yang はファイルが属するグループを表します。 つまり、これらのファイルの所有者は _mian_yang であり、_mian_yang は所有者の ID であり、これらのファイルが属するグループは _mian_yang です。ユーザーがグループ _mian_yang に所属している場合、そのユーザーがそのグループの ID になります。ユーザーがどちらに属しているか、ユーザーが _mian_yang ではなく、_mian_yang が属するグループにも属していない場合。 その場合、このユーザーは他の人のアイデンティティになります。

したがって、張三という名前の校長がいる場合、張三は自分の校長室に行きたいと考えます。 そこでお聞きしたいのですが、張三は張三だから校長室に行けるのか、それとも校長だから行けるのか。 ここでの明白な理由は、彼は校長であるため、自分の校長室に行くことができるということです。では、ファイルについては、このユーザーであるため、このファイルにアクセスできるのでしょうか?それともユーザー ID が原因でしょうか? 答えはアイデンティティです。つまり、権限認証がアイデンティティとなる。

2番目の質問は、携帯電話にはビデオを見たり、情報を確認したり、ゲームをしたりできるさまざまな機能があることは誰もが知っています。 これらは携帯電話が持つ属性といえるでしょう。 しかし、お腹が空いているときに、携帯電話を食べて空腹を解消することはできません。 食品として利用できるというのは、携帯電話にはない特性です。 だから、どんなことをしても、最高の権力者であっても、携帯電話が食料になることは許されないのです。 2 番目の点、つまり、権限は物の属性にも関係していることがわかります。

// ID とユーザーの関係

3 種類の権限について説明した後、前のユーザー分類に基づいて、権限とユーザー分類の関係を考えてみましょう。

まず、一般ユーザの場合、この一般ユーザは、ファイルの所有者、ファイルが属するグループ、またはその他の人々である可能性があります。

root ユーザーの場合、root ユーザーはファイルの所有者、ファイルが属するグループ、またはその他の人々である可能性があります。

それで、それはどのように現れるのでしょうか?つまり、Linux はこのユーザーの身元をどのように判断するのでしょうか? この写真を見てみましょう:

緑とオレンジのボックスの場合、緑のボックスが所有者で、オレンジのボックスが属するグループです。 したがって、ログインしたユーザーがファイルにアクセスするときは、まず自分がファイルの所有者であるかどうかを確認する必要があります。所有者でない場合は、そのファイルが属しているグループであるかどうかを確認する必要があります。 そうでない場合は、他の人です。

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

引き続きこの画像を見てください。この画像の内側のピンクのボックスは各 ID の権限です。 緑色の横棒は所有者の権限、オレンジ色の横棒はグループの権限、青色の横棒は他の人の権限です。 このうち、各アイデンティティには 3 つのパーミッション rwx があり、これら 3 つのパーミッションがグループとなり、これら 3 つのパーミッションの位置が決まります。最初の位置は読み取り用、2 番目の位置は書き込み用、3 番目の位置は実行可能です。これら 3 つの位置は順序が崩れることはなく、それぞれの位置の意味が決まります。そして、各場所には「はい」または「いいえ」のみがあり、指定された権限があります。

ここで考えてみましょう。なぜグループに所属するのに許可が必要なのでしょうか。

Zhang San と Li Si は面接のために企業に入り、最終的に同じ企業のインターンとなり、それぞれグループ A とグループ B に割り当てられたとします。 さらに、Zhang San 氏はグループ A、Li Si 氏はグループ B に所属しています。現在、同社はこれら 2 つのグループが同時にソフトウェアを開発できるようにしています。 ある日、Zhang San は非常に強力なコードをたくさん書きました。Li Si はそれを見てもらいたがりましたが、Zhang San は Li Si にそれを見られたくありませんでした。しかし、ある日、リーダーは張三が書いたコードを見たいと考えますが、張三がコードの読み取り許可を解除すると、李斯はそれを見ることができるため、これには彼の所属するグループが役割を果たします。時間。 このリーダーをこのグループに所属させると、私はこの番組を見ることができ、リーダーも見ることができますが、他の人は見ることができません。

権限の変更

権限を変更できるのは 2 人だけです。1 人は所有者、もう 1 人は root です。

メソッド:chmod u + rwx 所有者が変更した権限を修正し、所有者に権限を追加(r 読み取り権限、w 書き込み権限、x 実行権限)

chmod u-rwx は、所有者の権限を変更し、対応する権限を所有者から減算します。

chmod g+rwx は、所属するグループの権限を変更し、所属するグループに権限を追加します。

chmod g-rwx は、所属するグループの権限を変更し、所属するグループに権限を追加します。

chmod g-rwx は、他の人の権限を変更し、他の人に権限を追加します。

chmod g-rwx は、他の人の権限を変更し、他の人に権限を追加します。

また、chmod u+rwx および g+rwx を使用して、複数の ID にアクセス許可を与えることもできます。これは、それらが属するグループと所有者にアクセス許可を追加することを意味し、アクセス許可を減算することはその逆です。

たとえば、すべての ID にアクセス許可を一度に追加する場合は、chmod a+rwx を実行します。アクセス許可を削除する場合はその逆が当てはまります。

さらに、アクセス許可の変更に加えて、ファイルの所有者やグループも変更できます。

ファイルの所有者を変更する: ユーザー ファイルを chown して、自分のファイルを誰かに渡し、所有者を変更します。

ファイルが属するグループを変更します: chgrp ユーザーファイルが属するグループを変更します。

上記の 2 つの指示には、対応するユーザーの同意が必要です。通常、2 つの方法があります。1 つは権限を昇格する方法、もう 1 つはオフラインで通信する方法です。

権限に関しては、ll を使用して表示されるすべての場所の権限が決定されるため、その場所に権限があることを表すには 1 を使用し、その場所に権限がないことを表すには 0 を使用できます。 したがって、111 と 110 を使用して ID の権限を表すことができます。たとえば、111 は読み取り、書き込み、実行を意味します。 111 は 7 なので、3 つの ID は 777 のように 3 つの 8 進数で表すことができます。

したがって、chmod 777 のように権限を変更できます。これは、すべての ID にすべての権限を与えることを意味します。

次に、例を見てみましょう。

ここで、ユーザー _mian_yang の所有者ステータスには読み取り権限がありますが、書き込み権限はありません。彼のグループ ID には読み取り権限と書き込み権限があります。

現時点で、_mian_yang はこのファイルに書き込むことができますか?

答えは「いいえ」です。ユーザーが自分の ID を認証する場合、最初に所有者を認証し、次に自分が属するグループを認証し、最後に他の ID を認証するだけであるためです。

umask

ファイルを作成するときにアクセス許可がこのように表示されるのはなぜですか?

まず最初に知っておく必要があるのは、図のパーミッションはファイルによって作成される最終的なパーミッションであり、実際には開始パーミッションも持っているということです。ディレクトリ ファイルのデフォルトの開始パーミッションは 777 で、通常のファイルのデフォルトは 777 です。 666.しかし、最終的に作成されたアクセス許可がディレクトリ ファイルの場合は 775、通常のファイルの場合は 664 であるのはなぜでしょうか?

これは、システムにデフォルトで umask (許可マスク) が存在するためです。 パーミッション マスクは、umask に表示されるパーミッションが最終的なパーミッションには表示されないことを意味します。ここでの計算ルールは、デフォルトのパーミッション - パーミッション マスクではなく、最終的なパーミッション = デフォルトのパーミッション & (~ パーミッション マスク) です。

同時に、許可マスクを特定の番号に変更する umask 番号などの umask も変更できます。

ディレクトリの読み書きの意味

ディレクトリの読み取り: 現在のディレクトリ内のファイルの内容を表示できます。

ディレクトリの書き込み: ファイルの作成、削除、変更が可能になります。

実行可能ディレクトリ: ディレクトリに入ることが許可されているかどうか。

粘着ビット

実際には、データを共有したいが、ホーム ディレクトリの下にディレクトリを作成すると、他のユーザーはアクセスできないという要件が発生することがあります。したがって、このディレクトリはルート ディレクトリの下にのみ作成できますが、ルート ディレクトリのデフォルトの権限は dr-xr-xr-x です。つまり、3 つの ID は読み取りと実行のみが可能で、ディレクトリを自由に作成することはできません。したがって、root アカウントを使用してディレクトリを作成する必要があります。

このファイルを作成した後、他の ID がこのファイルの読み取り、書き込み、実行を行うように設定できます。そうしないと、ファイルを共有できません。 ただし、ユーザーがそのディレクトリにファイルを作成した場合、そのディレクトリには書き込み権限があるため、他のユーザーがそのファイルを自由に削除できます。そこで、この時点でこのファイルを保護するために、スティッキー ビット操作が追加されました。 このスティッキー ビットの動作により、ユーザーが作成したファイルはユーザー自身または root だけが削除できることが保証されます。

したがって、スティッキー ビットはディレクトリ (通常は共有ディレクトリ) に特別に設定された権限であり、誰でもディレクトリ内のファイルを追加、削除、確認、変更できますが、ファイルを削除できるのは所有者とルートだけであり、他の人はできません。できる。

------------------

このセクションはこれですべてです。

私のメモは次のとおりです。