*BSD と Linux における SGID の動作の違い

*BSD と Linux における SGID の動作の違い

興味深いことに気付きました。BSDシステムでは、新しいファイルのグループはディレクトリのグループに設定されます。System Vシステムでは、ファイルを作成したユーザーのプライマリグループになります。BSDシステムの場合、このような動作の目的は何であり、次のことを意味しますか?SGIDそこはちょっと役に立たないですか?

答え1

これは OS に依存する機能である可能性もあれば、そうでない可能性もありますが、それを判断するには十分な詳細が提供されていません。

実行可能ファイルの sgid ビットにより、実行しているユーザーがそのグループに属していなくても、実行可能ファイルはファイルのグループ内で実行されます。(グループ ID の設定) 実行可能ファイルでない場合は、sgid ビットはほとんど意味がありません。

ディレクトリでは、sgid ビットはディレクトリ内のグループ継承を制御するために再利用されました。ディレクトリに sgid ビットが設定されている場合、ディレクトリ内に作成されたファイルはグループを継承します (ただし、グループ権限は継承しません)。これのポイントは、グループ内のユーザーが使用する共有ディレクトリがある場合、全員が umask を 022 ではなく 002 に設定し、グループ権限を常に修正することなくディレクトリ内のファイルを編集できることです (umask を変更しないと、これはあまり役に立ちません)。

したがって、おそらくあなたが調べた2つのシステムのうち、1つではテストしていたディレクトリにsgidビットが設定されていて、もう1つでは設定されていません。この機能はずっと前からあるわけではないので、どちらかのシステムが十分に古い場合は、sgidディレクトリ継承をサポートしていない可能性があります。(しかし、ほとんど永遠に続くわけではないので、これはありそうにありません。

これは決して sgid を無用なものにすることはありません。なぜそう思うのかわかりません。何が無用だと思うのか説明していないからです。ファイルに、自分が属していないグループのグループ所有者がいる場合、最初にグループ所有者を変更しないとファイルを sgid にできないことに注意してください。また、非ルート ユーザーがファイルをコピーすると、sgid は削除されます。

関連情報