Cấu hình Linux user/group/permission
🎯 Mục tiêu: Tạo user/group cho môi trường multi-tenant, phân quyền đúng principle of least privilege, kiểm chứng bằng su và sudo.
🧰 Công cụ / nền tảng: Ubuntu 22.04 (VM hoặc WSL2), terminal Bash.
📦 Chuẩn bị: Ubuntu 22.04 chạy được (WSL2: wsl --install -d Ubuntu-22.04). Có quyền sudo.
▶️ Các bước (CLI — Bash):
# 1. Tạo group và 2 user cho team devops
sudo groupadd devops-team
sudo useradd -m -s /bin/bash -G devops-team alice
sudo useradd -m -s /bin/bash -G devops-team bob
sudo passwd alice # đặt password khi được yêu cầu
sudo passwd bob
# 2. Tạo thư mục dự án với quyền nhóm
sudo mkdir -p /opt/devops-project
sudo chown root:devops-team /opt/devops-project
sudo chmod 2775 /opt/devops-project # setgid: file mới kế thừa group
ls -ld /opt/devops-project
# 3. Kiểm tra: alice có thể tạo file, user ngoài nhóm thì không
su - alice -c "touch /opt/devops-project/alice-test.txt && ls -la /opt/devops-project"
su - bob -c "touch /opt/devops-project/bob-test.txt && ls -la /opt/devops-project"
# 4. Thiết lập sudo chỉ cho alice (không cho bob)
echo "alice ALL=(ALL) NOPASSWD: /usr/bin/systemctl" | sudo tee /etc/sudoers.d/alice-systemctl
sudo visudo -c # validate syntax
# 5. Kiểm tra sudo alice vs bob
su - alice -c "sudo systemctl status ssh"
su - bob -c "sudo systemctl status ssh" # expect: permission denied
🖥️ Đối chiếu PowerShell (Windows — tham khảo):
# Tương đương trên Windows (Local Users & Groups)
New-LocalUser -Name "alice" -Password (Read-Host -AsSecureString)
New-LocalGroup -Name "devops-team"
Add-LocalGroupMember -Group "devops-team" -Member "alice","bob"
✅ Kết quả mong đợi:
ls -ld /opt/devops-projecthiển thịdrwxrwsr-x 2 root devops-team.- Cả alice và bob đều tạo được file trong thư mục; file mới có group
devops-team. - Alice chạy
sudo systemctl status sshthành công; Bob bị từ chối.
🧹 Cleanup:
sudo userdel -r alice && sudo userdel -r bob
sudo groupdel devops-team
sudo rm /etc/sudoers.d/alice-systemctl
sudo rm -rf /opt/devops-project