tar는 사용자 ID가 변경되면 권한을 유지합니까?


20

tar 명령에서 "p"옵션을 사용하여 일부 데이터를 백업해야합니다. 문제는이 데이터를 복원 할 장소는 모두 동일한 사용자를 갖지만 해당 사용자는 다른 ID를 가질 수 있습니다. tar와 차이가 있습니까? 아니면 사용자 이름으로 권한을 올바르게 복원합니까?

답변:


9

tarUID 및 GID를 기반으로하는 권한이 아니라 연관된 문자열이 아닌 권한을 기록합니다. 따라서 한 서버의 UID가 3300이고 'bob'에 링크 된 경우 새 서버에서 파일은 UID 3300을 가진 사용자가 소유합니다.

UNIX의 가상 모든 것 (모든 것을 말하고 싶지만 100 % 확신 할 수는 없습니다)은 실제로 파일 시스템 수준에서 저장되기 때문에 UID : GID 값을 사용합니다. 이름은 passwd 파일에서 단순한 조회이며 기본 검사는 숫자 값을 사용하여 수행됩니다.


아, 그건 좋지 않아 ... 대부분의 상황에서 적합하다고 생각합니다. 불행히도, 나를 위해 ... EightBitTony 감사합니다.
Marius

3
GUID (Globally Unique Identifier)가 아닌 GID (그룹 식별자)를 의미 할 가능성이 높습니다.
CVn

6
GNU tar는 사용자 / 그룹 이름 데이터도 저장합니다. 사용자가없는 머신에 아카이브를 나열하면 볼 수 있기 때문입니다. 추출하는 동안 사용할 수있는 방법이 있어야합니다.
Rob H

3
이 답변은 간단하지 않습니다. tar 않는 기록 소유자 이름을.
Steffen Heil

55

이전 답변을 요약하고 중요한 정보를 추가하십시오.

  • 아카이브를 생성 할 때, tar항상 파일 '사용자 및 그룹 ID를 보존 할 않는 과 다른 말했다 --owner=NAME, --group=NAME. 그러나 여전히 각 파일과 관련된 사용자 및 그룹이 있습니다.

  • GNU 타르, 그리고 아마도 다른 버전은 tar, 또한 사용자 및 그룹 저장 이름을 제외하고, --numeric-owner사용된다. bsdtar는 기본적으로 사용자 및 그룹 이름을 저장하지만 bsdtar 3.0까지는 생성--numeric-owner 시 옵션에 대한 지원이 나타나지 않았습니다 (bsdtar 는 훨씬 더 오랫동안 추출 할 때 옵션을 지원함 ).

  • 일반 사용자 로 추출 할 때 모든 파일은 항상 사용자가 소유합니다. 파일을 추출하는 것이 파일 시스템에서 새 파일을 생성하므로 일반 사용자는 파일을 생성하고 다른 사람에게 소유권을 부여 할 수 없으므로 다르지 않습니다.

  • 로 추출 할 때 루트 , tar기본적으로 추출 된 파일의 소유권을 복원 하지 않는 한 --no-same-owner 사용되는 자신의 루트 소유권을 줄 것이다.

  • GNU 타르, bsdtar, 그리고 아마도 다른 버전으로 tar복원 소유권은 사용자 (그룹)에 의해 수행되는 이름 정보 아카이브에있는 경우, 그리고 대상 시스템에서 일치하는 사용자가있다. 그렇지 않으면 ID로 복원됩니다. 경우 --numeric-owner옵션이 제공되며, 사용자 및 그룹 이름은 무시됩니다.

  • 옵션 --no-same-permissions및 / 또는 --touch사용 하지 않으면 권한 및 타임 스탬프도 아카이브에 저장되고 기본적으로 복원 됩니다. 사용자가 추출하면 사용되지 않는 한 사용자 umask가 권한에서 차감--same-permissions 됩니다.

  • --preserve-permissions--same-permissions별칭과 같은 기능 등을 가지고-p

이것이 문제를 분명히하는 데 도움이되기를 바랍니다. :)


3
훌륭한 답변; 이 질문뿐만 아니라 해당 주제에서 발생할 수있는 다른 모든 질문에 답변하십시오.
user1107893

최신 버전의 GNU 만 또는에 tar임의의 이름을 지정할 수 있으며, 과거 에는 현재 시스템에서 무상으로 조회하고 일치하는 것이 없으면 실행을 거부했습니다. --owner--grouptar/etc/passwd
Matteo Italia

지정된 이름으로 플래그를 --owner추가 하여 아카이브를 생성하면 어떻게됩니까 --numeric-owner? 타르는 이러한 경쟁 요구 사항을 어떻게 처리합니까?
CMCDragonkai

@CMCDragonkai : --owner그리고 --numeric-owner상호 배타적이지 않으며 매우 뚜렷한 목적을 제공합니다. --owner=USERNAME파일을 보관할 때 파일 및 디렉토리 소유자를 무시 --numeric-owner하고 사용자 이름, 숫자로만 저장하지는 않습니다.
MestreLion

4

GNU tar에 --same-owner 옵션을 사용하십시오. http://www.gnu.org/software/tar/manual/html_section/Attributes.html을 참조 하십시오


이것은 수퍼 유저의 기본값으로 문서화되어 있으며 OP의 질문에 허용되는 답변과 다르게 답변하는 것 같습니다. (링크는 --same-owner를 사용하여 GNU tar를 복원 할 때 먼저 / etc / passwd에서 이름 을 찾습니다 .) 유일한 눈에 띄는 문제는 OP 버전의 tar가 --same-owner를 구현하는지 여부입니다.
Mike Sherrill 'Cat Recall'13:

OP는 일부 Linux 배포판을 사용하므로 GNU tar, methinks를 사용할 가능성보다 낫습니다. 그리고 받아 들여진 대답이 그렇지 않다는 것을 나타내는 동안 문서화 가능하다…
Colin 't Hart

@Catcall-죄송합니다. 테스트 할 기회조차없이 답변을 수락했습니다. Somethimes 나는 맹목적으로 사람들을 신뢰합니다. 그래도 "-같은 소유자"로 복원하지 않았기 때문에 응답 한 사람이 다소 옳았습니다. 그런 다음 답변에 추가했습니다. 너무 안타깝게도 둘 다 받아 들일 수 없습니다. 나는 "-같은 소유자"를 실제로 지원하는 데비안 스퀴즈를 사용하고 있습니다. 팁 고마워.
Marius

@Marius : 원할 때마다 허용되는 답변을 변경할 수 있다고 확신합니다. (나는이 질문에 대한 답변을 제공하지 않았으며 의견 만 제시했다는 점을 지적 할 것입니다. 어떤 담당자도 없습니다.)
Mike Sherrill 'Cat

4

두 시스템간에 파일을 전송하려는 경우 rsync는 기본적으로 uid 대신 username으로 권한을 설정하고 양쪽 끝에있는 사용자 이름을 확인합니다. 사용자가 시스템 중 하나에 존재하지 않는 경우에만 달리 언급하지 않는 한 사용자를 uid와 함께 복사합니다.


이것은 OP의 질문에 직접 대답하지는 않지만 OP의 질문을하는 사람도 이것을 배워야합니다.
Mike Sherrill 'Cat Recall'13:
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.