Nếu bạn là user Linux hoặc sysadmin quản lý server Linux, chắc gặp lỗi "You do not have the permissions to upload file to the folder". Sau khi Google, giải pháp thường đơn giản: set permission file thành "775" hoặc "777". Về mặt kỹ thuật, bạn được nhờ "chmod 777 the file". Nhưng "777" nghĩa là gì? Vì sao phải là "7" chứ không phải "8" hay "9"?
Bài viết này giúp bạn hiểu rõ hơn về quyền file, bao gồm ý nghĩa của chmod 777.
Hiểu về quyền file
Hệ thống Unix (Linux, macOS) có cơ chế kiểm soát file xác định ai có thể truy cập file/thư mục cụ thể và họ có thể làm gì với nó.
Có hai phần cần quan tâm:
Classes (Lớp). Xác định ai truy cập file. Có 3 phân loại: Owner (Chủ sở hữu), Group (Nhóm – chia sẻ quyền như nhau), Others (Khác – công chúng).
- Owner thường là người tạo file/thư mục. Trên Linux, file/thư mục bạn tạo trong Home directory thường do bạn own trừ khi chủ động đổi ownership.
- Group chứa nhóm user chia sẻ cùng quyền và đặc quyền.
- Others nghĩa là công chúng.
Permissions (Quyền). Xác định user có thể làm gì với file. Có 3 quyền: Read (Đọc), Write (Ghi), Execute (Thực thi), có thể kết hợp gần như tùy ý.
- Read. Không thể sửa nội dung file. Áp dụng cho Folder: chỉ xem file bên trong, không xóa/sửa/thêm file.
- Write. Có thể sửa file. Nếu có "write" access vào folder, có thể xóa/thêm file vào folder đó.
- Execute. Dùng khi cần chạy file, phổ biến khi chạy script.
Kết hợp Classes và Permissions, bạn kiểm soát ai truy cập file và hành động họ thực hiện được.
Owner thường có đủ 3 quyền (read, write, execute). Nếu không upload được file lên server, thường do permission không khớp.
Giải thích quyền file 777
Sau khi nắm Classes và Permissions, bạn bắt đầu hiểu các con số như "777" và "775".
Mọi file/thư mục chứa dữ liệu 8-bit điều khiển permission. Dạng binary cơ bản, 000 nghĩa là không cấp quyền nào.
Set quyền "Read": thêm 4-bit → "100" (binary) hoặc "4" (decimal). Set "Write": thêm 2-bit → "010" và "2". Set "Execute": thêm 1-bit → "001" hoặc "1". Tóm lại:
- Read = "4"
- Write = "2"
- Execute = "1"
Set permission là toán học cơ bản. Ví dụ "Read và Write": 4+2=6. Các hoán vị khác:
- 0: Không quyền
- 1: Execute
- 2: Write
- 3: Write và Execute
- 4: Read
- 5: Read và Execute
- 6: Read và Write
- 7: Read, Write, và Execute
Bộ permission hoàn chỉnh: chữ số đầu cho Owner, thứ hai cho Group, thứ ba cho Others. Một số permission phổ biến:
- 755: Web server thường dùng. Owner full quyền (read, write, execute). Người khác read và execute, không sửa file.
- 644: Chỉ owner read/write. Người khác chỉ read. Không ai execute.
- 655: Owner read/write, không execute. Người khác read/execute, không sửa.
Còn 777: mọi user đều Read, Write, Execute. Vì cấp full permission, phải dùng cẩn thận. Tuy nhiên, đôi khi cần set 777 trước khi upload file lên server.
Set quyền file qua command line
Trên Linux, dễ dàng đổi permission bằng chuột phải file/thư mục → "Properties" → tab Permission.
Trên macOS: chuột phải → "Get Info" → mở rộng "Sharing & Permissions" → sửa.
Chọn quyền phù hợp từ section Privilege.
Đó không phải cách duy nhất. Hãy giải thích chi tiết hơn.
Thay đổi quyền file dùng chmod 777
Nếu quen Terminal/Command line, cũng đổi permission ở đây.
Lệnh chmod cho phép "change the mode" – cách khác nói access permission. Mở Terminal, gõ:
chmod 777 /path/to/file
Tóm lại, chmod 777 kết hợp hai khái niệm trên. Nghĩa là làm file readable, writable, executable bởi mọi người có quyền truy cập. Lệnh mạnh và có thể "phá hệ thống" – cần thận trọng.
Tóm tắt
Quyền file có thể chặn đường nếu không set đúng. Điều này bằng thiết kế: hệ thống locked down không bị compromised. Tuy nhiên, nếu muốn truy cập file trên hệ thống/server, học cách đổi permission là kỹ năng hữu ích.
Khoản gọn: chmod 777 là lệnh dùng trong Terminal để làm file/thư mục accessible cho mọi người. Chỉ dùng dịp đặc biệt và chuyển về permission hạn chế hơn khi xong.
Muốn biết Terminal còn làm gì nữa, xem bài hướng dẫn copy/paste từ command line. Bạn có quản lý quyền file và bài viết này giúp ích? Comment cho chúng tôi biết!