Không sử dụng sudo, tốt nhất là?
Không sử dụng sudo, tốt nhất là?
Câu trả lời:
Thử:
chattr +i filename
Mặc dù vậy, làm điều này sẽ làm cho tập tin không thể phục hồi được ngay cả bởi root
người dùng - sử dụng một cách thận trọng.
touch test && chattr +i test
nó ném một lỗi; chattr: Operation not permitted while setting flags on test
. Bạn cần sudo
cho việc này. Bên cạnh đó: vẫn có thể xóa tệp: sudo chattr -i test && rm test
hoạt động.
Không, điều này là không thể. Người dùng bình thường không thể xóa một tập tin: chắc chắn.
Bạn sẽ cần sudo
ngăn người dùng xóa các tập tin. Quản trị viên của bạn sẽ - luôn có thể xóa một tập tin.
sudo chattr +i test
có thể ngăn chặn xóa nhưng không yêu cầu sudo
. Một đơn giản sudo chattr -i test
làm cho nó có thể loại bỏ các tập tin. Không người dùng nào khác ngoài quản trị viên có thể sử dụngchattr
.
Và ... chỉ cần khởi động lại và chuyển sang chế độ cứu hộ sẽ cho phép người đó có thể xóa tệp đó. Sẽ là một rủi ro bảo mật nếu có một phương pháp để không bao giờ có thể xóa một tập tin.
Hơi thô thiển, nhưng điều này rất gần - nếu bạn xóa quyền truy cập ghi trên thư mục, các tệp bên trong nó không thể bị xóa. Và nó không yêu cầu sudo
nếu bạn sở hữu nó:
=^_^= izkata@izein:~$ mkdir test
=^_^= izkata@izein:~$ touch test/delme
=^_^= izkata@izein:~$ chmod a-w test
=^_^= izkata@izein:~$ echo 'Hello' > test/delme
=^_^= izkata@izein:~$ cat test/delme
Hello
=^_^= izkata@izein:~$ rm test/delme
rm: cannot remove `test/delme': Permission denied
Vì vậy, bạn có thể thiết lập quyền trên chính tệp theo cách bạn muốn.
Ngoài ra, như @Rinzwind đã nêu, chắc chắn có nhiều cách xung quanh nó.
Để xóa một tập tin, bạn cần có quyền ghi vào tất cả các thư mục mà tập tin được liên kết đến. Để hủy liên kết nó khỏi một thư mục, bạn cần có quyền ghi vào thư mục đó.
Vì vậy, miễn là bạn cấp quyền ghi (hoặc thậm chí quyền sở hữu) cho tệp nhưng không cho thư mục hoặc thư mục mà tệp được liên kết đến, tệp đó không thể bị xóa.
Cách tốt nhất để đạt được nó là liên kết tệp đó với một thư mục được sở hữu bởi root và không ai có thể ghi được. Bạn có thể làm cho nó thuộc sở hữu của bạn thay vào đó có nghĩa là cả bạn và root có thể xóa nó.
Điều đó vẫn sẽ cho phép người dùng khác liên kết tệp đó với các thư mục khác và hủy liên kết tệp từ đó sau đó, nhưng họ vẫn không thể xóa tệp vì họ có thể hủy liên kết tệp khỏi thư mục của riêng bạn.
Lưu ý rằng để hoạt động đầy đủ, quyền kiểm soát bằng văn bản của mọi thành phần đường dẫn đến tệp sẽ phải được kiểm soát. Bởi vì, ví dụ, nếu tập tin là /a/b/the-file
và bạn /a/b
không thể ghi được bởi bất kỳ ai nhưng mọi người đều có quyền truy cập bằng văn bản /a
, sau đó họ có thể đổi tên /a/b
thành một thứ khác và tạo lại của riêng họ /a/b
và tạo riêng của họ /a/b/the-file
ở đó.