Kể từ khi thành lập, Linux đã được điều chỉnh để hỗ trợ môi trường nhiều người dùng. Với nhiều người dùng và nhóm trên một hệ thống làm việc, việc gặp phải các thư mục được chia sẻ giữa những người dùng trong cùng một nhóm là điều khá phổ biến và các vấn đề phát sinh từ việc chia sẻ tệp trong các thư mục. Trong bài viết này, chúng tôi sẽ thảo luận về cách bạn có thể sử dụng các bit cố định để tinh chỉnh quyền truy cập tệp trên các thư mục được chia sẻ.
Với mục đích minh họa, chúng tôi có một hệ thống với ba người dùng - john1, john2 và john3, tất cả đều là thành viên của nhóm chung “johns”
Giả sử “john1” tạo một thư mục mới có tên “shared-dir” nhằm chia sẻ cho tất cả người dùng của nhóm “johns”.
Với ls
, chúng ta có thể xem quyền của "shared-dir", có thể được diễn giải trong bảng sau:
Chỉ “john1” mới có thể đọc nội dung của thư mục và cũng có thể ghi vào thư mục. Vì chúng tôi đang làm việc với một thư mục dùng chung, chúng tôi muốn tất cả người dùng của nhóm có thể ghi vào “shared-dir”.
Đối với điều này, chúng tôi sẽ sửa đổi các quyền bằng cách sử dụng chmod
yêu cầu. Chúng tôi sẽ thêm quyền “ghi” cho tất cả người dùng của nhóm “johns” như được hiển thị bên dưới.
Chúng tôi có thể xem các quyền được cập nhật cho “shared-dir” như hình dưới đây. Phần được gạch chân màu vàng cho thấy rằng nhóm "johns" đã được cấp quyền "ghi".
Thêm tệp vào Thư mục được chia sẻ
Bây giờ “john1” thêm hai tệp (j1_file1.txt và j1_file2.txt) vào “shared-dir”
Để dễ hiểu, hai ký tự đầu tiên của tên tệp đồng nghĩa với tên người dùng.
Tương tự như vậy, “john2” cũng có thể “ghi” vào thư mục “shared-dir”
Hiện có bốn tệp trong “shared-dir”.
Có vấn đề gì với thiết lập hiện tại không?
Tệp “j1_file1.txt” được tạo bởi “john1”, đặt “john1” làm chủ sở hữu tệp. Bây giờ “john2” đăng nhập và cố gắng xóa tệp này và anh ấy sẽ có thể làm như vậy.
“John1” là chủ sở hữu tệp, nhưng “john2” đã có thể xóa tệp đó vì quyền “ghi” được cấp cho tất cả các thành viên của nhóm “johns”.
Kịch bản này không phải là lý tưởng. Chúng tôi muốn tất cả người dùng có thể ghi vào thư mục, nhưng chỉ chủ sở hữu tệp mới có thể xóa tệp. Làm thế nào để đạt được điều này?
Giới thiệu Sticky Bit
Bit dính là một quyền đặc biệt có thể được đặt trên một thư mục có quyền “ghi” được đặt cho nhóm có quyền truy cập vào nó. Bit này đảm bảo rằng tất cả các thành viên của nhóm đều có thể ghi vào thư mục, nhưng chỉ người đã tạo tệp, tức là chủ sở hữu tệp, mới có thể xóa tệp.
chmod
lệnh bằng +t
cờ có thể được sử dụng để đặt bit cố định trên một thư mục.
Quyền được cập nhật có thể được nhìn thấy bên dưới.
Bây giờ nếu “john2” cố gắng xóa tệp “j1_file2.txt” được tạo bởi “john1”, thì thao tác đó sẽ không được phép.
Nếu bạn xóa quyền "thực thi" đối với "người khác", như được hiển thị bên dưới:
sự tồn tại của bit dính trên thư mục được biểu thị bằng chữ hoa "T" trong phần "khác" của chuỗi quyền. Hành vi bit cố định trên thư mục vẫn giữ nguyên.
Biến thể của lệnh “chmod”
Dạng số của chmod
lệnh cũng có thể được sử dụng để đặt bit cố định trên một thư mục.
chmod nxyz <file_name>
ở đâu,
- n =1, đề cập đến bit dính. Các giá trị khác của “n” đề cập đến các quyền đặc biệt khác.
- x:quyền được cấp cho chủ sở hữu tệp
- y:quyền được cấp cho nhóm có quyền truy cập vào tệp
- z:quyền được cấp cho người khác
Để đặt bit dính trên “shared-dir”, hãy sử dụng lệnh sau:
chmod 1755 shared-dir
tạo ra kết quả tương tự như sử dụng +t
trên các quyền mặc định hiện có.
Việc sử dụng bit dính chỉ tốt cho các thư mục, sẽ không hợp lý nếu sử dụng nó cho các tệp.