Tenho uma pergunta de dever de casa sobre programação de kernel no Linux. A questão é:
Qual privilégio específico do Linux é necessário para preservar a propriedade de um arquivo quando ele é copiado e como obtê-lo?
Por meio de experimentação, descobri que preciso ser root
um superusuário para fazer isso funcionar. Existe uma maneira mais específica de explicar esse efeito?
Responder1
Veja ocapabilities(7)
página de manual – você precisa da CAP_CHOWN
capacidade de alterar a propriedade do arquivo via chown()
. (Root tem todos os recursos habilitados automaticamente. A página do manual explica como obter recursos em outros casos.)
Não existe um método/capacidade separado para apenaspreservarpropriedade, já que as cópias de arquivos do Linux são feitas simplesmente lendo/gravando dados no arquivo de destino e fazendo o mesmo com os metadados. (Para comparação, o Windows NT tem privilégios e SeBackupPrivilege
chamadas / .)SeRestorePrivilege
BackupRead()
BackupWrite()