移動はソースファイルの所有権を保持し、書き込みを許可しません。

移動はソースファイルの所有権を保持し、書き込みを許可しません。

以下を考慮してください。

$ id # Me
uid=100(user1) gid=200(group1) groups=200(group1)

$ ls -l tnsnames.ora # So user1 has only read permission on below file.
-rw-rw-r-- 1 oracle dba 411024 Jul 28  2010 tnsnames.ora

$ cp tnsnames.ora tnsnames.ora_bak

$ cat tnsnames.ora_bak > tnsnames.ora # No write access
-bash: tnsnames.ora: Permission denied

$ cp -p tnsnames.ora tnsnames.ora_copy # Copy file and preserve mode, ownership, timestamps. Requires sudo to succeed completely.

$ ls -l tnsnames.ora_copy # Mode and timestamps preserved; ownership not preserved.
-rw-rw-r-- 1 user1 group1 411024 Jul 28  2010 tnsnames.ora_copy

$ mv tnsnames.ora tnsnames.ora_move

$ ls -l tnsnames.ora_move # Move preserves mode, ownership, timestamps.
-rw-rw-r-- 1 oracle dba 411024 Jul 28  2010 tnsnames.ora_move

$

修正する

$ ls -l # As pointed out by @Gilles, the source (which is also the destination here) directory has r-x mode which allows mv to work.
drwxrwxrwx  3 oracle dba  4096 Aug 11 20:38 oracle

  1. このコマンドはどのようにmvファイルを移動し、スキーマ、所有権、タイムスタンプを保存しますかcp
  2. また、ファイルへの書き込み権限がない場合はどうなりますか?変化使用されているファイルの場所(メタデータ)mvまたは他の角度から見ることができます。mvありません。

OS/Bash/ユーティリティのバージョン情報:

$ echo $SHELL
/bin/bash
$ bash --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
...
$ uname -a
Linux server1 2.6.18-371.8.1.el5 #1 SMP Fri Mar 28 05:53:58 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux
$ cp --version
cp (GNU coreutils) 5.97
...
$ mv --version
mv (GNU coreutils) 5.97
...

ベストアンサー1

mv異なるファイルシステム間でファイルを移動しない限り、ファイルはコピーされず、元のファイルは削除されます。mvファイルを移動します。

ファイルを移動するには、以前に存在していたディレクトリからファイルを分割し、ファイルを配置したいディレクトリに追加する権限が必要です。つまり、ソースディレクトリとターゲットディレクトリの両方に対する書き込み(および実行)権限が必要です。ファイル自体を変更またはアクセスしないため、ファイルに対する特定の権限は必要ありません。 (たとえ:箱を開けるための鍵がなくても、ロックされた箱を動かすことができます。)

cp -pファイルに対する権限は保持でき、保持されますが、通常、ファイルの所有権は保持できません。ルートとして実行していないため、cpあなたやあなたが属するグループに属していないファイルを作成することはできません。

おすすめ記事