序文 Linux のファイルまたはディレクトリの権限については、通常の rwx 権限についてすべて知っている必要があります (Linux の rwx 権限の詳細については、私のブログ投稿 http://www.cnblogs.com/javaee6/p/3994750.html を参照してください)。まず、次の2つの権限が何であるかを見てみましょう /tmp ディレクトリと passwd ファイルの権限が非常に奇妙であることは非常に奇妙です。なぜ s 権限と t 権限があるのでしょうか?以下の内容を読めば理解できるでしょう。 setuid と setgid は、それぞれ実行時に uid ID を設定する、および実行時にグループ ID を設定することの略語です。これらを suid や sgid と略すことがよくあります。これらはファイル アクセスを制御する権限フラグであり、ユーザーはそれぞれ実行可能ファイルの所有者または所有者グループの権限で実行可能ファイルを実行できます。 注: この記事のデモ環境は Ubuntu 16.04 です。 スイド Linux では、すべてのアカウントのパスワードは /etc/shadow ファイルに記録され、このファイルを読み書きできるのは root だけです。 別の共通アカウント テスターがパスワードを変更する必要がある場合は、/etc/shadow ファイルにアクセスする必要があります。しかし、/etc/shadow ファイルにアクセスできるのは root だけです。これはどのように行われるのでしょうか?実際、テスター ユーザーは SUID 機能を使用して /etc/shadow ファイル内のパスワードを変更できます。 passwd プログラム ファイルの権限情報を見てみましょう。 上の画像の赤いボックス内の権限情報が少し奇妙です。所有者情報は rwx ではなく rws です。ファイル所有者の x 権限に s が表示される場合、それは SETUID BITS または SETUID と呼ばれ、その特性は次のとおりです。
次に、テスター ユーザーが SUID 権限を使用してパスワードを変更する方法を見てみましょう。
ただし、テスター ユーザーが cat コマンドを実行して /etc/shadow ファイルを読み取ると、機能しません。 理由は明らかです。テスターユーザーには /etc/shadow ファイルを読み取る権限がなく、cat プログラムが SUID に設定されていません。これら 2 つの状況は次の図で理解できます。 どのユーザーでも cat コマンドを使用して /etc/shadow ファイルの内容を読めるようにしたい場合も、非常に簡単です。SUID 権限を設定するだけです。 $ sudo chmod 4755 /bin/cat これで、cat に SUID 権限が与えられました。/etc/shadow の内容を cat できるかどうか確認してみましょう。これは非常に危険なので、次のコマンドを使用して cat の SUID 権限をすぐに削除します。 $ sudo chmod 755 /bin/cat SGID グループの x 権限に s フラグが表示される場合、それは SGID と呼ばれます。 SGID の特性は SUID の特性と同じです。/usr/bin/mlocate プログラムを使用してその使用方法を説明します。 mlocate プログラムは、データベース ファイル /var/lib/mlocate/mlocate.db を照会して高速なファイル検索を実行します。 mlocate プログラムの権限を次の図に示します。 明らかに、SGID 権限が設定されています。以下は、データベース ファイル /var/lib/mlocate/mlocate.db の権限情報です。明らかに、SGID 権限で設定されています。以下は、データベース ファイル /var/lib/mlocate/mlocate.db の権限情報です。 一般ユーザー tester が mlocate コマンドを実行すると、tester はユーザー グループ mlocate の実行権限を取得します。ユーザー グループ mlocate には mlocate.db の読み取り権限があるため、tester は mlocate.db を読み取ることができます。プログラムの実行プロセスを次の図に示します。 バイナリ プログラムに加えて、SGID はディレクトリでも使用できます。ディレクトリに SGID 権限が設定されている場合、次の機能が実行されます。
例を見てみましょう。testdir ディレクトリを作成し、その権限を次のように設定します。 現時点では、ディレクトリ testdir の所有者は nick であり、グループは tester です。 まず、nickfile というファイルを作成します。 このファイルの権限は特別なものではないようです。次に、testdir ディレクトリの SGID 権限を設定します。 $ sudo chmod 2775 テストディレクトリ 次に、ファイル nickfile2 を作成します。 新しく作成されたファイルが属するグループは tester です。 要約すると、SGID が通常のファイルに対して作用する場合、SUID と同様に、ファイルが実行されると、ユーザーはファイルが属するグループの権限を取得します。 SGID がディレクトリに適用されると、非常に重要な意味を持ちます。ユーザーがディレクトリに対して書き込み権限と実行権限を持っている場合、そのユーザーはそのディレクトリ内にファイルを作成できます。ディレクトリが SGID で変更された場合、そのディレクトリ内にユーザーが作成したファイルは、そのディレクトリが属するグループに属します。 スビット 実際、SBIT は SUID や SGID とはほとんど関係がありません。 SBIT は、制限付き削除フラグまたはスティッキー ビットの略語です。 SBIT は現在ディレクトリに対してのみ機能し、ファイル所有者以外のユーザーがファイルを削除できないようにするために使用されます。一般的な例は /tmp ディレクトリです。 権限情報の最後の t は、ディレクトリに SBIT 権限が設定されていることを示します。 SBIT がディレクトリに与える影響は次のとおりです。ユーザーがディレクトリ内に新しいファイルまたはディレクトリを作成すると、そのファイルまたはディレクトリを削除する権限を持つのはユーザーと root のみになります。 注意: SBIT はファイルでは機能しません。 SUID、SGID、SBIT権限を設定する 数値による権限の設定 SUID、SGID、SBIT 権限に対応する番号は次のとおりです。 SUID->4 SGID->2 SBIT->1 したがって、ファイル権限が「-rwxr-xr-x」のファイルに SUID 権限を設定する場合は、元の 755 の前に 4 を追加して、4755 にする必要があります。 $ chmod 4755 ファイル名 同様に、2 と 1 を使用して SGID および SBIT 権限を設定できます。設定が完了すると、ファイル権限の x がそれぞれ s、s、t に置き換えられます。 実際、S と T の状況も発生する可能性があります。 S と t は x 権限の代わりです。ただし、x 権限がない場合は、SUID、SGID、または SBIT 権限を追加した後、大文字の S または大文字の T として表示されます。たとえば、権限 666 のファイルに SUID、SGID、および SBIT 権限を追加します。 chmod 7666 nickfile を実行します。666 は「-rw-rw-rw」を意味し、x 権限がないため、最終的には「-rwSrwSrwT」になります。 シンボルの種類による権限の変更 権限を変更するには、数字を使用するだけでなく、記号も使用できます。 $ chmod u+s testfile # testfile ファイルに SUID 権限を追加します。 $ chmod g+s testdir # testdir ディレクトリに SGID 権限を追加します。 $ chmod o+t testdir # testdir ディレクトリに SBIT 権限を追加します。 要約する SUID、SGID、および SBIT 権限は特別な機能を実装するように設計されており、その目的は、ugo 権限では実現できないいくつかの使用シナリオを補うことです。 参照:
以下もご興味があるかもしれません:
|
<<: ドロップダウンボックス選択コンポーネントを実装するためのネイティブ js
>>: Mac に mysql5.7 をインストールするための完全な手順 (画像とテキスト付き)
非常に珍しいパラメータ文字化けの問題に遭遇しました。まずページを見てみましょう写真に示すように、月次...
この記事では、React Native ScrollViewのプルダウンリフレッシュ効果の具体的なコ...
Docker実行コマンドの使用docker run -d -p 9200:9200 -p 9300:...
1. 問題を発見する© は HTML の著作権記号ですが、間違ったフォントを選択す...
Mysql を完全にアンインストールするにはどうすればいいですか?以下の手順に従って実行してくださ...
背景:以前、コンテナ内のホストが提供する Redis サービスにアクセスする必要があるプロジェクトを...
uwsgi+nginx プロキシ Django をデプロイする場合、uwsgi を使用したアクセスは...
目次Webコンポーネントカスタム要素概要HTMLTemplateElement コンテンツ テンプレ...
私は最近 Linux を学び始めました。Ma Ge の umask に関する Linux コースを読...
序文コードを書く過程で、必然的にコードに何らかの変更を加えることになります。しかし、変更を加えるとき...
IE で ClearType をオンにした後に発生する透明フォントの問題を解決するには、透明要素に背...
プロフィールとは何ですか?特定の SQL のパフォーマンスを分析したい場合に使用できます。プロファイ...
現象:イメージを実行します (例: ubuntu14.04)。 docker run -it --r...
質問: インデックスは作成されているのに、Like ファジー クエリがまだ遅いのはなぜですか?インデ...
1. ネイティブネットワークリクエスト1. XMLHttpRequest (W3C 標準) // 約...