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)

推薦する

Ubuntu 18.04の下のディレクトリにディスクをマウントします

導入この記事では、Ubuntu 18.04 デスクトップ システムでディスクを目的のディレクトリにマ...

Dockerがsudo操作を使用する必要がある問題を解決する

手順は以下のとおりです1. dockerグループを作成する: sudo groupadd docke...

スケルトンスクリーン効果を実現する CSS

ネットワーク データを読み込むときは、ユーザー エクスペリエンスを向上させるために、通常は円形の読み...

Nginx+Tomcat 負荷分散クラスタのインストールと構成のケースの詳細な説明

目次序文1. Nginx+Tomcat 2. Nginxサーバーを構成する3. Tomcatアプリケ...

Docker共通コマンドの詳しい解説 Study03

目次1. ヘルプコマンド2. ミラーコマンド3. コンテナコマンド1. ヘルプコマンド1. 現在のD...

Net Core実装プロセス分析のDoc​​kerインストールと展開

1. Dockerのインストールと設定 #CentOS をインストールし、Docker パッケージを...

Nginx リバース プロキシから go-fastdfs へのケースの説明

背景go-fastdfs は、http プロトコルをサポートする分散ファイルシステムです。一般的なプ...

MySQLデータベースイベントスケジュール実行タスクの詳細な説明

1. 背景プロジェクトの業務が進むにつれて、データベース テーブルの数がどんどん大きくなり、ハードデ...

JavaScript parseInt() と Number() の違いのケーススタディ

学習目標: parseInt() と Number() という 2 つの関数は、文字列をデータ型に変...

HTMLにスクリプトを追加する2つの方法と注意点

HTML に <script> スクリプトを追加する方法: 1. HTMLにJavaSc...

CentOS8でルートパスワードを素早く変更する方法

Centos8仮想マシンを起動し、上下キーを押して図1のインターフェースの最初の行を選択します。図1...

JavaScript の setTimeout と setTimeinterval の使用例の説明

どちらの方法も、一定時間後に JavaScript コードを実行するために使用できますが、それぞれに...

Vueモバイル端末が指のスライド効果を実現

この記事の例では、Vueモバイル端末で指のスライド効果を実現するための具体的なコードを紹介します。具...

Dockerデータを完全にクリーンアップする方法

目次定期的に剪定するミラーエビクションコンテナのクリーンアップネットワークソート体積の蒸発完全にクリ...

ウェブページ作成の基本宣言文書型記述(DTD

CSS レイアウトを使用して WEB 標準に準拠した Web ページを作成することは、jb51.ne...