Linux 基本チュートリアル: 特別な権限 SUID、SGID、SBIT

Linux 基本チュートリアル: 特別な権限 SUID、SGID、SBIT

序文

Linux のファイルまたはディレクトリの権限については、共通の rwx 権限を知っておく必要があります。 Linuxの権限はあまり詳細ではなく、RWXの3種類しかありません。

  • r (読み取り): ファイルの場合は、ファイルの内容を読み取る権限を持ちます。ディレクトリの場合は、ディレクトリを参照する権限を持ちます。
  • w (書き込み): ファイルの場合、ファイルの内容を追加、変更、削除する権限を持ちます。ディレクトリの場合、ディレクトリ内でファイルを作成、削除、変更、移動する権限を持ちます。
  • x (eXecute、実行): ファイルの場合、ユーザーにはファイルを実行する権限が与えられます。ディレクトリの場合、ユーザーにはディレクトリに入る権限が与えられます。

1. ディレクトリへの読み取り専用アクセスでは、cd を使用してディレクトリに入ることはできません。入るには実行権限が必要です。

2. 実行権限のみではディレクトリに入ることはできますが、ディレクトリの内容を見ることはできません。ディレクトリ下のファイル名やディレクトリ名を見るには、読み取り権限が必要です。

3. ファイルを削除できるかどうかは、主に、ファイルが保存されているディレクトリにユーザーの書き込み権限があるかどうかによって決まります。ディレクトリにユーザーの書き込み権限がない場合、ファイルの所有者を除いて、ディレクトリ内のすべてのファイルを削除することはできません。

4. ディレクトリの w ビットが設定されていません。ディレクトリ内のファイルに対して w 権限を持っていても、ファイルに書き込むことはできません。

まず、次の2つの権限が何であるかを見てみましょう

/tmp ディレクトリと passwd ファイルの権限が非常に奇妙であることは非常に奇妙です。なぜ s 権限と t 権限があるのでしょうか?以下の内容を読めば理解できるでしょう。

1 スイド

s がファイル所有者の x 権限 (上記で見たファイル /usr/bin/passwd の権限 -rwsr-xr-x など) に表示される場合、それは SET UID と呼ばれ、SUID と略されます。SUID にはファイルに対してどのような制限と機能がありますか?

SUID権限はバイナリ実行ファイルに対してのみ有効です

実行者はファイルに対してx権限を持っています

この権限はこのファイルの実行中のみ有効です

実行者はファイル所有者の権限を持ちます。

たとえば、一般ユーザーが passwd コマンドを使用して自分のコマンドを変更する場合、実際に変更されるファイルは /etc/passwd ファイルです。このファイルはユーザー管理設定ファイルであり、root 権限でのみ変更できます。

この権限を持つのは root ユーザーだけなのに、なぜ passwd コマンドでパスワードを変更できるのでしょうか? これは、passwd に suid 権限ビットが設定されているためです。

このとき、一般ユーザーは passwd コマンドを実行して一時的に root 権限を取得し、間接的に /etc/passwd を変更して自分のパスワードを変更する権限を得ることができます。

2 SGID

ディレクトリまたはファイルが属するグループの x 権限に s が表示される場合、それは SET GID、または略して SGID と呼ばれます。SGID はファイルとディレクトリの分割に対してどのような機能を持っていますか?

2.1 SGIDディレクトリ

ユーザーがこのディレクトリに対してrとxの権限を持っている場合、ユーザーはこのディレクトリに入ることができます。

このディレクトリ内のユーザーのグループはディレクトリのグループになります

ユーザーがこのディレクトリで w 権限 (新しいファイルを作成できる) を持っている場合、ユーザーが作成した新しいファイルのグループは、このディレクトリのグループと同じになります。

2.2 SGIDペアファイル

SGIDはバイナリ実行ファイルに有効です

プログラム実行者はファイルに対して x 権限を持っている必要があります。

実行者は実行プロセス中にファイル グループのサポートを取得します (ファイル グループの権限を変更するために使用されます)

3 スビット

ディレクトリ内の他のユーザーの x 権限に s が表示される場合、それは Sticky Bit、または略して SBIT と呼ばれます。 SBIT の制限と機能は何ですか?

ファイルではなくディレクトリに対してのみ有効です。

ユーザーがこのディレクトリにファイルまたはディレクトリを作成すると (権限あり)、その新しく作成されたディレクトリまたはファイルを削除する権限を持つのは、ユーザーと root のみになります。

/tmp ディレクトリにはそのような権限があることがわかっています。

それでは検証してみましょう。まず、root アカウントを使用して tmp ファイルにファイル test を作成し、次に openstack (他のアカウント) を使用してディレクトリに入り、テスト ファイルを削除して、何が起こるかを確認します。

この方法ではファイルを削除できないことがわかります。 /temp ディレクトリには SBIT 権限があるためです。

4 SUID、SBID、SBITの操作方法

これらのフラグを操作するコマンドは、ファイル権限を操作するコマンドと同じで、どちらも chmod です。これを行うには 2 つの方法があります。

(1)シンボル種別変更許可

chmod u+s testbin-- testbin ファイルに setuid フラグを追加します。

chmod g+s testdir-- testdirディレクトリにsetgidフラグを追加します

chmod o+t testdir-- testdirディレクトリにスティッキーフラグを追加します

(2)デジタルタイプはファイルの権限を変更する

8 進数を使用します。一般的なファイルの場合、666、777、644 などの 3 つの 8 進数グループを使用してフラグを設定します。これらの特別なフラグを設定する場合は、この数字のグループに別の 8 進数グループを追加します。たとえば、4666、2777 などです。3 つの 8 進数の意味は次のとおりです。

アブ

a - setuid ビット、このビットが 1 の場合、setuid 4 を意味します ---

b - setgid ビット、このビットが 1 の場合、setgid 2 を意味します ---

c - スティッキービット、このビットが1の場合、スティッキー1を設定することを意味します---

これらのフラグを設定したら、ls -l を使用して表示できます。これらのフラグが存在する場合は、元の実行フラグの位置に表示されます。たとえば、

rwsrw-r--はsetuidフラグを示します

rwxrwsrw-はsetgidフラグがあることを示します

rwxrw-rwt はスティッキーフラグを示します

では、元の実行フラグ x はどこに行ったのでしょうか。システムでは、その位置に x があった場合、これらの特殊フラグは小文字 (s、s、t) で表示されるように規定されています。それ以外の場合は、大文字 (S、S、T) で表示されます。

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。

以下もご興味があるかもしれません:
  • Linux ファイル ディレクトリのデフォルトの権限 (詳細な説明)
  • Linux の特別な権限 SUID、SGID、SBIT の詳細な説明
  • Linux システムファイルのデフォルトの権限と特別な権限

<<:  読めばわかるVueの8つのヒント

>>:  MySQL 分離レベル操作プロセスの詳細説明 (cmd)

推薦する

MySQLのダウンロードとインストールのプロセスの詳細な説明

1: MySqlをダウンロードする公式サイトのダウンロードアドレス: https://dev.mys...

MySQLでSQLクエリ文がどのように実行されるかを分析する

目次1. MySQL論理アーキテクチャの概要2. コネクタクエリキャッシュ4. パーサー5. オプテ...

Vue2とVue3のライフサイクルの比較の詳細な理解

目次サイクル比較使用法要約するサイクル比較ヴュー2ヴュー3作成前設定作成された設定マウント前マウント...

HTMLの空リンクの役割についての簡単な説明

空のリンク:つまり、ターゲット エンドポイントとのリンクはありません。フォーマット <a hr...

初心者のためのWebページ作成: HTMLのハイパーリンクAタグの使い方を学ぶ

ハイパーリンク a タグはリンク ポイントを表し、英語の単語「anchor」の略語です。その機能は、...

MySQL が大規模トランザクションを避けるべき理由とその解決方法

何が大問題ですか?長時間実行され、長時間コミットされないトランザクションは、大規模トランザクションと...

エンタープライズプロダクション MySQL 最適化入門

Oracle、DB2、SQL Server などの他の大規模データベースと比較すると、MySQL に...

CentOS 8で自動更新を設定するための手順を完了する

データとコンピューターに対してできる最善のことは、それらを安全に保つことです。アップデートを有効にす...

mycat を使用して MySQL データベースの読み取りと書き込みの分離を実装する例

MyCATとはエンタープライズアプリケーション開発のための完全にオープンソースの大規模データベースク...

MySQL ストアド プロシージャのエラー処理例の詳細な説明

この記事では、例を使用して MySQL ストアド プロシージャのエラー処理について説明します。ご参考...

Node.jsはブレークポイント再開を実装する

目次ソリューション分析スライス履歴書のダウンロード具体的な解決プロセス論理的分析フロントエンドサーバ...

複数の画像を切り替えるJavaScript

この記事では、複数の画像を切り替えるJavaScriptの具体的なコードを参考までに紹介します。具体...

Vueのミックスインと継承について詳しく説明します

目次序文ミキシンMixin ノート (重複名)ローカルミックスイングローバル ミックスイン継承するミ...

シンプルなナビゲーションバー機能を実現するHTML+CSS

さっそく、コードを見てみましょう(初心者:特に言うことはありません) <!DOCTYPE ht...

Linux でのソース パッケージ インストールのサービス管理

目次1. ソースパッケージサービスの起動管理2. ソースパッケージサービスのセルフスタート管理3. ...