Hệ thống phân quyền trong Linux - một trong những nền tảng quan trọng nhất của bảo mật Linux. Hiểu rõ cách hoạt động của quyền tập tin sẽ giúp quản lý máy chủ Linux hiệu quả và an toàn.
3.1. Cấu trúc quyền trong Linux
Khi sử dụng lệnh ls -l, sẽ thấy thông tin về quyền hiển thị ở cột đầu tiên, có dạng như sau:
Giải thích cấu trúc quyền:
Ký tự đầu tiên: Loại file Ba ký tự tiếp theo (rwx): Quyền của owner (chủ sở hữu) Ba ký tự tiếp theo (r-x): Quyền của group (nhóm) Ba ký tự cuối cùng (r--): Quyền của others (người dùng khác) Ý nghĩa của từng quyền:
Đối với file: Cho phép xem nội dung file Đối với thư mục: Cho phép liệt kê nội dung thư mục (xem tên file) Đối với file: Cho phép sửa đổi nội dung file Đối với thư mục: Cho phép tạo, xóa và đổi tên file trong thư mục x (execute): Quyền thực thi Đối với file: Cho phép chạy file như một chương trình Đối với thư mục: Cho phép truy cập vào thư mục (cd) và truy cập các file bên trong Biểu diễn số:
Mỗi quyền có giá trị số:
Tổng của ba giá trị này tạo thành một chữ số octal:
rwx = 4+2+1 = 7 (đầy đủ quyền) r-x = 4+0+1 = 5 (quyền đọc và thực thi) r-- = 4+0+0 = 4 (chỉ quyền đọc) Ví dụ: Quyền rwxr-xr-- được biểu diễn bằng số là: 754
Bảng tổng hợp quyền file phổ biến:
Mô tả và Mục đích sử dụng
Quyền 644 (rw-r--r--) là một trong những quyền phổ biến nhất cho các file thông thường, cho phép chủ sở hữu đọc và ghi file, trong khi nhóm và những người khác chỉ có thể đọc file.
3.2. Thay đổi quyền với chmod
Lệnh chmod (change mode) dùng để thay đổi quyền của file và thư mục.
Sử dụng chế độ ký tự:
Trong đó:
Sử dụng chế độ số:
Áp dụng đệ quy cho thư mục:
3.3. Thay đổi sở hữu với chown
Lệnh chown (change owner) dùng để thay đổi chủ sở hữu và nhóm của file và thư mục.
# Thay đổi chủ sở hữu
sudo chown username filename
# Thay đổi cả chủ sở hữu và nhóm
sudo chown username:groupname filename
# Chỉ thay đổi nhóm (có thể dùng chgrp)
sudo chown :groupname filename
# hoặc
sudo chgrp groupname filename
# Áp dụng đệ quy cho thư mục
sudo chown -R username:groupname directory_name
3.4. Quyền đặc biệt (Special Permissions)
SUID (Set User ID) - 4000
Khi đặt trên file thực thi, file sẽ chạy với quyền của chủ sở hữu file thay vì người dùng đang chạy Hiển thị: rws thay vì rwx trong quyền của owner Ví dụ: /usr/bin/passwd có SUID bit để người dùng có thể thay đổi mật khẩu SGID (Set Group ID) - 2000
Khi đặt trên file thực thi, file sẽ chạy với quyền của nhóm sở hữu file Khi đặt trên thư mục, các file mới tạo trong thư mục sẽ kế thừa nhóm của thư mục Hiển thị: rws thay vì rwx trong quyền của group Sticky Bit - 1000
Chủ yếu sử dụng cho thư mục Ngăn người dùng xóa file của người khác trong thư mục, ngay cả khi họ có quyền ghi vào thư mục Hiển thị: t thay vì x trong quyền của others Ví dụ: /tmp thường có sticky bit 3.5. Ví dụ thực tế về phân quyền
1. Thiết lập thư mục web server
2. Thiết lập thư mục chia sẻ cho một nhóm
3. Bảo vệ file cấu hình nhạy cảm
Thực hành
Tạo một file script và đặt quyền thực thi cho nó: Tạo một thư mục và đặt quyền cho nhóm có thể ghi vào: Thay đổi quyền sở hữu file và thư mục: Đặt SGID bit cho một thư mục chia sẻ: Em có thắc mắc gì về quyền trong Linux không? Đây là một phần rất quan trọng khi quản lý máy chủ Linux, vì nó liên quan trực tiếp đến bảo mật và khả năng truy cập của người dùng.