Đây là lệnh cpposix có thể được chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình giả lập trực tuyến MAC OS
CHƯƠNG TRÌNH:
TÊN
cp - sao chép tệp
SYNOPSIS
cp [−Pfip] tập tin nguồn tập tin mục tiêu
cp [−Pfip] tập tin nguồn... mục tiêu
cp −R [−H | −L | −P] [−fip] tập tin nguồn... mục tiêu
MÔ TẢ
Dạng tóm tắt đầu tiên được biểu thị bằng hai toán hạng, cả hai đều không phải là tệp hiện có của
gõ thư mục. Các cp tiện ích sẽ sao chép nội dung của tập tin nguồn (hoặc nếu tập tin nguồn
là một tệp có kiểu liên kết tượng trưng, nội dung của tệp được tham chiếu bởi tập tin nguồn) Để
con đường đích được đặt tên bởi tập tin mục tiêu.
Dạng tóm tắt thứ hai được biểu thị bằng hai hoặc nhiều toán hạng trong đó −R tùy chọn không phải là
được chỉ định và hình thức tóm tắt đầu tiên không được áp dụng. Sẽ là một lỗi nếu có
tập tin nguồn là một tệp thuộc loại thư mục, nếu mục tiêu không tồn tại, hoặc nếu mục tiêu không
đặt tên cho một thư mục. Các cp tiện ích sẽ sao chép nội dung của mỗi tập tin nguồn (hoặc nếu
tập tin nguồn là một tệp có kiểu liên kết tượng trưng, nội dung của tệp được tham chiếu bởi
tập tin nguồn) đến đường dẫn đích được đặt tên bằng cách nối của mục tiêu, một đơn
nhân vật nếu mục tiêu không kết thúc trong một và thành phần cuối cùng của
tập tin nguồn.
Dạng tóm tắt thứ ba được biểu thị bằng hai hoặc nhiều toán hạng trong đó −R Tùy chọn là
được chỉ định. Các cp tiện ích sẽ sao chép từng tệp trong hệ thống phân cấp tệp bắt nguồn từ mỗi
tập tin nguồn đến một đường dẫn đích có tên như sau:
* Nếu như mục tiêu tồn tại và đặt tên cho một thư mục hiện có, tên của
đường dẫn đích cho mỗi tệp trong hệ thống phân cấp tệp sẽ là phần nối của
mục tiêu, một đơn nhân vật nếu mục tiêu không kết thúc trong một , và
tên đường dẫn của tệp liên quan đến thư mục chứa tập tin nguồn.
* Nếu như mục tiêu không tồn tại và hai toán hạng được chỉ định, tên của
con đường đích cho tập tin nguồn sẽ mục tiêu; tên của tương ứng
đường dẫn đích cho tất cả các tệp khác trong hệ thống phân cấp tệp sẽ là đường nối
of mục tiêu, Một ký tự và tên đường dẫn của tệp liên quan đến tập tin nguồn.
Sẽ là một lỗi nếu mục tiêu không tồn tại và nhiều hơn hai toán hạng được chỉ định, hoặc
if mục tiêu tồn tại và không đặt tên cho một thư mục.
Trong mô tả sau đây, thuật ngữ tập tin đích đề cập đến tệp được đặt tên bởi
đường dẫn đích. Thời hạn tập tin nguồn đề cập đến tệp đang được sao chép, cho dù
được chỉ định như một toán hạng hoặc một tệp trong hệ thống phân cấp tệp bắt nguồn từ tập tin nguồn toán hạng. Nếu như
tập tin nguồn là một tệp có kiểu liên kết tượng trưng:
* Nếu −R tùy chọn không được chỉ định, cp sẽ thực hiện các hành động dựa trên loại và
nội dung của tệp được tham chiếu bởi liên kết tượng trưng chứ không phải bởi liên kết tượng trưng
chính nó, trừ khi −P tùy chọn đã được chỉ định.
* Nếu −R tùy chọn đã được chỉ định:
- Nếu không có tùy chọn nào −H, −L, cũng không −P đã được chỉ định, không xác định được cái nào trong số
−H, −L, hoặc là −P sẽ được sử dụng làm mặc định.
- Nếu −H tùy chọn đã được chỉ định, cp sẽ thực hiện các hành động dựa trên loại và
nội dung của tệp được tham chiếu bởi bất kỳ liên kết tượng trưng nào được chỉ định dưới dạng tập tin nguồn
toán hạng.
- Nếu −L tùy chọn đã được chỉ định, cp sẽ thực hiện các hành động dựa trên loại và
nội dung của tệp được tham chiếu bởi bất kỳ liên kết tượng trưng nào được chỉ định dưới dạng tập tin nguồn
toán hạng hoặc bất kỳ liên kết tượng trưng nào gặp phải trong quá trình truyền tải cấu trúc phân cấp tệp.
- Nếu −P tùy chọn đã được chỉ định, cp sẽ sao chép bất kỳ liên kết tượng trưng nào được chỉ định dưới dạng
tập tin nguồn toán hạng và bất kỳ liên kết tượng trưng nào gặp phải trong quá trình duyệt tệp
phân cấp và sẽ không tuân theo bất kỳ liên kết tượng trưng nào.
Cho mỗi tập tin nguồn, các bước sau sẽ được thực hiện:
1. Nếu tập tin nguồn tham chiếu cùng một tệp với tập tin đích, cp có thể viết một chẩn đoán
thông báo lỗi chuẩn; nó sẽ không làm gì hơn với tập tin nguồn và sẽ tiếp tục
vào bất kỳ tệp nào còn lại.
2. Nếu tập tin nguồn là loại thư mục, các bước sau sẽ được thực hiện:
Một. Nếu −R tùy chọn không được chỉ định, cp sẽ viết một thông báo chẩn đoán cho
lỗi tiêu chuẩn, không làm gì thêm với tập tin nguồnvà tiếp tục với bất kỳ
các tập tin.
NS. Nếu như tập tin nguồn không được chỉ định là một toán hạng và tập tin nguồn là dấu chấm hoặc dấu chấm,
cp sẽ không làm gì hơn với tập tin nguồn và tiếp tục với bất kỳ tệp nào còn lại.
NS. Nếu như tập tin đích tồn tại và nó là một loại tệp không được Giao diện Hệ thống chỉ định
khối lượng của POSIX.1‐2008, hành vi được xác định bởi việc triển khai.
d. Nếu tập tin đích tồn tại và nó không thuộc loại thư mục, cp sẽ viết một chẩn đoán
thông báo lỗi chuẩn, không cần làm gì thêm với tập tin nguồn hoặc bất kỳ tệp nào bên dưới
tập tin nguồn trong phân cấp tệp và chuyển sang bất kỳ tệp nào còn lại.
e. Nếu thư mục tập tin đích không tồn tại, nó sẽ được tạo bằng tệp
các bit quyền được đặt thành cùng giá trị với giá trị của tập tin nguồn, được sửa đổi bởi
mặt nạ tạo tệp của người dùng nếu −p tùy chọn không được chỉ định, và sau đó
theo bitwise HOẶC với S_IRWXU. Nếu như tập tin đích không thể được tạo, cp phải
viết thông báo chẩn đoán lỗi chuẩn, không cần làm gì thêm với tập tin nguồn,
và tiếp tục với bất kỳ tệp nào còn lại. Nó không được xác định nếu cp cố gắng sao chép tệp
trong hệ thống phân cấp tệp bắt nguồn từ tập tin nguồn.
NS. Các tệp trong thư mục tập tin nguồn sẽ được sao chép vào thư mục tập tin đích,
thực hiện bốn bước (1 đến 4) được liệt kê ở đây với các tệp dưới dạng tập tin nguồns.
NS. Nếu như tập tin đích đã được tạo, các bit cho phép tệp của nó sẽ được thay đổi (nếu cần)
giống như của tập tin nguồn, được sửa đổi bởi mặt nạ tạo tệp của
người dùng nếu −p tùy chọn không được chỉ định.
NS. Các cp tiện ích sẽ không làm gì hơn với tập tin nguồn và tiếp tục phần còn lại
các tập tin.
3. Nếu tập tin nguồn thuộc loại tệp thông thường, các bước sau sẽ được thực hiện:
Một. Hành vi không được xác định nếu tập tin đích tồn tại và được viết bởi một
bươc chân. Ngược lại, nếu tập tin đích tồn tại, các bước sau sẽ được thực hiện:
tôi. Nếu −i tùy chọn đang có hiệu lực, cp tiện ích sẽ viết một lời nhắc đến
lỗi tiêu chuẩn và đọc một dòng từ đầu vào tiêu chuẩn. Nếu phản hồi là
không khẳng định, cp sẽ không làm gì hơn với tập tin nguồn và tiếp tục với bất kỳ
các tệp còn lại.
ii. Một bộ mô tả tệp cho tập tin đích sẽ có được bằng cách thực hiện các hành động
tương đương với mở() hàm được xác định trong phần Giao diện Hệ thống của
POSIX.1‐2008 được gọi bằng cách sử dụng tập tin đích như con đường đối số và bitwise-
bao gồm HOẶC của O_WRONLY và O_TRUNC dưới dạng tụt hậu tranh luận.
iii. Nếu cố gắng lấy bộ mô tả tệp không thành công và −f tùy chọn là trong
hiệu ứng, cp sẽ cố gắng xóa tệp bằng cách thực hiện các hành động tương đương
đến bỏ liên kết() hàm được xác định trong phần Giao diện Hệ thống của
POSIX.1‐2008 được gọi bằng cách sử dụng tập tin đích như con đường tranh luận. Nếu nỗ lực này
thành công, cp sẽ tiếp tục với bước 3b.
NS. Nếu như tập tin đích không tồn tại, một bộ mô tả tệp sẽ được lấy bằng cách thực hiện
hành động tương đương với mở() hàm được xác định trong tập Giao diện Hệ thống
của POSIX.1‐2008 được gọi bằng cách sử dụng tập tin đích như con đường đối số và bitwise-
bao gồm HOẶC của O_WRONLY và O_CREAT dưới dạng tụt hậu tranh luận. Quyền đối với tệp
bit của tập tin nguồn sẽ là chế độ tranh luận.
NS. Nếu cố gắng lấy bộ mô tả tệp không thành công, cp sẽ viết một chẩn đoán
thông báo lỗi chuẩn, không cần làm gì thêm với tập tin nguồnvà tiếp tục với bất kỳ
các tệp còn lại.
NS. Nội dung của tập tin nguồn sẽ được ghi vào bộ mô tả tệp. Viết bất kỳ
lỗi sẽ gây ra cp để viết thông báo chẩn đoán lỗi chuẩn và tiếp tục
sang bước 3e.
e. Bộ mô tả tệp sẽ bị đóng.
NS. Các cp tiện ích sẽ không làm gì hơn với tập tin nguồn. Nếu xảy ra lỗi ghi
trong bước 3d, nó không được xác định nếu cp tiếp tục với mọi tệp còn lại. Nếu không
lỗi ghi xảy ra ở bước 3d, cp sẽ tiếp tục với bất kỳ tệp nào còn lại.
4. Nếu không, −R tùy chọn đã được chỉ định và các bước sau sẽ được thực hiện:
a. tập tin đích sẽ được tạo với cùng một loại tệp như tập tin nguồn.
NS. Nếu như tập tin nguồn là một tệp thuộc loại FIFO, các bit cấp phép tệp sẽ giống nhau
như của nguồn_file, được sửa đổi bởi mặt nạ tạo tệp của người dùng nếu −p
tùy chọn không được chỉ định. Nếu không, các quyền, ID chủ sở hữu và ID nhóm của
tập tin đích được xác định bởi triển khai.
Nếu việc tạo này không thành công vì bất kỳ lý do gì, cp sẽ viết một thông báo chẩn đoán cho
lỗi tiêu chuẩn, không làm gì thêm với tập tin nguồnvà tiếp tục với bất kỳ
các tập tin.
NS. Nếu như tập tin nguồn là một tệp có kiểu liên kết tượng trưng và các tùy chọn yêu cầu
bản thân liên kết tượng trưng sẽ được thực hiện, tên đường dẫn có trong tập tin đích phải
giống với tên đường dẫn có trong tập tin nguồn.
Nếu điều này không thành công vì bất kỳ lý do gì, cp sẽ viết một thông báo chẩn đoán cho tiêu chuẩn
lỗi, không làm gì thêm với tập tin nguồnvà tiếp tục với bất kỳ tệp nào còn lại.
Nếu việc triển khai cung cấp các cơ chế kiểm soát truy cập bổ sung hoặc thay thế (xem
Khối lượng Định nghĩa cơ bản của POSIX.1‐2008, Phần 4.4, Tập tin Truy Cập Quyền), của chúng
hiệu ứng trên các bản sao của tệp được xác định bởi việc triển khai.
LỰA CHỌN
Sản phẩm cp tiện ích sẽ phù hợp với khối lượng Định nghĩa cơ sở của POSIX.1‐2008, Phần 12.2,
Tiện ích cú pháp Hướng dẫn.
Các tùy chọn sau sẽ được hỗ trợ:
−f Nếu không thể lấy được bộ mô tả tệp cho tệp đích, như được mô tả trong
bước 3.a.ii., cố gắng hủy liên kết tệp đích và tiếp tục.
−H Thực hiện các hành động dựa trên loại và nội dung của tệp được tham chiếu bởi bất kỳ
liên kết tượng trưng được chỉ định là tập tin nguồn toán hạng.
−i Viết lời nhắc cho lỗi chuẩn trước khi sao chép vào bất kỳ thư mục nào hiện có
tệp đích. Nếu phản hồi từ đầu vào tiêu chuẩn là khẳng định,
sao chép sẽ được cố gắng; nếu không, nó sẽ không.
−L Thực hiện các hành động dựa trên loại và nội dung của tệp được tham chiếu bởi bất kỳ
liên kết tượng trưng được chỉ định là tập tin nguồn toán hạng hoặc bất kỳ liên kết tượng trưng nào
gặp phải trong quá trình duyệt phân cấp tệp.
−P Thực hiện các hành động trên bất kỳ liên kết tượng trưng nào được chỉ định dưới dạng tập tin nguồn toán hạng hoặc bất kỳ
liên kết tượng trưng gặp phải trong quá trình duyệt phân cấp tệp.
−p Sao chép các đặc điểm sau của từng tệp nguồn trong tệp nguồn tương ứng
tệp đích:
1. Thời điểm sửa đổi dữ liệu lần cuối và thời điểm truy cập lần cuối. Nếu điều này
sao chép không thành công vì bất kỳ lý do gì, cp sẽ viết một thông báo chẩn đoán cho
lỗi tiêu chuẩn.
2. ID người dùng và ID nhóm. Nếu sự sao chép này không thành công vì bất kỳ lý do gì, nó là
không xác định liệu cp ghi thông báo chẩn đoán lỗi chuẩn.
3. Các bit cho phép tệp và các bit S_ISUID và S_ISGID. Khác,
được xác định bởi thực thi, các bit cũng có thể bị trùng lặp. Nếu sự trùng lặp này
thất bại vì bất kỳ lý do gì, cp sẽ viết một thông báo chẩn đoán lỗi chuẩn.
Nếu ID người dùng hoặc ID nhóm không thể được sao chép, các bit cấp quyền tệp
S_ISUID và S_ISGID sẽ bị xóa. Nếu các bit này có trong nguồn
nhưng không được sao chép trong tệp đích, không xác định được liệu
cp ghi thông báo chẩn đoán lỗi chuẩn.
Thứ tự mà các đặc điểm trước đó được sao chép là không xác định.
Sản phẩm tập tin đích sẽ không bị xóa nếu các đặc điểm này không thể được bảo tồn.
−R Sao chép phân cấp tệp.
Chỉ định nhiều hơn một trong các tùy chọn loại trừ lẫn nhau −H, −Lvà −P sẽ không
được coi là một lỗi. Tùy chọn cuối cùng được chỉ định sẽ xác định hành vi của
tiện ích.
TOÁN HẠNG
Các toán hạng sau sẽ được hỗ trợ:
tập tin nguồn
Tên đường dẫn của tệp sẽ được sao chép. Nếu một tập tin nguồn toán hạng là '-', nó có trách nhiệm
tham chiếu đến một tệp có tên -; triển khai không được coi nó là tiêu chuẩn có nghĩa
đầu vào.
tập tin mục tiêu
Tên đường dẫn của một tệp hiện có hoặc không tồn tại, được sử dụng cho đầu ra khi một
tệp được sao chép. Nếu một tập tin mục tiêu toán hạng là '-', nó sẽ tham chiếu đến một tệp có tên
-; triển khai không được coi nó như là đầu ra tiêu chuẩn.
mục tiêu Tên đường dẫn của một thư mục để chứa các tệp đã sao chép.
STDIN
Đầu vào chuẩn phải được sử dụng để đọc dòng đầu vào theo từng lời nhắc
được chỉ định trong phần STDERR. Nếu không, đầu vào chuẩn sẽ không được sử dụng.
ĐẦU VÀO CÁC TẬP TIN
Các tệp đầu vào được chỉ định làm toán hạng có thể thuộc bất kỳ loại tệp nào.
MÔI TRƯỜNG BIẾN
Các biến môi trường sau đây sẽ ảnh hưởng đến việc thực hiện cp:
NGÔN NGỮ Cung cấp giá trị mặc định cho các biến quốc tế hóa chưa được đặt hoặc
vô giá trị. (Xem tập Định nghĩa cơ bản của POSIX.1‐2008, Phần 8.2,
quốc tế hóa Biến ưu tiên quốc tế hóa
các biến được sử dụng để xác định giá trị của danh mục ngôn ngữ.)
LC_ALL Nếu được đặt thành giá trị chuỗi không trống, hãy ghi đè giá trị của tất cả các chuỗi khác
các biến quốc tế hóa.
LC_THU THẬP
Xác định ngôn ngữ cho hành vi của các phạm vi, các lớp tương đương và đa
các phần tử đối chiếu ký tự được sử dụng trong biểu thức chính quy mở rộng được xác định cho
các vâng, vâng, từ khóa địa phương trong LC_MESSAGES thể loại.
LC_CTYPE Xác định ngôn ngữ để diễn giải chuỗi byte dữ liệu văn bản
dưới dạng ký tự (ví dụ: byte đơn trái ngược với ký tự nhiều byte trong
đối số và tệp đầu vào) và hành vi của các lớp ký tự được sử dụng trong
biểu thức chính quy mở rộng được xác định cho vâng, vâng, từ khóa địa phương trong
LC_MESSAGES thể loại.
LC_MESSAGES
Xác định ngôn ngữ được sử dụng để xử lý câu trả lời khẳng định và ngôn ngữ được sử dụng
ảnh hưởng đến định dạng và nội dung của thông báo chẩn đoán và lời nhắc được viết tới
lỗi tiêu chuẩn.
NLSPATH Xác định vị trí của danh mục thư để xử lý LC_MESSAGES.
BẤT NGỜ SỰ KIỆN
Mặc định.
GIỚI THIỆU
Không được sử dụng.
STDERR
Một lời nhắc phải được ghi vào lỗi tiêu chuẩn trong các điều kiện quy định trong
PHẦN MÔ TẢ. Lời nhắc phải chứa tên đường dẫn đích, nhưng định dạng của nó là
nếu không thì không xác định. Nếu không, lỗi tiêu chuẩn sẽ chỉ được sử dụng để chẩn đoán
tin nhắn.
OUTPUT CÁC TẬP TIN
Các tệp đầu ra có thể thuộc bất kỳ loại nào.
ĐA THẾ HỆ MÔ TẢ
Không có.
EXIT TÌNH TRẠNG
Các giá trị thoát sau sẽ được trả về:
0 Tất cả các tệp đã được sao chép thành công.
> 0 Đã xảy ra lỗi.
HẬU QUẢ OF LRI
If cp bị kết thúc sớm bởi một tín hiệu hoặc lỗi, các tệp hoặc cấu trúc phân cấp tệp có thể bị
chỉ được sao chép một phần và các tệp và thư mục có thể có quyền hoặc quyền truy cập không chính xác
và thời gian sửa đổi.
Sản phẩm tiếp theo phần đang nhiều thông tin.
ỨNG DỤNG SỬ DỤNG
Các bit set-user-ID và set-group-ID được xóa rõ ràng khi tệp được tạo. Cái này
là ngăn người dùng tạo các chương trình được set-user-ID hoặc set-group-ID cho họ
khi sao chép tệp hoặc để làm cho các tệp set-user-ID hoặc set-group-ID có thể truy cập được đối với các nhóm mới
của người dùng. Ví dụ: nếu một tệp là set-user-ID và bản sao có ID nhóm khác
so với nguồn, một nhóm người dùng mới có quyền thực thi đối với chương trình set-user-ID hơn
đã làm trước đây. Đặc biệt, đây là một vấn đề đối với các superusers sao chép cây của người dùng.
VÍ DỤ
Không có.
CƠ SỞ LÝ LUẬN
Sản phẩm −i tùy chọn tồn tại trên các hệ thống BSD, cung cấp cho các ứng dụng và người dùng một cách để tránh
vô tình xóa các tập tin khi sao chép. Mặc dù phiên bản 4.3 BSD không nhắc nếu
đầu vào tiêu chuẩn không phải là thiết bị đầu cuối, các nhà phát triển tiêu chuẩn quyết định rằng việc sử dụng −i là một
yêu cầu tương tác, vì vậy khi đường dẫn đích tồn tại, tiện ích sẽ
hướng dẫn từ bất cứ điều gì phản hồi trên đầu vào tiêu chuẩn.
Định dạng chính xác của lời nhắc tương tác không được xác định. Chỉ tính chất chung của
nội dung của lời nhắc được chỉ định bởi vì việc triển khai có thể muốn mô tả nhiều hơn
lời nhắc so với những lời nhắc được sử dụng trên các triển khai trước đây. Do đó, một ứng dụng sử dụng
−i tùy chọn dựa vào hệ thống để cung cấp hộp thoại phù hợp nhất trực tiếp với người dùng,
dựa trên hành vi được chỉ định.
Sản phẩm −p tùy chọn là thông lệ lịch sử trên hệ thống BSD, sao chép thời gian của dữ liệu cuối cùng
sửa đổi và thời gian của lần truy cập cuối cùng. Khối lượng này của POSIX.1‐2008 mở rộng nó để bảo tồn
ID người dùng và nhóm, cũng như quyền đối với tệp. Yêu cầu này có hiển nhiên
vấn đề trong đó các thư mục gần như chắc chắn được sửa đổi sau khi được sao chép. Cái này
khối lượng của POSIX.1‐2008 yêu cầu giữ nguyên thời gian sửa đổi. Tuyên bố
rằng thứ tự mà các đặc điểm được sao chép không được xác định là cho phép
triển khai để cung cấp lượng bảo mật tối đa cho người dùng. Triển khai
nên tính đến các vấn đề bảo mật rõ ràng liên quan đến việc thiết lập chủ sở hữu, nhóm,
và chế độ không đúng thứ tự hoặc tạo tệp với chủ sở hữu, nhóm hoặc chế độ khác với
giá trị cuối cùng.
Không xác định được liệu cp ghi thông báo chẩn đoán khi người dùng và ID nhóm không thể
được thiết lập do thực tiễn rộng rãi của người dùng sử dụng −p để sao chép một số phần của
đặc điểm tệp, thờ ơ với sự sao chép của những người khác. Triển khai lịch sử
chỉ viết thông báo chẩn đoán về các lỗi khác với [EPERM].
Các phiên bản trước của tiêu chuẩn này bao gồm hỗ trợ cho −r tùy chọn để sao chép tệp
hệ thống phân cấp. Các −r tùy chọn là thông lệ lịch sử trên BSD và các hệ thống có nguồn gốc từ BSD. Cái này
tùy chọn không còn được chỉ định bởi POSIX.1‐2008 nhưng có thể có trong một số triển khai.
Sản phẩm −R tùy chọn đã được thêm vào như một từ đồng nghĩa với −r tùy chọn, được chọn để nhất quán với
tất cả các tùy chọn khác trong tập này của POSIX.1‐2008 có gốc thư mục đệ quy.
Sự khác biệt giữa −R và loại bỏ −r lựa chọn đang được điều trị bởi cp của tập tin
loại khác với thông thường và thư mục. Nó được xác định bằng cách triển khai - tùy chọn
đã xử lý các tệp đặc biệt để cho phép cả triển khai lịch sử và những tệp đã chọn
hỗ trợ −r với những khả năng tương tự như −R được xác định bởi tập này của POSIX.1‐2008. Các
nguyên −r vì các lý do lịch sử, cờ không xử lý các tệp đặc biệt khác với
các tệp thông thường, nhưng luôn đọc tệp và sao chép nội dung của nó. Điều này có vấn đề rõ ràng
với sự hiện diện của các loại tệp đặc biệt; ví dụ: thiết bị ký tự, FIFO và ổ cắm.
Khi xảy ra lỗi trong quá trình sao chép phân cấp tệp, cp được yêu cầu cố gắng
sao chép các tệp ở cùng cấp trong hệ thống phân cấp hoặc cao hơn tệp bị lỗi
xảy ra. Nó không được xác định nếu cp sẽ cố gắng sao chép các tệp bên dưới tệp nơi
đã xảy ra lỗi (không thể thành công trong mọi trường hợp).
Quyền, chủ sở hữu và nhóm của các loại tệp đặc biệt đã được tạo ra đã bị cố tình để lại
như việc triển khai được xác định. Điều này là để cho phép các hệ thống đáp ứng các yêu cầu đặc biệt (đối với
ví dụ, cho phép người dùng tạo các thiết bị đặc biệt, nhưng yêu cầu chúng phải
thuộc sở hữu của một nhóm nhất định). Nói chung, chúng tôi đặc biệt đề xuất rằng các quyền,
chủ sở hữu và nhóm giống như thể người dùng đã chạy lịch sử mknod, lnhoặc khác
tiện ích để tạo tệp. Cũng có thể là các đặc quyền bổ sung được yêu cầu để
tạo khối, ký tự hoặc các loại tệp đặc biệt khác do triển khai xác định.
Thêm vào đó, −p tùy chọn yêu cầu rõ ràng rằng tất cả set-user-ID và set-group-ID
quyền sẽ bị hủy nếu không thể đặt bất kỳ ID chủ sở hữu hoặc nhóm nào. Đây là để giữ
người dùng vô tình cho đi đặc quyền khi sao chép chương trình.
Khi tạo các tệp thông thường, các phiên bản lịch sử của cp sử dụng chế độ của tệp nguồn như
được sửa đổi bởi mặt nạ tạo chế độ tệp. Các lựa chọn khác sẽ là sử dụng chế độ
tệp nguồn không bị sửa đổi bởi mặt nạ tạo hoặc sử dụng cùng một chế độ như sẽ được cung cấp
đến một tệp mới do người dùng tạo (cộng với các bit thực thi của tệp nguồn) và sau đó
sửa đổi nó bằng mặt nạ tạo chế độ tệp. Trong trường hợp không có bất kỳ lý do mạnh mẽ nào để thay đổi
thực tiễn lịch sử, phần lớn nó đã được giữ lại.
Khi tạo thư mục, các phiên bản lịch sử của cp sử dụng chế độ của thư mục nguồn,
cộng với các bit đọc, ghi và tìm kiếm cho chủ sở hữu, như được sửa đổi bằng cách tạo chế độ tệp
mặt nạ. Điều này được thực hiện để cp có thể sao chép cây mà người dùng có quyền đọc, nhưng
chủ sở hữu không. Một tác dụng phụ là nếu mặt nạ tạo tệp từ chối chủ sở hữu
quyền, cp không thành công. Ngoài ra, sau khi sao chép xong, các phiên bản lịch sử của cp thiết lập
quyền trên thư mục đã tạo giống với thư mục nguồn, không bị sửa đổi bởi
mặt nạ tạo tệp.
Hành vi này đã được sửa đổi để cp luôn có thể tạo nội dung của
thư mục, không phụ thuộc vào mặt nạ tạo tệp. Sau khi sao chép xong, các quyền
được đặt giống với thư mục nguồn, như được sửa đổi bởi mặt nạ tạo tệp.
Thay đổi sau này so với hành vi lịch sử là để ngăn người dùng vô tình tạo
thư mục có quyền vượt quá những quyền mà họ thường đặt và để nhất quán với
hành vi của cp trong việc tạo tệp.
Nó không phải là một yêu cầu mà cp phát hiện nỗ lực sao chép tệp vào chính nó; Tuy vậy,
việc triển khai được khuyến khích mạnh mẽ để làm như vậy. Các triển khai trước đây đã được phát hiện
nỗ lực trong hầu hết các trường hợp.
Có hai phương pháp sao chép các cây con trong tập POSIX.1‐2008 này. Phương pháp khác
được mô tả như một phần của khách tiện ích (xem khách). Cả hai phương pháp đều là thực tiễn lịch sử.
Sản phẩm cp tiện ích cung cấp một giao diện đơn giản hơn, trực quan hơn, trong khi khách cung cấp một tốt hơn
mức độ chi tiết của kiểm soát. Mỗi cái cung cấp chức năng bổ sung cho cái kia; trong
riêng, khách duy trì cấu trúc liên kết cứng của hệ thống phân cấp, trong khi cp không làm. Nó
là ý định của các nhà phát triển tiêu chuẩn rằng các kết quả tương tự nhau (sử dụng
kết hợp tùy chọn trong cả hai tiện ích). Các kết quả không bắt buộc phải giống nhau;
dường như không có đủ lợi ích cho các ứng dụng để cân bằng sự khó khăn của
triển khai phải đảm bảo rằng các kết quả sẽ giống hệt nhau.
Từ ngữ cho phép cp sao chép một thư mục vào các loại tệp do triển khai xác định thì không
được chỉ định bởi khối lượng Giao diện Hệ thống của POSIX.1‐2008 được cung cấp để
triển khai hỗ trợ các liên kết tượng trưng không bắt buộc phải cấm sao chép thư mục
đến các liên kết tượng trưng. Các phần mở rộng khác cho khối lượng Giao diện Hệ thống của tệp POSIX.1‐2008
các loại cũng có thể cần sử dụng lỗ hổng này.
TƯƠNG LAI HƯỚNG DẪN
Không có.
Sử dụng cpposix trực tuyến bằng các dịch vụ onworks.net