Existe um formato de arquivo padrão sem metadados de arquivo?

0

Para algum contexto, estou trabalhando em um utilitário semelhante ao gerenciador de pacotes que suporta a construção de pacotes como um usuário não-root. Eu quero ter certeza de que os pacotes construídos por um usuário root e construídos por um usuário não-root sejam absolutamente indistinguíveis, em vez de, digamos, usar um tar archive e ignorar os metadados.

Existe um formato / utilitário um pouco como tar , em que arquivos e diretórios dentro do repositório não contêm (e o ideal não podem) metadados como bits de permissão, carimbos de data e hora e informações relacionadas à propriedade? Eu gostaria que o arquivo fosse completamente descrito pelos diretórios e arquivos que existem nele e pelo conteúdo do arquivo (e, portanto, ele é incapaz de armazenar links simbólicos ou hard links).

Também estou bem com um formato de arquivo que não tem a capacidade de distinguir entre caminhos absolutos e relativos (ou seja, /a/b e a/b mapeiam para a mesma coisa porque a noção de um caminho do arquivo é diferente de um caminho Unix).

    
por Gregory Nisbet 08.03.2017 / 02:35

1 resposta

3

Você não pode remover informações do usuário ao usar o tar (ou cpio), mas pode forçá-las a evitar a distinção de quem fez o pacote. Usando tar e forçando alguns parâmetros para evitar distinguir o usuário que construiu o pacote (veja man tar ):

  • -P , --absolute-names : forçar o tar a não remover o início '/' (isso é feito por padrão). Se você não puder colocar caminhos absolutos na linha de comando, o caminho que você mencionou será mantido (tente usar o -C ou o diretório -change, se não puder fazer o cd na pasta raiz desejada)
  • --owner : força o usuário armazenado no arquivo tar ignorando o proprietário real dos arquivos / directrories (por exemplo, --owner = root)
  • --group : force group armazenado no arquivo tar (por exemplo, --group = root).
  • --no-acls : evita copiar suas próprias ACLs no arquivo tar
  • --numeric-owner , --numeric-group : mascara os nomes reais das contas no seu local, armazenando apenas UID / GID (não é necessário se você forçar a raiz, pois a raiz é sempre 0)
  • --mtime : forçar o tempo de modificação de todos os arquivos / diretórios para mascarar quando eles realmente foram modificados

Esteja ciente de que os links simbólicos com caminhos absolutos serão armazenados como estão. No entanto, é melhor usar sempre links simbólicos relativos quando eles apontam para a sua árvore de pacotes.

    
por 08.03.2017 / 10:22