1. Vì sao quản lý user và quyền là vấn đề cốt lõi?
Trong rất nhiều hệ thống, việc phân quyền thường được xử lý theo cách:
“Cho chạy trước, phân quyền tính sau”
Dùng chung một user cho mọi việc
Mọi thao tác đều chạy bằng
root
Cách làm này có thể tiện lúc đầu, nhưng về lâu dài sẽ gây:
Rủi ro bảo mật nghiêm trọng
Khó truy vết ai làm gì
Không thể bàn giao hệ thống
Một lỗi nhỏ có thể gây hậu quả lớn
Nguyên tắc quan trọng:
Phân quyền không để hạn chế người giỏi, mà để bảo vệ hệ thống.
2. Các khái niệm cần nắm: user – group – permission
2.1. User
User đại diện cho:
Một người
Hoặc một dịch vụ
Mỗi user có:
Thư mục home
UID riêng
Quyền riêng
2.2. Group
Group là tập hợp các user:
Giúp quản lý quyền theo vai trò
Tránh cấp quyền trực tiếp cho từng user
Nguyên tắc:
Cấp quyền qua group, không cấp trực tiếp cho user nếu có thể.
2.3. Permission (quyền)
Trên Linux, mỗi file/thư mục có 3 nhóm quyền:
Owner
Group
Others
Mỗi nhóm có:
Read (r)
Write (w)
Execute (x)
3. Nguyên tắc phân quyền cho Web Server production
Trong loạt bài này, chúng ta áp dụng các nguyên tắc:
Mỗi người dùng có user riêng
Mỗi dịch vụ có user riêng (khi cần)
Không dùng root để chạy dịch vụ
Quyền chỉ cấp ở mức cần thiết
Tránh chmod 777
Nguyên tắc vàng:
Hệ thống an toàn là hệ thống không cần “mở hết cho chắc”.
4. Quản lý user trong hệ thống
4.1. Liệt kê user hiện có
4.2. Tạo user mới (khi cần)
Mỗi user phục vụ một vai trò rõ ràng
Không tạo user chung cho nhiều người
4.3. Xóa user không cần thiết
Nếu cần xóa cả home directory:
5. Quản lý group
5.1. Tạo group theo vai trò
Ví dụ:
5.2. Thêm user vào group
Kiểm tra:
6. Phân quyền thư mục cơ bản cho Web Server
6.1. Tư duy phân quyền thư mục web
Thư mục web thường gồm:
Source code
File upload
Cache
Log
Nguyên tắc:
Web server chỉ được ghi nơi cần ghi
Không cho phép ghi toàn bộ thư mục web
6.2. Ví dụ phân quyền thư mục web
Giả sử thư mục web:
Thiết lập owner và group:
Thiết lập quyền:
7. Phân quyền cho dịch vụ (Nginx, PHP, v.v.)
Nginx chạy bằng user
www-dataPHP-FPM cũng chạy bằng
www-data
www-data tự động tạo khi cài nginx, không cần quan tâm, chỉ cần dùng
Nguyên tắc:
www-datakhông có quyền sudoChỉ có quyền đọc source
Chỉ ghi vào thư mục được phép (upload, cache)
Không cấp quyền:
Đây là dấu hiệu của hệ thống cấu hình sai.
8. Quản lý quyền sudo
8.1. Ai nên có quyền sudo?
User quản trị hệ thống
Không cấp sudo cho:
User dịch vụ
User ứng dụng
8.2. Kiểm tra quyền sudo
8.3. Không chỉnh trực tiếp file sudoers
Nếu cần chỉnh:
Luôn dùng visudo để tránh:
Lỗi cú pháp
Mất quyền sudo toàn hệ thống
9. Những lỗi phân quyền phổ biến
Dùng chung user cho nhiều người
Dùng root cho mọi thao tác
Dùng chmod 777 để “cho chạy nhanh”
Không biết dịch vụ đang chạy bằng user nào
Những lỗi này thường:
Không gây sự cố ngay, nhưng tạo lỗ hổng nghiêm trọng.
10. Checklist quản lý user & quyền cho production
Mỗi người dùng có user riêng
Dịch vụ không chạy bằng root
Phân quyền qua group
Không dùng chmod 777
Sudo được cấp có kiểm soát
11. Bài tiếp theo
Trong Bài 11, chúng ta sẽ hoàn thiện lớp bảo mật nền tảng:
Cấu hình firewall (UFW) theo nguyên tắc tối thiểu
Bài này sẽ giúp:
Chỉ mở đúng port cần thiết
Giảm bề mặt tấn công
Bảo vệ hệ thống từ tầng mạng
- Đăng nhập để gửi ý kiến