root以外のユーザーに対する 'mv'コマンドの予期しない動作

root以外のユーザーに対する 'mv'コマンドの予期しない動作

最近、私は次の事実を偶然発見しました。

root以外のユーザーが次に属するファイルをmyuser移動しようとします。root働いた? ! ?

$ whoami
myuser

$ ls -lAhd
drwx------ 2 myuser myuser 4,0K  4. Nov 14:24 .

$ ls -lAh
total 0
-rw-r--r-- 1 root root 0  4. Nov 14:24 testfile.txt

$ mv testfile.txt testfile.txt.bak

$ ls -lAh
total 0
-rw-r--r-- 1 root root 0  4. Nov 14:24 testfile.txt.bak

だから私の質問は:これがなぜ機能するのですか?

"mv"コマンドはいつも私を気にするルートではない、正しいですか?

私は理解する:

  • ファイルを読むことができますmyuser(644権限、誰もがファイルを読むことができます)。
  • ファイルは次のようにコピーできますmyuser(ディレクトリがに属しているためmyuser)。

..そうであれば、実際に何が起こるのか(私はmvのソースコードを見ていません)。

ただし、myuserファイルに対する書き込み権限がありません。それでは、どのように元のファイルを削除できましたか?

これが起こらず、ファイルが実際に「名前が変わった」としても動作しないはずです。そうですか? ! ?

私は何を逃したことがありませんか?

答え1

名前の変更 システムコールが正常に動作するために必要な(ソースおよび宛先)ディレクトリへの書き込み権限があります。より安全なディレクトリは書き込みアクセスを許可しません。

悪いたとえ話:司書は、本を別の本棚に分類するために本を開く必要はありません。

名前の変更はコピーとは異なります。ファイルを読み取らないと、cpやエディタは使用できません。ただし、少なくとも同じファイルシステムでは名前を変更できます。

関連情報