web-dev-qa-db-ja.com

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

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

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

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

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

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

94
user255675

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

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

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

/tmptスティッキービットがあるのはなぜですか?

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

この種の問題を回避するために、スティッキービットの概念が使用されます。そのため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

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

112
Maythux

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

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」

25
g_p

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

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

2
user259474