回答:
これはおそらく、人々が常にめちゃくちゃにしてしまう私の最も厄介なことの1つです。SUID / GUIDビットとsticky-bitは2つのまったく異なるものです。
あなたがするなら、man chmod
あなたはSUIDとスティッキービットについて読むことができます。manページはこちらにも。
抜粋
文字rwxXstは、影響を受けるユーザーのファイルモードビットを選択します。読み取り(r)、書き込み(w)、実行(またはディレクトリの検索)(x)、ファイルがディレクトリであるか、一部の実行権限を既に持っている場合のみ実行/検索ユーザ(X)、実行(S)に設定されたユーザまたはグループID、限定削除フラグまたは スティッキービット(T) 。
上記のmanページが言おうとしていることは、ユーザー8進数(rwxの最初のグループ)およびグループ8進数(rwxの2番目のグループ)のxビットがrwxrwxrwxを取る位置は、xがなる追加の状態を取ることができるということですs これが発生すると、このファイルは実行時に(シェルスクリプトだけでなくプログラムである場合)ファイルの所有者またはグループのアクセス許可で実行されます。
そのため、ファイルがルートによって所有され、SUIDビットがオンになっている場合、プログラムはルートとして実行されます。通常のユーザーとして実行しても。同じことがGUIDビットにも当てはまります。
抜粋
SETUIDおよびSETGIDビット
ユーザーが適切な特権を持っていない限り、ファイルのグループIDがユーザーの有効なグループIDまたはユーザーの補足グループIDのいずれかと一致しない場合、chmodは通常のファイルのset-group-IDビットをクリアします。追加の制限により、MODEまたはRFILEのset-user-IDおよびset-group-IDビットが無視される場合があります。この動作は、基になるchmodシステムコールのポリシーと機能に依存します。疑問がある場合は、基になるシステムの動作を確認してください。
chmodは、明示的に指定しない限り、ディレクトリのset-user-IDおよびset-group-IDビットを保持します。u + sやgsなどのシンボリックモードでビットを設定またはクリアできます。また、数値モードでビットを設定できます(クリアはできません)。
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-xrxが設定されます。
$ 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およびグループの実行可能ビットが有効(小文字s) -ビット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
このビットは、「制限付き削除ビット」と常に呼ばれるべきでした。このモードビットを有効にすると、ユーザーが所有者であるファイルとディレクトリのみを削除できるようにディレクトリが作成されます。
抜粋
制限付き削除フラグまたはスティッキービット
制限付き削除フラグまたはスティッキービットは単一ビットであり、その解釈はファイルタイプによって異なります。ディレクトリの場合
、非特権ユーザーがファイルまたはディレクトリを所有していない限り、ディレクトリ内のファイルを削除または名前変更できないようにします。これは、ディレクトリの制限付き削除フラグと呼ばれ、一般的に/ tmpなどの書き込み可能なディレクトリにあります。一部の古いシステム上の通常のファイルの場合、このビットはプログラムのテキスト画像をスワップデバイスに保存するため、実行時により速くロードされます。これはスティッキービットと呼ばれます。
ls
。明らかに、ファイルにスティッキービットを設定できるのはスーパーユーザーだけです。仮想メモリと共有ライブラリが導入された後、特にページャーがよりスマートになり、どのページを常駐させるかを動的に決定できるようになったため、重要性は低下しました。
ed
粘着性しかなかったと思います。
「プログラムの実行が終了した後、プログラムのイメージをメモリに保持するようシステムにフラグを付ける実行可能プログラムに適用されるスティッキービット。」
これはかなり時代遅れの情報だと思いますが、今日のほとんどのUnixはそれを無視しています。Linuxでは、スティッキービットはディレクトリにのみ関係します。参照してくださいここで、非常に有益なWikipediaの記事。
とにかく、その古い動作では、イメージ(データではなく「コード」のみ)は仮想メモリにのみ保持されました。通常は、実際のメモリではなくスワップされ、次回より速く実行されます。
スティッキービットとは何ですか?
スティッキービットは、ディレクトリに設定される許可ビットであり、そのディレクトリ内のファイルの所有者またはルートユーザーのみがファイルを削除または名前変更できるようにします。他のユーザーが作成したファイルを削除するために必要な特権を持つユーザーは他にいません。
これは、他のユーザーが完全なアクセス許可を持っているにもかかわらず、重要なフォルダーとそのコンテンツ(サブディレクトリとファイル)の削除を避けるためのセキュリティ対策です。