Linux のカーネル プログラミングに関する宿題の質問があります。質問は次のとおりです。
ファイルをコピーするときにその所有権を保持するには、Linux 固有のどのような権限が必要ですか。また、その権限を取得するにはどうすればよいでしょうか。
root
実験の結果、これを機能させるにはスーパーユーザーになる必要があることがわかりました。この効果を説明するより具体的な方法はありますか?
答え1
を参照してくださいcapabilities(7)
マニュアル ページ – をCAP_CHOWN
介してファイルの所有権を変更する機能が必要ですchown()
。(ルートではすべての機能が自動的に有効になります。マニュアル ページでは、他の場合に機能を取得する方法について説明しています。)
単に保存するLinux のファイル コピーは、単に宛先ファイルへのデータの読み取り/書き込みを行い、次にメタデータに対して同じ操作を実行することによって行われるため、所有権は必要ありません。(比較すると、Windows NT には権限とSeBackupPrivilege
/呼び出しがあります。)SeRestorePrivilege
BackupRead()
BackupWrite()