Website được thiết kế tối ưu cho thành viên chính thức. Hãy Đăng nhập hoặc Đăng ký để truy cập đầy đủ nội dung và chức năng. Nội dung bạn cần không thấy trên website, có thể do bạn chưa đăng nhập. Nếu là thành viên của website, bạn cũng có thể yêu cầu trong nhóm Zalo "CNTT" các nội dung bạn quan tâm.

10. Quản lý user, group và phân quyền cơ bản

ICT

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:

  1. Mỗi người dùng có user riêng

  2. Mỗi dịch vụ có user riêng (khi cần)

  3. Không dùng root để chạy dịch vụ

  4. Quyền chỉ cấp ở mức cần thiết

  5. 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ó

 
cut -d: -f1 /etc/passwd

4.2. Tạo user mới (khi cần)

 
sudo adduser devuser
  • 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

 
sudo deluser username

Nếu cần xóa cả home directory:

 
sudo deluser --remove-home username

5. Quản lý group

5.1. Tạo group theo vai trò

Ví dụ:

 
sudo groupadd webadmin sudo groupadd webdev

5.2. Thêm user vào group

 
sudo usermod -aG webadmin admin sudo usermod -aG webdev devuser

Kiểm tra:

 
groups admin 

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:

 
/var/www/site1

Thiết lập owner và group:

 
sudo chown -R www-data:www-data /var/www/site1

Thiết lập quyền:

 
sudo find /var/www/site1 -type d -exec chmod 750 {} \; sudo find /var/www/site1 -type f -exec chmod 640 {} \;

7. Phân quyền cho dịch vụ (Nginx, PHP, v.v.)

  • Nginx chạy bằng user www-data

  • PHP-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-data không có quyền sudo

  • Chỉ có quyền đọc source

  • Chỉ ghi vào thư mục được phép (upload, cache)

Không cấp quyền:

 
chmod 777

Đâ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

 
sudo -l

8.3. Không chỉnh trực tiếp file sudoers

Nếu cần chỉnh:

 
sudo visudo

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