tar의 -p (권한 유지) 플래그는 실제로 무엇을 유지합니까?


22

-p타르볼을 생성하고 추출 할 때 플래그는 실제로 무엇을 유지합니까? rwx그것이 보존 하는 권한입니까?

htdocs/루트가 소유 한 tarball을 만들 때 로컬 시스템으로 추출하면 소유권이 루트에서 사용자로 변경되었습니다.


5
어쩌면 루트로 아카이브를 추출해야 할 수도 있습니다. 다른 사용자의 권한을 일반 사용자로 설정할 tar수 없으므로 그렇게 할 수 없다고 생각 합니다. 이것이 효과가 있는지 알려주십시오.
Louis Matthijssen

"로컬 머신"? 이 기계가 어떤 OS를 가지고 있는지 명확히하십시오.)
Rinzwind

또한 사용중인 파일 시스템을 알려주십시오. 소스와 타겟 모두.
terdon

출처 : Red Hat Enterprise Linux Server release 6.5 (Santiago) 목표 : Ubuntu 13.10 둘 다 사용GPT
nicoX 12

참고 사항 : tar권한을 유지합니다. /는 (답에서 -p와 같이) 추출 플래그입니다. 아카이빙 중에는 아무 효과가 없습니다--same-owner--no-same-owner
Fr0zenFyr

답변:


19

소유권과 권한은 서로 다른 것입니다. -p플래그는 보존 권한을 . * nix 시스템에서 일반 사용자는 자신이 아닌 사용자로 파일 소유권을 변경할 수 없습니다.

여기에 설명 된대로 :

유효 사용자 ID가 파일의 사용자 ID와 같거나 적절한 권한을 가진 프로세스 만 파일의 소유권을 변경할 수 있습니다. _POSIX_CHOWN_RESTRICTED가 경로에 유효한 경우 :

  • 사용자 ID 변경은 적절한 권한이있는 프로세스로 제한됩니다.

  • 소유자가 파일의 사용자 ID 또는 (uid_t) -1과 같고 그룹이 동일한 경우에만 그룹 ID 변경은 파일의 사용자 ID와 동일한 유효 사용자 ID를 가진 프로세스에 허용되지만 적절한 권한이 없습니다. 호출 프로세스의 유효 그룹 ID 또는 보충 그룹 ID 중 하나입니다.

이것의 근거는 유닉스와 리눅스의 대답 에서 @Gilles에 의해 잘 설명되어 있습니다 .

이 제한의 이유는 다른 사용자에게 파일을 제공하면 흔하지는 않지만 여전히 중요한 상황에서 나쁜 일이 발생할 수 있기 때문입니다. 예를 들면 다음과 같습니다.

  • 시스템에 디스크 할당량이 활성화되어있는 경우 Alice는 자신 만 액세스 할 수있는 디렉토리 아래에 세계 기록 가능한 파일을 만든 다음 다른 사람이 해당 세계 기록 가능한 디렉토리에 액세스 할 수 없습니다. . 그러면 Alice 만 파일을 사용할 수 있지만 파일은 Bill의 디스크 할당량으로 계산됩니다.
  • Alice가 Bill에 파일을 제공하면 Bill이 해당 파일을 작성하지 않은 흔적이 없습니다. 파일에 잘못된 데이터가 있거나 손상된 데이터가 포함되어 있으면 문제가 될 수 있습니다.
  • 일부 프로그램에서는 요청을 인증하기 위해 입력 파일이 특정 사용자에게 속해야합니다 (예를 들어, 파일에는 프로그램이 해당 사용자 대신 수행 할 명령이 포함되어 있음). Bill이 구문 적으로 올바른 지시 사항이 포함 된 파일을 작성 했더라도이 특정 시간에 실행하려고하지 않았기 때문에 이는 일반적으로 안전한 설계가 아닙니다. 그럼에도 불구하고 Alice가 임의의 컨텐츠로 파일을 작성하고 Bill의 입력으로 가져 오도록 허용하면 상황이 더 악화 될 수 있습니다.

따라서 tar의 --same-owner플래그 를 사용하더라도 root소유권을 유지하기 위해 파일을 추출해야합니다 . 이 플래그는에 대해 기본적으로 켜져 root있으므로 원하는 것은 다음과 같습니다.

sudo tar xpf foo.tgz

9

흥미로운 tar에는 두 가지 옵션이 더 있습니다.

--same-owner
       try extracting files with the same ownership as exists in the ar‐
       chive (default for superuser)

--no-same-owner
       extract files as yourself (**default for ordinary users**)

두 번째는 기본값이므로 --same-owner사용자를 저장하기 위해 추가 할 수 있습니다 . 아마도이 작업을 수행해야 할 것입니다 sudo.

그 외에도 POSIX를 지원하는 시스템에서만 작동합니다. 그리고 Ubuntu 이외의 운영 체제에는 이러한 두 가지 옵션이 없을 수 있습니다 (표준이 아님).


3
--same-owner루트가 아닌 사용자를위한하지 않습니다 일, 그들은 누구하지만 자신에 대한 소유권을 설정할 수있는 권한이 없습니다. 그것은 POSIX에 의해 정의됩니다 .
terdon

4

소유자 실행을 루트로 유지하거나 추출 할 때 -p 플래그와 함께 --same-owner 플래그를 사용하십시오.


3
어떤 경우 든 루트로 실행해야합니다. 루트가 아닌 사용자는 파일 소유권을 다른 사용자로 변경할 수 없습니다.
terdon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.