最近、私は次の事実を偶然発見しました。
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やエディタは使用できません。ただし、少なくとも同じファイルシステムでは名前を変更できます。