[予約] LinuxのSUID SGID

著者: sparkdev

setuidとsetgidのは、略語の実行時に実行時にUID IDと設定されたグループIDを設定しています。私たちは通常、SUIDとSGID再び彼らと略します。彼らは、実行可能ファイルを実行する実行可能ファイルの所有者または所有者のグループの権限をユーザに許可するファイルアクセス許可フラグ(フラグ)を、制御します。
説明:この論文は、環境はUbuntuの16.04で示しています。

SOUTH

Linuxでは、すべてのアカウントのパスワードは、/ etc / shadowをこのファイルに記録され、rootだけが読み込まれ、このファイルに書き込むことができます。

別の普通会計のテスターはあなたのパスワードを変更する必要がある場合は、/ etc / shadowファイルにアクセスします。しかし、正確であるアクセス/ etc / shadowファイルに明らかに唯一のルートは、どのようにそれを行うには?実際には、テスターのユーザーがこのSUID機能を通じてである/ etc / shadowファイルにパスワードを変更することができます。次のようにのは、権限情報のpasswdファイルを見てみましょう:

代わりのrwxのRWSのための奇妙な、所有者情報の赤いボックスの図の許可情報。X sは、ファイルの所有者の許可に表示され、またはSETUID BITS SETUID、以下の機能がコールされると:

  • SUIDバイナリ実行権限のみ有効
  • バイナリ実行可能ファイルの実行者がxに権限を持っている場合は、エグゼキュータは、ファイルの所有者の権利を持っています
  • 唯一の有効なバイナリ実行ファイルの実装では、このプロセスの権限

ここでは、ユーザーがパスワードの変更を完了するために、テスターSUID権限をどのように使用するかを見てみましょう。

  1. ユーザーがテスターは/ usr / binに/ passwdのこのプログラムを実行する権限を持っている、プログラムはpasswdを実行することができます
  2. ルートにはpasswdプログラムの所有者
  3. プロセステスターのユーザーは、passwdのプログラムが一時的にroot権限を取得します実行します
  4. したがって、ユーザプログラムの実行中に、テスタは、passwdファイル/ etc / shadowファイルを修正することができます

しかし、実際に動作していないユーザコマンド猫/ etc / shadowファイルを読むために、テスタで実行された場合:

理由は明確である猫のプログラムはSUIDに設定されていない一方で、テスターは、などのユーザー/権限/ shadowファイルを読み取れません。私たちは、次の図でこの2つのケースを理解することができます。

あなたはすべてのユーザーは、/ etc / shadowファイルにcatコマンドを読みたい場合も、その上でそれにSUID権限を設定することは非常に簡単です:

$ sudoをchmodの4755 / binに/猫

今、猫はすでに、それを試してみる、SUID権限を持つ猫/の内容など/影の準備ができていません。それは非常に安全ではないので、私たちはSUIDの権限のうちの猫を削除するには、次のコマンドを経ます:

$ sudoをchmodの755 / binに/猫

SGID

ときのロゴは、SGIDと呼ばれるX-特権ユーザグループに表示されます。SGID SUID特性と同じ、我々は、/ usr / binに/ mlocateプログラムによってその使用を実証することがあります。データベース・ファイルを照会することによって、迅速なファイル検索のためのmlocateプログラム/var/lib/mlocate/mlocate.db。アクセス権mlocate手順は以下の通り:

もちろん、それはSGIDのパーミッションを設定しました。もちろん、それはSGIDのパーミッションを設定し、次は、データベースファイルのパーミッション/var/lib/mlocate/mlocate.db情報です。以下は、データベースファイルのパーミッション/var/lib/mlocate/mlocate.db情報です。

Mlocate普通のユーザーがコマンドテスターを実行し、テスターは、ユーザーグループの実行権限を取得しますmlocate、およびユーザーがグループmlocate mlocate.dbへの読み取りアクセス権を持っているので、そのテスターはmlocate.dbを読むことができます。以下に示すように、プログラムの実行時:

バイナリに加えて、SGIDもディレクトリ内で使用することができます。ディレクトリにはSGID権限を設定されている場合、それは次の機能があります。

  1. ユーザーがこのディレクトリのRおよびX権限を持っている場合、ユーザーがディレクトリを入力することができます
  2. このディレクトリ内のユーザグループにユーザにアクティブユーザのグループディレクトリであります
  3. ユーザーはこのディレクトリにワットへのアクセス権を持っている場合、ユーザーは、ユーザーとユーザーグループで同じディレクトリを作成し、新しいファイルを設定します

TESTDIRディレクトリを作成し、例を見てみましょう、次のようにディレクトリのアクセス権が設定されています。

所有者はニックですTESTDIRこのポイント・ディレクトリで、グループは、テスターを属します。
のnickfileという名前のファイルを作成します。

ファイルのパーミッションは特別何も見えません。その後TESTDIRカタログにSGID許可を設定します。

$ sudoをchmodの2775 TESTDIR

次に、ファイルnickfile2を作成します。

ファイルの新しいセットは、テスターに​​属し!

ファイルが実行される一般的なSGIDファイル、および同様のSUID、に適用された場合、要約すると、ファイルのアクセス権を取得するユーザーが属しています。SGIDがディレクトリに作用すると、意味は非常に重要です。ディレクトリがSGIDに変更された場合、ユーザーがディレクトリのパーミッションを書き込み、実行がある場合には、ユーザーがディレクトリ内のファイルを作成することができ、このディレクトリに作成されたユーザーがグループに属しているファイルは、このディレクトリに属します。

SBIT

実際には、SUIDとSGIDとSBITとの間の関係は重要ではありません。
SBITは削除制限フラグまたはスティッキービット短いです。
SBITノンストップ・ファイルの所有者がファイルを削除するための現在唯一の有効なディレクトリ。もっと一般的な例は、/ tmpディレクトリであります:

ディレクトリがSBIT権限を設定されていることを示すT最後の権限情報。ディレクトリのSBITの役割は次のとおりです。ユーザーがディレクトリに新しいファイルまたはディレクトリを作成し、削除する力を持っているだけで自分自身を根絶するとき。

SUID、SGID、SBIT権を設定します

デジタルセットの権限は
次のようにSUID、SGID、数字に対応するSBIT権は以下のとおりです。

SUID-> 4 
SGID-> 2 
SBIT-> 1

あなたはファイルのパーミッションSUIDファイル「-rwxr-XR-X」の権限を設定したいのであれば、それはオリジナルの755プラス4の前に必要であり、それは、4755です。

$ chmodの4755名

同様に、図1および図2は、SGID権限を設定し、SBITするために使用することができます。sのそれぞれを使用し設定した後、S、Tの代わりにxのファイル許可値。

実際には、SおよびTもまた起こり得ます。それは、xに権限を持っているSUID、SGIDを、追加しない場合SBIT権は大文字Sまたは資本Tとして表示されます後にS xとtが、この権威に代わるものですが、例えば、我々は666のファイルのパーミッションにSUID、SGID、SBIT権限を追加します。

666は "-rw-RW-RW" を表しているため、chmodの7666 nickfileを実行するには、X許可はしませんでしたので、私は最終的に "-rwSrwSrwT" となりました。

変更権限のシンボルタイプ

変更するデジタル著作権の使用に加えて、あなたはまた、シンボルを使用することができます。

ファイルテストファイルのための$ chmodのU +のテストファイルの#プラスSUIDパーミッション。
SGIDのパーミッションを追加する$ chmodのG + S TESTDIR#のTESTDIRディレクトリ。
$ chmodのO + T TESTDIRの#プラスTESTDIRディレクトリにSBIT許可。

概要

SUID、SGID、SBIT当局は、いくつかの使用シナリオのための権利を実現することができないUGOを作ることを目指し、特別な機能とデザインを、実現することです。

参考:
chmodのmanページ
のsetuid-ウィキペディア
のSUID、SGIDとSBIT素晴らしい使用中のlinux
Linuxの特別な権限SUID、SGID、SBIT

 

おすすめ

転載: www.cnblogs.com/drkang/p/11588192.html