Bài viết này khám phá chmod 777, một lệnh Linux dùng để cấp TẤT CẢ QUYỀN cho user, group, và others.
Là user Linux mới, web developer, hoặc system administrator, bạn có thể đã được hướng dẫn gõ:
chmod 777 /path/to/file/or/folder
…vào shell Linux của bạn tại một thời điểm nào đó.
Bất cứ khi nào bạn chạy lệnh trên hệ thống (đặc biệt là root!), bạn LUÔN LUÔN nên biết chúng làm gì. Vậy chmod 777 thực sự là gì?
Quyền trong Linux

ls – l command
Trên là ví dụ chạy:
ls -l
lệnh, sẽ liệt kê nội dung thư mục hiện tại ở định dạng liệt kê dài, hiển thị quyền và ngày sửa đổi cho file được liệt kê.
- Cột đầu hiển thị là quyền gán cho file hoặc thư mục
- Cột hai là số file hoặc thư mục chứa
- Cột ba và tư hiển thị user và group có quyền cho file đó, tương ứng
- Cột năm và sáu hiển thị kích thước và ngày sửa đổi
- Cột cuối hiển thị tên file
Cột một, ba, và tư chứa thông tin liên quan đến quyền, sẽ được tham chiếu trong bài này
Thư mục liệt kê trong screenshot là trong thư mục home của user linuxscrew, và tất cả có quyền
drwxr-xr-x
Với cả owner và group của user linuxscrew sở hữu chúng.
drwxr-xr-x chứa 4 mẩu thông tin, 3 trong số đó về quyền:
| d | rwx | r-x | r-x |
|---|---|---|---|
| Là thư mục | Owner có thể Read, Write, eXecute | Group có thể Read, eXecute | Others có thể Read, eXecute |
- Chữ cái đầu cho biết loại file – nếu d là thư mục, nếu – là file thường
- Ký tự 2-4 chứa quyền cho user
- Ký tự 5-7 chứa quyền cho group
- Ký tự 8-10 chứa quyền cho others
Chữ cái trong mỗi khối có ý nghĩa sau:
- ‘-‘ từ chối quyền
- ‘r’ quyền đọc
- ‘w’ quyền ghi
- ‘x’ quyền thực thi
Cũng có một số giá trị đặc biệt ký tự eXecute có thể nhận:
- ‘s’ bit setuid, tìm thấy trong quyền user hoặc group, user có thể thực thi file sẽ thực thi với đặc quyền owner file và/hoặc group file. Nghĩa là x được đặt, làm file executable
- ‘S’ Giống ‘s’ nhưng file không executable
- ‘t’ Sticky bit, tìm thấy trong quyền others, làm file sticky – chỉ owner có thể rename hoặc xóa file hoặc file bên trong. Group và others không thể! Nó cũng nghĩa là x được đặt, làm file executable
- ‘T’ Giống ‘t’ nhưng file không executable
Để đầy đủ, loại file khác nhau có thể chiếm ký tự đầu tiên:
- ‘-‘ file thường
- ‘b’ file block special
- ‘c’ file character special
- ‘C’ file high performance (“contiguous data”)
- ‘d’ thư mục
- ‘D’ door (Solaris 2.5 trở lên)
- ‘l’ symbolic link
- ‘M’ file off-line (“migrated”) (Cray DMF)
- ‘n’ file network special (HP-UX)
- ‘p’ FIFO (named pipe)
- ‘P’ port (Solaris 10 trở lên)
- ‘s’ socket
- ‘?’ loại file khác
Ý nghĩa của 777
Để làm cho việc gán quyền nhanh hơn, số có thể dùng để biểu diễn tổ hợp chữ cái trên:
- 7 Tất cả quyền
- 6 Đọc và ghi
- 5 Đọc và thực thi
- 4 Chỉ đọc
- 3 Thực thi và ghi
- 2 Chỉ ghi
- 1 Chỉ thực thi
- 0 Không quyền
Vì vậy, để cấp TẤT CẢ QUYỀN cho cả user, group, và others, chúng ta muốn gán quyền 777
Lệnh chmod
Lệnh chmod (Change Mode) cho phép bạn áp dụng quyền cho file.
chmod 777
Vì vậy, chạy:
chmod 777 /path/to/file/or/folder
…sẽ cấp cho owner (user), group (user trong group), và others (mọi người khác trên hệ thống) đầy đủ quyền đọc, ghi và thực thi.
chmod -R 777 /path/to/file/or/folder
Điều này làm điều tương tự, đệ quy, và cấp cho mọi người toàn quyền trên file chứa trong thư mục.
Bây giờ bạn biết!