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