Cờ tar -p (bảo vệ quyền) thực sự bảo tồn cái gì?


22

-pcờ thực sự giữ gìn khi tạo và giải nén một tarball? Đó có phải là rwxquyền mà nó bảo tồn?

Khi tôi tạo một htdocs/tarball thuộc sở hữu của root, việc trích xuất nó vào máy cục bộ của tôi đã thay đổi quyền sở hữu từ root sang người dùng của tôi.


5
Có lẽ bạn nên cố gắng giải nén kho lưu trữ dưới dạng root. Không thể đặt quyền cho người dùng khác như người dùng bình thường nên tôi nghĩ tarsẽ không thể làm như vậy. Xin vui lòng cho tôi biết nếu điều này làm việc.
Louis Matthijssen

"máy địa phương"? Vui lòng làm rõ hệ điều hành mà máy này có;)
Rinzwind

Cũng cho chúng tôi biết những hệ thống tập tin bạn đang sử dụng. Cả nguồn và đích.
terdon

Nguồn: Red Hat Enterprise Linux Server release 6.5 (Santiago) Target: Ubuntu 13.10 Cả hai sử dụngGPT
nicoX

Lưu ý bên: tarbảo vệ quyền. -p--same-owner/ --no-same-owner(như trong câu trả lời) là các cờ trích xuất. Chúng không có tác dụng trong khi lưu trữ
Fr0zenFyr

Câu trả lời:


19

Quyền sở hữu và quyền là hai điều khác nhau. Các -plá cờ bảo quyền . Trên các hệ thống * nix, người dùng thông thường không thể thay đổi quyền sở hữu tệp thành người dùng không phải là chính họ.

Như đã giải thích ở đây :

Chỉ các quy trình có ID người dùng hiệu quả bằng ID người dùng của tệp hoặc với các đặc quyền phù hợp mới có thể thay đổi quyền sở hữu tệp. Nếu _POSIX_CHOWN_RESTRICTED có hiệu lực cho đường dẫn:

  • Thay đổi ID người dùng bị hạn chế đối với các quy trình có đặc quyền phù hợp.

  • Thay đổi ID nhóm được phép theo quy trình có ID người dùng hiệu quả bằng ID người dùng của tệp, nhưng không có đặc quyền phù hợp, nếu và chỉ khi chủ sở hữu bằng với ID người dùng của tệp hoặc (uid_t) -1 và nhóm bằng nhau hoặc ID nhóm hiệu quả của quy trình gọi hoặc một trong các ID nhóm bổ sung của nó.

Lý do đằng sau này đã được giải thích độc đáo bởi @Gilles trong này Unix & Linux câu trả lời:

Lý do cho sự hạn chế này là việc tặng một tệp cho người dùng khác có thể cho phép những điều xấu xảy ra trong trường hợp không phổ biến, nhưng vẫn là những tình huống quan trọng. Ví dụ:

  • Nếu một hệ thống có bật hạn ngạch đĩa, Alice có thể tạo một tệp có thể ghi trên thế giới trong một thư mục chỉ có thể truy cập bởi cô ấy (để không ai khác có thể truy cập vào thư mục có thể ghi trên thế giới đó), và sau đó chạy chown để tạo tệp đó do người dùng khác Bill sở hữu . Sau đó, tệp sẽ được tính theo hạn ngạch đĩa của Bill mặc dù chỉ Alice mới có thể sử dụng tệp.
  • Nếu Alice đưa tập tin cho Bill, Bill sẽ không tạo ra tập tin đó. Đây có thể là một vấn đề nếu tệp chứa dữ liệu bất hợp pháp hoặc làm tổn hại dữ liệu.
  • Một số chương trình yêu cầu tệp đầu vào của họ thuộc về một người dùng cụ thể để xác thực yêu cầu (ví dụ: tệp chứa một số hướng dẫn mà chương trình sẽ thực hiện thay mặt cho người dùng đó). Đây thường không phải là một thiết kế an toàn, bởi vì ngay cả khi Bill tạo một tệp chứa các hướng dẫn chính xác về mặt cú pháp, anh ta có thể không có ý định thực hiện chúng tại thời điểm cụ thể này. Tuy nhiên, cho phép Alice tạo một tệp có nội dung tùy ý và lấy nó làm đầu vào từ Bill chỉ có thể làm mọi thứ tồi tệ hơn.

Vì vậy, ngay cả khi bạn sử dụng --same-ownercờ tar , bạn vẫn sẽ cần giải nén các tệp như rootđể duy trì quyền sở hữu. Cờ đó được bật theo mặc định root, vì vậy điều bạn muốn là:

sudo tar xpf foo.tgz

9

Có thêm 2 lựa chọn cho tar rất thú vị:

--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**)

Cái thứ 2 là mặc định để bạn có thể thêm --same-ownerđể lưu người dùng của mình. Bạn có thể sẽ phải làm điều này với sudo.

Bên cạnh đó: điều này sẽ thường xuyên hoạt động trên các hệ thống hỗ trợ POSIX. Và các hệ điều hành khác ngoài Ubuntu có thể không có 2 tùy chọn này (chúng không chuẩn).


3
Công cụ --same-ownernày sẽ không hoạt động đối với người dùng không phải root, họ sẽ không có quyền đặt quyền sở hữu cho bất kỳ ai trừ chính họ. Điều đó được xác định bởi POSIX .
terdon

4

Để duy trì chủ sở hữu chạy dưới quyền root hoặc sử dụng cờ --same-own cùng với cờ -p khi giải nén.


3
Nó cần phải được chạy như root trong mọi trường hợp. Người dùng không root không thể thay đổi quyền sở hữu tệp cho người dùng khác.
terdon
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.