1. Ví dụ đời thường
File permission giống ba vòng chìa khóa: owner, group và others. Mỗi vòng có quyền đọc, ghi, thực thi. .env giống chìa khóa thật; .env.example chỉ là nhãn chỉ dẫn loại chìa khóa cần có.
2. Giải thích cực dễ
cp sao chép, mv di chuyển/đổi tên, rm xóa. Dấu chấm đầu tên file làm file “ẩn” theo quy ước. Environment variable đưa cấu hình vào tiến trình mà không đóng cứng trong source.
3. Technical Definition
Linux permission dùng r/w/x cho user, group, others. chmod thay mode; owner/group quyết định bộ quyền nào áp dụng. Environment là map key/value mà tiến trình kế thừa.
4. DX-Lab dùng nó ở đâu
Compose đọc .env; repository chỉ giữ .env.example. Script cần executable bit; backup cần quyền truy cập hạn chế.
5. SV1 cần đạt Level nào
Mission target L2; Linux và secrets handling cuối roadmap đạt L4 practical.
6. Thành phần cần biết
cp, mv, rm, hidden files, ls -la, chmod, owner/group, printenv, export, .env, .env.example, .gitignore.
7. Commands / Config
mkdir -p ~/dx-lab-training/w1-m2
cd ~/dx-lab-training/w1-m2
touch original.txt .env .env.example
cp original.txt copy.txt
mv copy.txt renamed.txt
chmod 640 renamed.txt
ls -la
id
stat -c '%U %G %A %a %n' renamed.txt
umask
export DXLAB_STAGE=foundation
printenv DXLAB_STAGE
rm renamed.txtCOMMAND: chạy block quản lý file, permission và environment theo từng dòng; kiểm pwd trước rm.
WHERE TO RUN: ~/dx-lab-training/w1-m2 trong Linux/WSL lab.
WHY: chứng minh file lifecycle, least permission và environment hoạt động thay vì dùng chmod 777 hay đưa secret vào Git.
EXPECTED OUTPUT: mode của file từng là rw-r-----; biến in ra foundation.
COMMON FAILURE: xóa nhầm do không kiểm tra pwd/ls trước rm.
8. Expected Output
Giải thích được vì sao .env không xuất hiện với ls thường và tại sao chmod 777 không phải cách sửa mặc định.
9. Guided Lab
Tạo .env.example chỉ chứa DATABASE_URL= không có mật khẩu thật. Tạo .gitignore có dòng .env và kiểm tra bằng git check-ignore .env nếu đang trong repo test.
10. Independent Lab
Tạo script health-check.sh, chứng kiến lỗi permission khi chạy, chỉ thêm đúng executable bit rồi chạy lại.
11. Failure Injection
Bỏ read permission của một file test, ghi lại symptom, permission evidence, giả thuyết, fix và verification. Không thao tác trên file hệ thống.
12. Troubleshooting
- SYMPTOM: ghi lệnh và nguyên văn
Permission denied. - EVIDENCE: lưu
id,stat/ls -l, owner, group và mode hiện tại. - HYPOTHESIS: chỉ ra permission bit hoặc ownership nào đang chặn.
- TEST: kiểm quyền cần cho thao tác, chưa
chmod 777. - RESULT: ghi test xác nhận/bác bỏ giả thuyết.
- ROOT CAUSE: nêu đúng user/group/mode sai.
- FIX: thay đổi tối thiểu, chỉ trên file lab.
- VERIFICATION: chạy lại thao tác từng lỗi.
- REGRESSION: xác nhận không vô tình cấp write/execute cho others và
.envvẫn ignored.
13. Self-check Questions
- Tại sao
.env.exampleđược commit nhưng.envkhông? chmod 640cấp quyền gì?- Khi nào
mvlà đổi tên và khi nào là di chuyển?
14. Evidence Required
Dán terminal output của permission lab và tự giải thích secret boundary.
15. Quiz
Đạt tối thiểu 70%; không lưu đáp án thành công giả.
16. PASS Gate
Phải có output trước/sau của permission lab, giải thích owner/group/mode, git check-ignore .env thành công, đủ hai evidence, quiz ≥70%, rồi mới chốt hard gate. Không commit secret.