Mọi câu trả lời khác ở đây đều yêu cầu quyền truy cập root, cho phép bất kỳ người dùng nào trên cùng một máy sao chép tệp hoặc yêu cầu chia sẻ mật khẩu. Đây là một phương pháp không:
Có USER2
(hãy gọi anh ta là Bob) chạy các lệnh sau (bạn có thể thay thế /tmp
bằng bất kỳ thư mục nào mà cả hai người dùng đều có quyền ghi, nhưng /tmp
lý tưởng vì theo mặc định, nó bị dính, ngăn người dùng độc hại phá hỏng quy trình này. bởi Bob có thể đọc được trên thế giới cũng hoạt động):
[bob@computer ~]$ touch /tmp/test.txt
[bob@computer ~]$ chmod 622 /tmp/test.txt
Điều này tạo ra một tập tin có thể ghi trên thế giới, nhưng không thể đọc được.
Sau đó, USER1
hãy (hãy gọi cô ấy là Alice) chạy (nếu bạn bị hoang tưởng, Alice có thể kiểm tra các quyền trước tiên để đảm bảo tệp được sở hữu bởi Bob):
[alice@computer ~]$ dd if="$HOME/test.txt" of=/tmp/test.txt
Điều này ghi đè lên nội dung của /tmp/test.txt
. Nếu bạn muốn kiểm tra tính toàn vẹn của tệp, Alice cũng nên tạo một hàm băm của tệp. Ví dụ:
[alice@computer ~]$ openssl sha1 < "$HOME/test.txt" > /tmp/test.txt.sha1
Thay vào đó, bạn có thể ký điện tử vào tệp hoặc bất kỳ phương pháp nào khác để đảm bảo tính toàn vẹn của tệp.
Và cuối cùng Bob di chuyển tệp và sở hữu nó:
[bob@computer ~]$ mv /tmp/test.txt "$HOME"
[bob@computer ~]$ chmod 600 "$HOME/test.txt"
Và Bob có thể kiểm tra tính toàn vẹn nếu anh ta thích. Nếu vậy, anh ta nên kiểm tra để đảm bảo chỉ Alice mới có thể viết thư /tmp/test.txt
.
[bob@computer ~]$ diff /tmp/test/txt.sha1 <(openssl sha1 < "$HOME/test.txt")
Nếu tập tin được sao chép chính xác, điều này sẽ không hiển thị đầu ra.