「ls -ld / tmp」の出力の「t」文字は何ですか?


94

コマンドを実行する  ls -ld /tmpと、出力は次のようになります。

drwxrwxrwt 30 root root 20480 Mar 11 14:17 /tmp

そこで、主に2つの質問があります。

  • t許可後の手紙は何ですか?
  • 私の知る限り/tmpでは、システム内のさまざまなユーザーに関連する一時ファイルを作成するために使用されていますが、どうして許可がありrwxrwxrwxますか(777)?

これは私にとって間違っているようです。ここで何が起こっているのかを理解するためにあなたの助けが必要です。


8
ウィキペディアの記事を読んでください。こちらの回答よりもましです。
ジル14年


OKなぜ、/ tmpからUpdateまたは新しいrpmパッケージをインストールすると、スティッキービットが削除されるのですか?

回答:


112

スティッキービットとは何ですか?

スティッキービットは、ディレクトリに設定される許可ビットで、そのディレクトリ内のファイルの所有者、ディレクトリの所有者、またはルートユーザーのみがファイルを削除または名前変更できるようにします。他のユーザーが作成したファイルを削除するために必要な特権を持っているユーザーは他にいません。

これは、重要なフォルダーとそのコンテンツ(サブディレクトリとファイル)の削除を回避するためのセキュリティ対策ですが、他のユーザーには完全な権限があります。

なぜ/tmp持ってtスティッキービットを?

この/tmpディレクトリは、さまざまなLinuxユーザーが一時ファイルを作成するために使用できます。ここで、ユーザーがこのディレクトリ内の他のユーザーによって作成されたファイルを削除/名前変更した場合はどうなりますか?

この種の問題を回避するために、スティッキービットの概念が使用されます。そのため、a 777が与えられますが、スティッキービットを保持することは悪い考えではありません。

ディレクトリのスティッキービットを設定するにはどうすればよいですか?

testデスクトップで呼び出されるディレクトリにスティッキービットを設定します。

シンボリックな方法(tスティッキービットを表す):

chmod o+t ~/Desktop/test

または

chmod +t ~/Desktop/test

数値/ 8進法(1、最初の位置に値1としてスティッキービットビット)

chmod 1757 ~/Desktop/test

次に、結果をテストしましょう。

ls -li ~/Desktop/test

1551793 drwxrwxrwt 45 hadi hadi 20485 Mar 11 14:35 ~/Desktop/test

スティッキービットを削除/削除するには

chmod o-t ~/Desktop/test

次に、結果をテストしましょう。

ls -li ~/Desktop/test

1551793 drwxrwxrwx 45 hadi hadi 20485 Mar 11 14:35 ~/Desktop/test

出典:The Linux Juggernautの「スティッキービットとは何か、Linuxで設定する方法は?」


13
スティッキービットのこの使用は、ファイルではなくディレクトリにのみ適用されます。遠い過去では、実行可能ファイルでの意味は、プログラムのテキストセグメントを破棄するのではなく、スワップするために保存することでした。
psusi

プログラムのテキストセグメントとは何でしたか?
BluePython

@BluePython実行可能ファイルの「テキスト」セグメントは、すべてのマシンコード、つまり実際の実行可能ビットを含む部分です。他の一般的なセグメントは、静的データの場合は「データ」、すべてゼロのデータの場合は「bss」です(したがって、実行可能ファイルに保存する必要はありません)。
マイルルーティング

1
ディレクトリ許可の「t」と「T」に違いはありますか?@psusi
Afshin

1
@Afshin:すべてのユーザーがファイル/ディレクトリを実行できるかどうかを示すのがtx表示になるため、これを示す他の方法が必要です。通常は、誰でも実行できるということです。その場合、t(ではなくx)ノーマルを取得します。しかし、そうでない場合は、T(大文字の代わりに-)大文字になります。出典:ウィキペディア。
ビーバーテルズ

25

スティッキービットは、ファイル/ディレクトリの所有者またはルートユーザーのみがファイルを削除または名前変更できるようにするファイルまたはディレクトリに設定される許可ビットです。他のユーザーが作成したファイルを削除する特権は、他のユーザーには与えられません。

Linuxシステムのすべてのユーザーがファイルを作成するために使用できるLinuxディレクトリが必要になる場合があります。ユーザーは、このディレクトリでの都合に応じてファイルを作成、削除、または名前変更できます。

ここで、ユーザーがこのディレクトリ内の他のユーザーによって作成されたファイルを誤ってまたは故意に削除(または名前変更)した場合はどうなりますか?

この種の問題を回避するために、スティッキービットの概念が使用されます。以来/ tmpが、この目的のために使用されます。したがって、上記のシナリオを回避するために、/ tmpはスティッキービットを使用します。

例えば:

mkdir demo
chmod 777 demo

また、このフォルダー内に、許可777を持つ異なるユーザーを持つ2つのファイルを作成しました。

ls -ld demo
drwxrwxrwx 2 guru guru 4096 Mar 11 18:17 demo

ls -l demo
-rwxrwxrwx 1 abhi abhi    0 Mar 11 17:11 file1
-rwxrwxrwx 1 anshu anshu   0 Mar 11 18:15 file2

これでスティッキービットをオンにします

 chmod +t demo/
 ls -ld demo
 drwxrwxrwt 2 guru guru 4096 Mar 11 18:17 demo

1人のユーザー(abhi)が2番目のユーザー(anshu)の名前を変更する場合はどうなりますか

mv /home/guru/demo/file2  /home/guru/demo/file3
mv: cannot move '/home/guru/demo/file2' to  '/home/guru/demo/file3': Operation not   permitted  

スティッキービットの起源

Linuxでは、スティッキービットは上記のディレクトリでの使用のみを持ちます。歴史的には、通常のファイルではまったく異なるものに使用されていました。これが名前の由来です。

プログラムが実行されると、ユーザーが実際に使用を開始する前にプログラムをメモリにロードするのに時間がかかります。エディターなどのプログラムがユーザーによって頻繁に使用される場合、起動時間の遅延は当時のオーバーヘッドでした。

この時間遅延を改善するために、スティッキービットが導入されました。OSは、実行可能ファイルのスティッキービットがオンの場合、実行可能ファイルのテキストセグメントがスワップ領域に保持されていることを確認しました。これにより、プログラムの再実行時に実行可能ファイルをRAMに簡単にロードバックでき、時間遅延が最小限に抑えられました。

Linuxなどの最新のシステムは、実行可能ファイルやその他のファイルのキャッシュを自動的に管理するため、スティッキービットは必要ありません。

出典:The Geek Stuffの「Linux Sticky Bit Concept Explained with Examples」


2

stickybitは、共有ディレクトリが誤って削除されないようにするための回避策です。ディレクトリにstickybitがある場合、すべてのユーザーが他のすべての権限を取得できる場合でも、所有者またはルートのみがディレクトリを削除できます。

/tmpプロセスとユーザーの間で最も共有されているディレクトリであり、そのためにユーザーがディレクトリを削除できないようにするスティッキービットが含まれており、アクセス許可が777であっても、ユーザーとプロセスがディレクトリを使用できるようにする必要があります権限の競合なし。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.