Trên Linux, mọi thứ đều là file — kể cả thiết bị và tiến trình. Hiểu cấu trúc thư mục và cơ chế phân quyền là nền tảng để không phá hỏng hệ thống.
Các thư mục quan trọng
/etc # file cấu hình của hệ thống và dịch vụ
/var # dữ liệu thay đổi: log, database, cache
/home # thư mục cá nhân của người dùng
/usr # phần mềm cài thêm, thư viện
/opt # phần mềm bên thứ ba
/tmp # file tạm, thường bị xóa khi khởi động lại
/proc # thông tin nhân và tiến trình (ảo, không nằm trên đĩa)
Khi gỡ lỗi, bạn sẽ sống ở /etc (sửa cấu hình) và /var/log (đọc log).
Đọc dòng quyền
$ ls -l config.ini
-rw-r----- 1 root www-data 1240 Sep 2 10:15 config.ini
Chuỗi -rw-r----- chia thành 4 phần:
-— loại:-file thường,dthư mục,lliên kếtrw-— quyền của chủ sở hữu (root): đọc, ghir--— quyền của nhóm (www-data): chỉ đọc---— quyền của người khác: không gì cả
Ký hiệu số
r = 4, w = 2, x = 1. Cộng lại cho từng nhóm:
chmod 644 file.txt # rw- r-- r-- file thường
chmod 640 secret.ini # rw- r-- --- chỉ chủ và nhóm đọc được
chmod 755 script.sh # rwx r-x r-x file chạy được, thư mục
chmod 600 ~/.ssh/id_ed25519 # rw- --- --- khóa riêng tư
Quy tắc thực dụng: 644 cho file, 755 cho thư mục và script. Thấy 777 ở đâu là gần như chắc chắn có vấn đề.
Vì sao thư mục cần quyền x
Với thư mục, x không phải “chạy” mà là “được phép đi vào”. Thư mục có r nhưng thiếu x thì bạn liệt kê được tên file mà không mở được file nào.
Đổi chủ sở hữu
chown www-data:www-data /var/www/html -R
chgrp developers duan/ -R
Lỗi phân quyền hay gặp trên web server
# Chuẩn cho thư mục web
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;
chown -R www-data:www-data /var/www/html
Gặp lỗi 403 hoặc “Permission denied” trong log, hãy kiểm tra ba thứ theo thứ tự: chủ sở hữu file, quyền của thư mục cha, và quyền thực thi trên toàn bộ đường dẫn.
umask: quyền mặc định
umask # thường là 022
# 022 nghĩa là file mới sinh ra có quyền 644, thư mục 755
Nguyên tắc cuối: cấp quyền ít nhất có thể. Mỗi lần định gõ chmod 777, hãy dừng lại và tìm đúng chủ sở hữu cần đặt.
