Ngăn chặn sửa đổi, xóa và đổi tên tệp, thư mục trong Linux

Tác giả sysadmin, T.M.Hai 20, 2022, 08:47:23 SÁNG

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Ngăn chặn sửa đổi, xóa và đổi tên tệp, thư mục trong Linux


Để ngăn một tệp hoặc thư mục vô tình hoặc cố ý bị sửa đổi, đổi tên hoặc xóa trong Linux, chúng ta có thể đặt cờ immutable sẽ vô hiệu hóa chức năng này.

Cờ bất biến là một thuộc tính hệ thống tệp mở rộng và có thể được đặt trên cả tệp và thư mục. Với cờ này, tệp hoặc thư mục không thể được sửa đổi, đổi tên hoặc xóa mà không xóa cờ bất biến trước. Đặt cờ này yêu cầu quyền root.

Trong ví dụ sau, chúng tôi tạo một tệp trống mới có tên là 'no-edit.txt'.

Mã nguồn [Chọn]
[ root@server ~]# touch no-edit.txt
Chúng ta có thể sử dụng lệnh lsattr trên tệp này để xem các thuộc tính mở rộng của nó, trong trường hợp này chỉ có 'e' theo mặc định.

Mã nguồn [Chọn]
[ root@server ~]# lsattr no-edit.txt
--------------e----no-edit.txt

Tiếp theo, chúng tôi sẽ ghi một số dữ liệu vào tệp, hoạt động như mong đợi.

Mã nguồn [Chọn]
[ root@server ~]# echo test >> no-edit.txt
[ root@server ~]# cat no-edit.txt
test

Bây giờ chúng tôi sử dụng lệnh chattr để đặt cờ 'i', trong đó tôi đại diện cho giá trị bất biến.

Mã nguồn [Chọn]
[ root@server ~]# chattr +i no-edit.txt
Bây giờ chúng ta có thể chạy lại lệnh lsattr để xác nhận rằng cờ 'i' hiện được liệt kê trên tệp.

Mã nguồn [Chọn]
[ root@server ~]# lsattr no-edit.txt   
--------i---------e----no-edit.txt

Tệp no-edit.txt hiện không thay đổi được, vì vậy hãy thử ghi thêm dữ liệu vào tệp và xem liệu chúng tôi có thể xóa hoặc đổi tên tệp không.

Mã nguồn [Chọn]
[ root@server ~]# echo more-test >> no-edit.txt
zsh: operation not permitted: no-edit.txt
[ root@server ~]# rm -f no-edit.txt
rm: cannot remove 'no-edit.txt': Operation not permitted
[ root@server ~]# mv no-edit.txt no-edit2.txt
mv: cannot move 'no-edit.txt' to 'no-edit2.txt': Operation not permitted

Như chúng ta có thể thấy trong ví dụ này, chúng ta không thể sửa đổi, xóa hoặc đổi tên tệp thử nghiệm của mình vì nó đã được đặt thành không thay đổi. Điều này hoạt động hoàn toàn giống như khi áp dụng cờ 'i' cho một thư mục, tuy nhiên nếu bạn đặt một thư mục là bất biến, điều này sẽ áp dụng cho tất cả các tệp bên trong, nghĩa là không thể sửa đổi bất kỳ thư mục con hoặc tệp nào trong thư mục bất biến.

Nếu bạn muốn có thể thay đổi, xóa hoặc đổi tên một tệp hoặc thư mục không thể thay đổi, trước tiên bạn phải xóa cờ 'i'. Điều này được thực hiện lại bằng cách sử dụng lệnh thay đổi thuộc tính (chattr), như hình bên dưới.

Mã nguồn [Chọn]
[ root@server ~]# chattr -i no-edit.txt
[ root@server ~]# lsattr no-edit.txt
--------------e----no-edit.txt

Tại thời điểm này, chúng ta có thể chỉnh sửa, xóa hoặc đổi tên tệp no-edit.txt vì nó không còn bất biến nữa.

Trong Linux, chúng ta có thể đặt cờ bất biến trên tệp hoặc thư mục bằng lệnh 'chattr'. Khi không thể thay đổi, sẽ không thể xóa, sửa đổi hoặc đổi tên tệp hoặc thư mục mà nó đã được áp dụng. Chúng ta có thể sử dụng lệnh 'lsattr' để liệt kê các thuộc tính trên một tệp hoặc thư mục cụ thể để xem cờ 'i' có ở đúng vị trí hay không. Một siêu người dùng có thể xóa cờ bất biến, cho phép xóa, chỉnh sửa hoặc đổi tên nó.