현재 시스템에 없는 사용자의 사용자 이름을 표시하는 예약된 권한이 있는 Tar 파일

현재 시스템에 없는 사용자의 사용자 이름을 표시하는 예약된 권한이 있는 Tar 파일

www-data 사용자가 없는 시스템에서 tar는 www-data와 같은 사용자 이름을 어떻게 표시합니까?

나는 tar가 시스템 ID를 기반으로 사용자 권한을 유지한다는 것을 알고 있습니다. 이 경우 데비안 시스템의 www-data에 대해 33(아마 그럴까요?)입니다.

가장 혼란스러운 점은 폴더의 권한을 33(존재하지 않는 사용자)으로 변경하여 다른 서버로 보내면 tar에서 소유자를 사용자 33으로 보고하지만 압축을 풀면 폴더가 소유자 www로 설정된다는 것입니다. -데이터.

타르(GNU 타르) 1.29

답변1

tar이는 이 정보가 POSIX 1003.1-1990에 지정된 ustar 형식으로도 저장되기 때문입니다 . 공식 소스 코드에는 이것이 지정되어 있습니다tar.h 헤더 파일. 중요한 부분을 복사했습니다.

/* POSIX header.  */

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

보시다시피 uid와 gid 외에 소유자 사용자 이름과 소유자 그룹 이름도 저장됩니다.

답변2

Tar는 또한 사용자 이름과 그룹을 파일에 저장합니다. .tar 파일과 같은 도구를 사용하여 tar 파일 자체를 보면 이를 확인할 수 있습니다 hexdump. 그 이유는 동일한 이름이 다른 시스템에서 다른 번호로 사용될 수 있기 때문입니다.

두 번째 경우에는 소스 시스템이 사용자 33의 이름을 모르기 때문에 이름을 제공할 수 없고 숫자만 제공할 수 있습니다. Extract tar는 이 번호를 사용하며 시스템이 이 번호를 알고 있으므로 해당 번호에 대한 사용자 이름을 표시합니다.

당신은 또한 볼 수 있습니다

--numeric-owner
사용자/그룹 이름에는 항상 숫자를 사용합니다.

관련 정보