GNU/Linux >> Linux の 問題 >  >> Linux

スティッキービットはどのように機能しますか?

SUID

スティッキービット プログラムの実行が終了した後、プログラムのイメージをメモリに保持するためにシステムにフラグを立てる実行可能プログラムに適用されます。

しかし、それがメモリに何が保存されているのかわかりません。そして、この場合、どうやってそれらを見ることができますか?

承認された回答:

これはおそらく、人々がいつも台無しにする私の最も厄介なことの1つです。 SUID/GUIDビットとスティッキービットは2つのまったく異なるものです。

man chmodを実行する場合 SUIDとスティッキービットについて読むことができます。マニュアルページもここにあります。

背景

抜粋

文字rwxXst 影響を受けるユーザーのファイルモードビットを選択します:読み取り
(r)、書き込み(w)、実行(またはディレクトリの検索)(x)、実行/検索のみ
ファイルがディレクトリであるか、すでに一部のユーザーの実行権限を持っている
(X)、実行時にユーザーまたはグループIDを設定する 、制限付き削除フラグまたはスティッキービット(t)

SUID / GUID

上記のマニュアルページが言おうとしているのは、ユーザーの8進数(rwxの1番目のグループ)とグループの8進数(rwxの2番目のグループ)のrwxrwxrwxでxビットがとる位置は、xが次のようになる追加の状態を取ることができるということです。 s。これが発生すると、このファイルを実行すると(シェルスクリプトだけでなくプログラムの場合)、ファイルの所有者またはグループの権限で実行されます。

したがって、ファイルがrootによって所有されていて、SUIDビットがオンになっている場合、プログラムはrootとして実行されます。通常のユーザーとして実行しても。同じことがGUIDビットにも当てはまります。

抜粋

SETUIDおよびSETGIDビット

chmodは、ファイルのグループIDがユーザーの実効グループIDまたはユーザーの補助グループIDの1つと一致しない場合、ユーザーが適切な権限を持っていない限り、通常のファイルのset-group-IDビットをクリアします。
追加の制限により、MODEまたはRFILEのset-user-IDおよびset-group-IDビットが無視される場合があります。
この動作は、基になるchmodシステムコールのポリシーと機能によって異なります。
疑わしい場合は、
基盤となるシステムの動作を確認してください。

chmodは、明示的に指定しない限り、ディレクトリのset-user-IDビットとset-group-IDビットを保持します。

u + sやg-sなどのシンボリックモードでビットを設定またはクリアできます。また、数値モードで
ビットを設定(クリアはできません)できます。

SUID/GUIDの例

suid/GUIDなし –ビット rwxr-xr-x 設定されています。

$ ls -lt b.pl
-rwxr-xr-x 1 root root 179 Jan  9 01:01 b.pl

suidとユーザーの実行可能ビットが有効になっている(小文字のs) –ビット rwsr-x-r-x 設定されています。

$ chmod u+s b.pl 
$ ls -lt b.pl 
-rwsr-xr-x 1 root root 179 Jan  9 01:01 b.pl

suidが有効で実行可能ビットが無効(大文字のS) –ビット rwSr-xr-x 設定されています。

$ chmod u-x b.pl
$ ls -lt b.pl 
-rwSr-xr-x 1 root root 179 Jan  9 01:01 b.pl

GUIDおよびグループの実行可能ビットが有効(小文字) –ビット rwxr-sr-x 設定されています。

$ chmod g+s b.pl
$  ls -lt b.pl 
-rwxr-sr-x 1 root root 179 Jan  9 01:01 b.pl

GUIDが有効で実行可能ビットが無効(大文字のS) –ビット rwxr-Sr-x 設定されています。

$ chmod g-x b.pl
$  ls -lt b.pl 
-rwxr-Sr-x 1 root root 179 Jan  9 01:01 b.pl

スティッキービット

一方、スティッキービットはtとして示されます 、/tmpなど ディレクトリ:

$ ls -l /|grep tmp
drwxrwxrwt. 168 root root 28672 Jun 14 08:36 tmp

このビットは、それが実際に暗示していることを考えると、常に「制限付き削除ビット」と呼ばれるべきでした。このモードビットを有効にすると、ユーザーが所有者であるファイルとディレクトリのみを削除できるようにディレクトリが作成されます。

関連:8万ファイルのゴミ箱。 「空のゴミ箱」は機能しません!?

抜粋

制限付き削除フラグまたはスティッキービット

制限付き削除フラグまたはスティッキービットは単一ビットであり、その
解釈はファイルタイプによって異なります。ディレクトリの場合、
特権のないユーザーが、ファイルまたはディレクトリを所有していない限り、
ディレクトリ内のファイルを削除または名前変更することを防ぎます。これは、ディレクトリの
制限付き削除フラグと呼ばれ、/tmpなどの
誰でも書き込み可能なディレクトリで一般的に見られます。一部の古いシステムの通常のファイルの場合、
ビットはプログラムのテキストイメージをスワップデバイスに保存するため、
実行時にロードが速くなります。これはスティッキービットと呼ばれます。


Linux
  1. Awkの「!a [$ 0] ++」はどのように機能しますか?

  2. .bashrcの目的とそれはどのように機能しますか?

  3. 「ls」コマンドは Linux/Unix でどのように機能しますか?

  1. rm はどのように機能しますか? rm は何をしますか?

  2. sig_atomic_t は実際にどのように機能しますか?

  3. setuid ビットの動作に一貫性がないのはなぜですか?

  1. NGINXとは何ですか?それはどのように機能しますか?

  2. sudoの内部はどのように機能しますか?

  3. Ssh – Tcp-keepaliveはSshでどのように機能しますか?