Unix thực hiện quyền truy cập tập tin như thế nào?


8

Tôi có một tệp văn bản có tên foo.txtvới quyền root trong một bản phân phối Linux. Tôi đã sao chép nó sang một bản phân phối Linux khác trên một máy tính khác.

Quyền truy cập tập tin sẽ vẫn được duy trì cho foo.txt?

Nếu có, làm thế nào để Unix / Linux linux biết và sao chép các quyền của tệp?

Nó có thêm byte (chỉ ra quyền) cho tập tin không?

Câu trả lời:


12

Để thêm câu trả lời của Eric (không có đại diện để bình luận), các quyền không được lưu trong tệp mà là inode của tệp (con trỏ của hệ thống tệp đến vị trí thực của tệp trên đĩa) dưới dạng siêu dữ liệu cùng với chủ sở hữu và dấu thời gian. Điều này có nghĩa là sao chép tệp vào hệ thống tệp không phải POSIX như NTFS hoặc FAT sẽ làm mất quyền và dữ liệu chủ sở hữu.

Chủ sở hữu tệp và nhóm chỉ là một cặp số, ID người dùng (UID) và ID nhóm (GID) tương ứng. Root UID là 0 là tiêu chuẩn, vì vậy tệp sẽ hiển thị dưới dạng sở hữu của root trên (gần như) mọi hệ thống tuân thủ unix. Mặt khác, chủ sở hữu không root sẽ không được lưu theo cách có ý nghĩa.

Vì vậy, trong ngắn hạn, quyền sở hữu gốc sẽ được giữ nguyên nếu tarball'd hoặc sao chép qua usbX extX hoặc tương tự. Quyền sở hữu không root là không đáng tin cậy.


1
Đối với OP (rõ ràng có phần mới), bạn có thể thêm rằng bạn có thể nghĩ rằng inode của tệp được duy trì bên trong thư mục chứa tệp chứ không phải trong chính tệp. Ngay cả khi về mặt kỹ thuật, điều này có thể kém chính xác hơn những gì bạn nói. Trong mọi trường hợp, điểm quan trọng là một tệp được sao chép giống hệt nhau (trong hệ thống tệp của nó hoặc sang một tệp khác) không loại trừ quyền sở hữu / quyền của nó có thể thay đổi.
Marc van Leeuwen

4

Điều đó phụ thuộc vào cách bạn sao chép nó. Nếu bạn đặt nó trong một tarquả bóng và sao chép nó, sau đó gỡ bỏ nó, tarsẽ duy trì quyền. Nếu bạn sử dụng rsyncnó cũng sẽ, tùy thuộc vào cờ, duy trì quyền. Những ứng dụng chịu trách nhiệm cho các quyền. Nếu bạn đãscp phép nó sẽ không được bảo tồn.

Lệnh thực hiện sao chép có trách nhiệm quản lý các quyền trên tệp mới được tạo.


1
tarsẽ bảo vệ quyền sở hữu và quyền trừ khio tùy chọn của nó được đưa ra. Vâng, đó là hoàn toàn hợp lý.
CVn

1
Theo mặc định tarsẽ lưu trữ thông tin về cả tên và id của chủ sở hữu. Khi trích xuất tartheo mặc định sẽ sử dụng tên được lưu trữ, nhưng có thể được hướng dẫn chỉ sử dụng id.
kasperd

2
Có thể đáng nhấn mạnh rằng tarchỉ có thể bảo vệ quyền sở hữu khi chạy bằng root. Không có cách nào để người dùng bình thường tạo các tệp thuộc sở hữu của người khác.
Emil Jeřábek

0

Đối với chủ sở hữu / nhóm, nó phụ thuộc vào người thực hiện bản sao và cách thức.

  • một người dùng thông thường: sẽ luôn là chủ sở hữu của các bản sao bằng tất cả các lệnh
  • rootngười dùng cũng vậy, với cp(ngoại trừ với --preservetùy chọn)
  • "bảo tồn" sẽ là mặc định cho rootvớitar
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.