Arquivo tar com permissões preservadas exibe o nome de usuário para o usuário que não está no sistema atual

1

Como o tar pode exibir um nome de usuário, por exemplo, www-data em um sistema que não tenha um usuário www-data?

Eu sei que o tar preserva as permissões do usuário com base no ID do sistema, neste caso, www-data sendo 33 (acredito?) nos sistemas Debian.

O mais confuso sobre isso é que, se eu alterar as permissões de uma pasta para um usuário inexistente e enviá-la para outro servidor, o tar informa que o proprietário é o usuário 33, mas ao desimpedi-lo as pastas são definidas como proprietário www-data.

tar (tar GNU) 1,29

    
por Prospero 31.08.2018 / 07:24

2 respostas

1

Isso ocorre porque tar está salvando essas informações também, é o formato ustar especificado em POSIX 1003.1-1990. No código fonte oficial, isso é especificado no alcatrão. h arquivo de cabeçalho . Copiei o bloco importante:

/* POSIX header.  */

struct posix_header
{               /* byte offset */
  [...]
  char uid[8];          /* 108 */
  char gid[8];          /* 116 */
  [...]
  char uname[32];       /* 265 */
  char gname[32];       /* 297 */
  [...]
};

Como você pode ver o nome de usuário do proprietário, bem como o nome do grupo de proprietários, são armazenados além do uid e do gid.

    
por 31.08.2018 / 07:51
0

Tar também salva o nome do usuário e o grupo no arquivo. Você pode verificar isso observando o próprio arquivo tar com ferramentas como hexdump . A razão é que o mesmo nome pode ser usado em sistemas diferentes, mas com números diferentes.

No segundo caso, o sistema de origem não conhece um nome para o usuário 33, então ele não pode fornecer um nome, apenas o número. O tar de extração usa esse número e, como o sistema conhece esse número, ele exibe um nome de usuário para esse número.

Veja também

--numeric-owner
Always use numbers for user/group names.

    
por 31.08.2018 / 07:37