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)

推薦する

Linux の vsftpd サービス構成の簡単な分析 (匿名、ユーザー、仮想ユーザー)

vsftpd の概要vsftpd は「very secure FTP daemon」の略称で、セキ...

ドロップダウンリストのJavaScript実装

この記事の例では、ドロップダウンリストを実装するためのJavaScriptの具体的なコードを参考まで...

ウェブページ制作と饅頭の関係(体験の共有)

昨日は遅くまで寝ていて、一日中起きていました。私の年齢では、夜更かしして本を書くのはもう無理のようで...

Chrome プラグイン (拡張機能) 開発ガイド (完全デモ)

目次前面に書かれた序文ChromeプラグインとはChrome プラグイン開発を学ぶことの意義は何です...

あまり使われていない、または誤解されている HTML タグ 10 個

ここでは、あまり使われていない、または誤解されている 10 個の HTML タグを紹介します。あまり...

ウェブページの要素の検査とソースコードの表示の違いについて

Chrome ブラウザで Web ページを開くと、ページを右クリックすると 2 つの非常によく似たオ...

CSS3で作られたレインボーボタンスタイル

結果: 実装コード: html <div class="buttons"&...

Vueは画像のズームとドラッグをサポートするリッチテキストエディタを統合しています

必要:ビジネス要件によると、写真をアップロードできる必要があり、アップロードされた写真はモバイル端末...

Linux での Makefile の書き方と使い方の詳細な説明

目次メイクファイルMakefile の命名とルールMakefile の仕組みMakefile変数Ma...

Tomcat が非同期サーブレットを実装する方法の詳細な説明

序文これまでの Tomcat シリーズの記事を通じて、私のブログを読んでいる学生は Tomcat に...

WeChat アプレット uniapp は左スワイプによる削除効果を実現します (完全なコード)

WeChatアプレットuniappは左スワイプで削除効果を実現成果を達成する1. スワイプしてリス...

MySQL ダーティ ページ フラッシュとテーブル スペースの縮小の原理の分析

mysql ダーティページWAL メカニズムにより、InnoDB はステートメントを更新するときに、...

Kali Linux Vmware 仮想マシンのインストール (図とテキスト)

準備: 1. VMwareワークステーションソフトウェアをインストールする2. Kali Linux...

Docker ベースの GitLab 環境をデプロイする方法と手順

注意:仮想マシンのメモリは2G以上が推奨され、 Alibaba Cloudのアクセラレーションイメー...

MySQL データベースのデータ テーブルの最適化、外部キーの分析、3 つのパラダイムの使用

この記事では、例を使用して、MySQL データベースのデータ テーブルの最適化、外部キーの使用、およ...