web-dev-qa-db-ja.com

あるユーザーが別のユーザーの755ファイルを削除できるのはなぜですか?

ユーザーuploadを使用してファイルを別のサーバーにscpするバックアップアップロードスクリプトがあります。次に、ターゲットサーバー上の別のスクリプトがこれらを別のユーザーに割り当て、ファイルモードを755に設定します。

次に、uploadユーザーを使用してターゲットサーバーにSSH接続すると、chownされたファイルを削除できます。読み取り専用にすべきですか?

ターゲットサーバーでのファイルの外観は次のとおりです。ユーザーuploadはファイルを削除できます。

-rwxr-xr-x 1 maciekish maciekish 650M Nov  1 01:07 2014-11-01-data.tar.bz2

ユーザーuploaduseraddを使用して追加されたばかりであり、maciekishグループの一部ではありません。

Ssh経由でuploadとしてファイルを削除しようとすると、「書き込み保護された通常のファイル」を削除するかどうかという質問が表示され、Yと言って削除できます。

35
Maciej Swic

ファイルare読み取り専用;ただし、ファイルを削除してもファイルは変更されず、親ディレクトリのみが変更されます(基本的にはファイルがディレクトリリストから削除されます)。ディレクトリへの完全な書き込み権限があるようです。

stickyビット(別名「制限付き削除」フラグ)を設定して、所有者以外のユーザーがそのディレクトリ内のファイルの名前を変更したり削除したりできないようにすることができます(/tmpなど)。これを行うには、ディレクトリの所有者としてchmod o+t *directory*を実行します。

64
user1686

典型的なUnixファイルシステムでは、どのファイルも任意の数のディレクトリエントリで識別でき、それぞれが「ハードリンク」を保持しています。

実装の観点から見ると、ファイルの最後のディレクトリエントリ(ハードリンク)を削除することと、多数のファイルから1つの参照を削除することには違いがあります。ただし、セマンティックの観点からは違いはありません。

ファイルに複数のハードリンクが存在する場合、それらのいずれかを使用してファイルに書き込むと、それらすべてに表示されるファイルが変更されます。ただし、リンクでrmを使用すると、そのリンクからファイルにアクセスできなくなります。ファイルへの他のリンクは、まったく同じファイルを引き続き表示します。

12
supercat