User, group và phân quyền Linux: lab quản lý tài khoản, chmod, chown và sudo an toàn

User, group và phân quyền Linux là chủ đề bắt buộc nếu anh muốn vận hành máy chủ an toàn. Rất nhiều sự cố production đến từ quyền sai: web server không đọc được file, backup không truy cập được thư mục, hoặc ngược lại user có quyền quá rộng dẫn đến xóa nhầm dữ liệu.

Bài này đi thẳng vào thực hành: tạo user, thêm group, dùng chmod/chown và kiểm tra sudo theo hướng dễ hiểu nhưng sát môi trường vận hành.

1. Tư duy đúng về quyền trên Linux

  • mỗi process chạy dưới một user / group
  • quyền nên cấp tối thiểu đủ dùng
  • đừng cấp 777 để “chữa cháy” nếu chưa hiểu nguyên nhân

2. Tạo user và group trong lab

sudo groupadd ops
sudo useradd -m -s /bin/bash alice
sudo usermod -aG ops alice
id alice

Output sẽ cho biết user thuộc những group nào. Đây là bước đầu để cấp quyền theo nhóm thay vì theo từng người.

3. Hiểu quyền rwx

Một file thường có ba lớp quyền:

  • owner
  • group
  • others
ls -l /etc/passwd

Ký tự như -rw-r--r-- nghĩa là owner được đọc/ghi, group được đọc, others được đọc.

4. Thực hành chmod và chown

mkdir -p ~/perm-lab
cd ~/perm-lab
echo "demo" > app.env
ls -l
chmod 640 app.env
sudo chown alice:ops app.env
ls -l app.env

Thực chiến:

  • chmod 640 phù hợp cho file cấu hình có thông tin nhạy cảm
  • chown alice:ops đổi owner và group
  • sau khi đổi quyền, luôn xem lại bằng ls -l

5. Thư mục và bit execute

Trên thư mục, quyền execute nghĩa là được đi vào thư mục đó. Một thư mục 640 thường không truy cập được. Ví dụ:

mkdir shared
chmod 750 shared
sudo chown alice:ops shared

Đây là mẫu khá hợp lý cho thư mục chia sẻ nội bộ: owner toàn quyền, group đọc/đi vào được, người khác không có quyền.

6. Kiểm tra sudo một cách an toàn

sudo -l -U alice

Nếu cần cấp quyền vận hành hạn chế, ưu tiên cấu hình sudoers theo command cụ thể thay vì toàn quyền root. Cách này liên hệ trực tiếp với thực tế production.

7. Kịch bản lỗi thường gặp

  • Nginx báo 403 vì file web root thuộc owner/group sai
  • cron backup fail vì user chạy job không đọc được thư mục dữ liệu
  • dev không deploy được vì thư mục release không cho group ghi
  • nhiều đội tạm sửa bằng chmod -R 777 rồi để nguyên rất nguy hiểm

8. Lab step-by-step

  1. Tạo user alice và group ops.
  2. Tạo một file secret.txt rồi thử các mức quyền 600, 640, 644.
  3. Đăng nhập bằng user khác hoặc dùng sudo -u để thử đọc file.
  4. Tạo thư mục shared với quyền 750 và xác minh group truy cập được.
  5. Ghi lại trường hợp nào đọc được, trường hợp nào bị từ chối.

9. Tài liệu chính thống

10. Checklist production

  • không dùng 777 trừ khi thật sự hiểu rủi ro và chỉ tạm thời trong lab
  • quyền được cấp theo group thay vì user đơn lẻ khi có thể
  • file nhạy cảm dùng quyền tối thiểu
  • mọi thay đổi quyền đều được kiểm tra lại bằng ls -l
  • sudo được cấp theo lệnh cần dùng, không cấp tràn lan

11. Numeric mode và symbolic mode

Ngoài cách viết số như 640, anh cũng nên biết symbolic mode:

chmod u=rw,g=r,o= app.env
chmod g+w shared
chmod o-rwx secret.txt

Numeric mode nhanh và gọn, symbolic mode dễ đọc khi cần chỉnh từng phần nhỏ.

12. Case thực tế: web server đọc được nhưng dev không ghi được

Một tình huống hay gặp là web server chạy dưới user www-data, còn dev deploy bằng user khác. Nếu thư mục release thuộc owner sai hoặc group không đúng, app có thể chạy được nhưng deploy fail, upload fail hoặc cache không ghi được.

Cách nghĩ đúng là xác định:

  • process nào đang chạy dưới user nào
  • thư mục nào cần quyền ghi thật sự
  • nên giải bằng owner/group, ACL hay quy trình deploy

13. Thư mục dùng chung và setgid

sudo mkdir -p /srv/shared
sudo chown root:ops /srv/shared
sudo chmod 2775 /srv/shared

Bit 2 đầu tiên trong 2775setgid trên thư mục, giúp file mới tạo bên trong tự kế thừa group ops. Đây là kỹ thuật rất hữu ích cho thư mục dùng chung của team.

14. Lab mở rộng: kiểm tra quyền bằng góc nhìn của đúng user

sudo -u alice cat /path/to/file
sudo -u alice touch /path/to/file
namei -l /path/to/file

namei -l rất hay khi cần lần từng lớp quyền trên cả đường dẫn thư mục cha, không chỉ file đích.

15. Khi nào nên nghĩ tới ACL?

Nếu mô hình owner/group cơ bản không đủ linh hoạt, anh có thể tìm hiểu ACL với getfaclsetfacl. Bài nhập môn chưa cần đi sâu, nhưng nên biết nó tồn tại để tránh cố bẻ mọi thứ bằng chmod 777.

Kết luận: nắm chắc User, group và phân quyền Linux giúp anh xử lý lỗi “permission denied” đúng cách và giảm rủi ro bảo mật rất nhiều.

Tác giả: Mạnh Hoàng

Tôi là Hoàng Mạnh, người sáng lập blog SysadminSkills.com. Tôi viết về quản trị hệ thống, bảo mật máy chủ, DevOps và cách ứng dụng AI để tự động hóa công việc IT. Blog này là nơi tôi chia sẻ những gì đã học được từ thực tế – đơn giản, ngắn gọn và áp dụng được ngay.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *