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)

推薦する

Nginx における accept lock の仕組みと実装の詳細な説明

序文nginx はマルチプロセス モデルを使用します。リクエストが届くと、システムはプロセスをロック...

DockerはElasticsearch7.6クラスタをインストールし、パスワードを設定します

Elasticsearch 6.8 以降、無料ユーザーは X-Pack のセキュリティ機能を使用でき...

Vue の動的メニュー、動的ルートの読み込みと更新の落とし穴

目次必要:アイデア:レッスン:テキストを共有する:要約する必要:インターフェイスからサブメニュー デ...

MySQL で not in を使用して null 値を含める問題を解決する

知らせ! ! ! uid が (a,b,c,null) に含まれないユーザーから * を選択します。...

JavaScript における var と let の違い

目次1. スコープはさまざまな方法で表現されます2. 変動昇進と非昇進の違い3. 一時的なデッドゾー...

Apache Bench ストレステストツールの実装原理と使用状況分析

1: スループット(1秒あたりのリクエスト数)サーバーの同時処理能力を定量的に表したもので、reqs...

開発効率の向上に役立つ 56 個の実用的な JavaScript ツール関数

目次1. デジタルオペレーション(1)指定された範囲内で乱数を生成する2. 配列操作(1)配列の順序...

JavaScript配列の簡単な紹介

目次配列の紹介配列リテラル2次元配列要約する配列の紹介配列- Arrayもオブジェクトですこれは通常...

Docker+Jenkinsによる自動デプロイの実現方法

Code Cloud を使用して Git コード ストレージ ウェアハウスを構築するhttps://...

MySQLの基本操作を詳しく解説(第2部)

序文この記事には1. データベースのいくつかの主要な制約2. テーブル間の関係制約:主キー制約: 機...

MySQLのカバーインデックスに関する知識ポイントのまとめ

インデックスにクエリする必要があるすべてのフィールドの値が含まれている(またはカバーしている)場合、...

Html、sHtml、XHtml の違いのまとめ

たとえば、<u>には終了文字がなく、ブラウザはそれを認識します。 SHTML は Ser...

mysql update文の実行プロセスの詳細な説明

以前、MySQL クエリ文の実行プロセスについての記事がありました。ここでは、更新文の実行プロセスを...

ReactでuseStateを使用する詳細な例

使用状態useState は、関数コンポーネント内で呼び出すことで、コンポーネントに内部状態を追加し...

CentOS7.6にMYSQL8.0をインストールする詳細な手順

1. 一般的に、CentOS では mariadb がデフォルトでインストールされているため、まず ...