次の動作を理解できません。/opt/com/internal/someFile
の下にsomeFile
という名前のファイルがありますls -all /opt/com/internal/someFile
を実行すると、権限は700 user:userGroup
になります
私はルートであり、cp /root/folder/someFile /opt/com/internal/someFile
を行います
上書きするプロンプトが表示されません。何故なの?
権限は変更されていません。しかし、cp /root/folder/someFile /opt/com/internal/someFile
を実行し、ファイルsomeFile
が存在しない場合、ファイルはroot
ではなく、user
によって所有されます。どうして?
上書きするプロンプトが表示されません。何故なの?
あなたは自分が何をしているのかを知っているはずだからです。特にrootとしては、ほとんど何でも上書きできるので注意してください。
cp
の-i
オプションを使用して、既存のファイルを上書きする前にプロンプトを取得します。これを常に思い出させたい場合は、cp
からcp -i
の- エイリアスの作成 を検討してください。
権限は変更されていません。ただし、[…]ファイル
someFile
が存在しない場合、それはroot
によって所有され、user
によって所有されません。どうして?
コピー先のファイルはすでに存在しているためです。削除されたり、書き直されたりすることはありません。それはまだuser
によって所有されています。
ただし、cp
の-p
オプションを確認してください。ソースファイルの属性、つまりモード、所有権、タイムスタンプが保持されます。それ以外の場合、ターゲットファイルのモード属性と所有権属性は残ります(変更を示すタイムスタンプを除く)。
ターゲットファイルがない場合は、ソースファイルの属性をコピーする必要があります。ターゲットファイルから継承できないためです。基本的には新しいファイルを作成するだけで、この場合はroot
が所有します。
1)cp
は、-i
引数が使用されない限り、上書きを要求しません。これは、最初のUNIX以降のデフォルトの動作です。
2) ウィキペディアから :既存のファイルへのファイルの上書きは、既存のファイルを更新モードで開くことによって実行されます。これにより、ファイルのiノードが保持されます。これには書き込みアクセスが必要であり、ターゲットファイルは元々持っていた権限。