web-dev-qa-db-ja.com

Linuxのディレクトリの「s」権限をクリアするにはどうすればよいですか?

許可マスクdrwsrwsr-xで表示されるディレクトリがあります。アクセス許可を755にリセットしようとすると、Sがまだ残ります。

「s」とは何ですか。また、アクセス許可を775(drwxrwxr-x)に変更できないのはなぜですか。

25
Matt Elhotiby

ユーザーとグループの列の「実行」位置に表示されるsは、SetUID(実行時にユーザーIDを設定)ビットとSetGID(実行時にグループIDを設定)ビットです。

Unixファイルのアクセス許可は、実際には4桁の8進数ですSUGO

  • [〜#〜] s [〜#〜]は、SetUID(4)、SetGID(2)および "Sticky"(​​1)ビットを制御します
  • [〜#〜] u [〜#〜]は、ファイル所有者のRead(4)/ Write(2)/ Execute(1)ビットを制御します
  • [〜#〜] g [〜#〜]は、ファイルのグループの読み取り/書き込み/実行ビットを制御します
  • [〜#〜] o [〜#〜]は、他のすべてのユーザーの読み取り/書き込み/実行ビットを制御します。

chmod ug-s directory、またはchmod 0755 directoryを使用して、ディレクトリからsetuidビットを削除できます。

詳細については、chmodのマニュアルページ、および このWikipediaのSetUIDビットに関するページ を参照してください。

26
Hrvoje Špoljar

setuidおよびsetgid

setuidとsetgid(それぞれ実行時のユーザーID設定と実行時のグループID設定の略)は、ユーザーが実行可能ファイルの所有者またはグループの権限で実行可能ファイルを実行できるようにするUnixアクセス権フラグです。これらは、コンピューターシステムのユーザーが特定のタスクを実行するために一時的に昇格した特権でプログラムを実行できるようにするためによく使用されます。想定されるユーザーIDまたはグループIDの特権は常に昇格されるわけではありませんが、少なくともそれらは特定のものです。

数値でsetuidビットとsetgidビットを削除するには、ビットパターンの前に0を付ける必要があります(例:077500775になります)。

Setuidとsetgidを削除するために実行します。

chmod 00775 path

または

chmod a-st path
25
ooshro

Ooshroの回答に追加しています...

ディレクトリでsuidまたはsgid権限を使用する場合、そのディレクトリ内に作成されたすべてのファイルは、問題のディレクトリと同じ所有者(suidの場合)またはグループ(sgid)を持ちます。

私はそれを自宅のSamba共有に使用します。ベースディレクトリはユーザーnobodyおよびグループolympiaが所有し、権限は2770です。そのため、そのディレクトリの下にあるものを読み書きするには、グループolympiaに属している必要があります。 。また、Sambaで2770のdirmaskと660のfilemaskを使用して、権限をツリー全体で正しく保つように構成しています。

2
baumgart