我有一个关于 Linux 内核编程的家庭作业问题。问题是:
复制文件时,需要什么 Linux 特定权限来保留文件所有权,以及如何获取该权限?
通过实验,我发现我需要成为root
超级用户才能使其正常工作。有没有更具体的方式来解释这种效果?
答案1
查看capabilities(7)
手册页 – 您需要CAP_CHOWN
通过 更改文件所有权的能力chown()
。(Root 已自动启用所有能力。手册页解释了如何在其他情况下获取能力。)
没有单独的方法/能力来保存所有权,因为 Linux 文件复制只需将数据读取/写入目标文件,然后对元数据执行相同操作即可。(相比之下,Windows NT 具有SeBackupPrivilege
和SeRestorePrivilege
权限以及BackupRead()
/BackupWrite()
调用。)