Bạn đang cố gắng khắc phục sự cố về quyền với máy chủ web của mình và tìm thấy thông tin trên Internet, nói rằng bạn cần đệ quy chmod 777
thư mục web. Trước khi làm điều đó, hãy đảm bảo rằng bạn hiểu những gì sẽ làm chmod -R 777
và tại sao bạn không bao giờ nên đặt quyền thành 777.
Bài viết này giải thích mô hình quyền cơ bản của Linux và ý nghĩa của các con số tương ứng với các quyền.
Hiểu quyền đối với tệp Linux
Trong Linux, quyền truy cập vào tệp được hệ điều hành kiểm soát bằng cách sử dụng quyền, thuộc tính và quyền sở hữu tệp. Hiểu mô hình quyền của hệ thống tệp Linux cho phép bạn giới hạn quyền truy cập vào tệp và thư mục chỉ đối với những người dùng và quy trình được ủy quyền và làm cho hệ thống của bạn an toàn hơn.
Mỗi tệp được sở hữu bởi một người dùng và một nhóm cụ thể và được chỉ định quyền truy cập cấp phép cho ba lớp người dùng khác nhau:
- Chủ sở hữu tệp.
- Các thành viên trong nhóm.
- Những người khác (mọi người khác).
Có ba loại quyền đối với tệp áp dụng cho mỗi lớp người dùng và cho phép bạn chỉ định người dùng nào được phép đọc tệp, ghi vào tệp hoặc thực thi tệp. Các thuộc tính quyền giống nhau áp dụng cho cả tệp và thư mục với một ý nghĩa khác:
- Quyền đọc.
- Tệp có thể đọc được. Ví dụ: khi quyền đọc được đặt, người dùng có thể mở tệp trong trình soạn thảo văn bản.
- Nội dung của thư mục có thể được xem. Người dùng có thể liệt kê các tệp bên trong thư mục bằng
ls
lệnh.
- Quyền ghi.
- Tệp có thể được thay đổi hoặc sửa đổi.
- Nội dung của thư mục có thể được thay đổi. Người dùng có thể tạo tệp mới , xóa tệp hiện có , di chuyển tệp , đổi tên tệp .. vv.
- Quyền thực thi.
- Tệp có thể được thực thi.
- Thư mục có thể được nhập bằng
cd
lệnh.
Quyền đối với tệp có thể được xem bằng cách sử dụng ls
lệnh. Đây là một ví dụ:
ls -l filename.txt
Output:
-rw-r--r-- 12 linuxize users 12.0K Apr 8 20:51 filename.txt |[-][-][-]- [------] [---] | | | | | | | | | | | | | +-----------> 7. Group | | | | | +-------------------> 6. Owner | | | | +--------------------------> 5. Alternate Access Method | | | +----------------------------> 4. Others Permissions | | +-------------------------------> 3. Group Permissions | +----------------------------------> 2. Owner Permissions +------------------------------------> 1. File Type
Ký tự đầu tiên hiển thị loại tệp. Nó có thể là một tệp thông thường ( -
), thư mục ( d
), một liên kết tượng trưng ( l
) hoặc bất kỳ loại tệp đặc biệt nào khác.
Chín ký tự tiếp theo đại diện cho quyền đối với tệp, ba ký tự ba mỗi ký tự. Bộ ba đầu tiên hiển thị quyền của chủ sở hữu, quyền thứ hai của một nhóm và bộ ba cuối cùng hiển thị quyền của mọi người khác.
Permission number
Quyền đối với tệp có thể được biểu diễn ở định dạng số hoặc ký hiệu. Trong bài viết này, chúng ta sẽ tập trung vào định dạng số.
Số cho phép có thể bao gồm ba hoặc bốn chữ số, từ 0 đến 7.
Khi số có 3 chữ số được sử dụng, chữ số đầu tiên đại diện cho quyền của chủ sở hữu tệp, chữ số thứ hai cho nhóm của tệp và chữ số cuối cùng cho tất cả những người dùng khác.
Các quyền ghi, đọc và thực thi có giá trị số sau:
r
(đọc) = 4w
(ghi) = 2x
(thực hiện) = 1- không có quyền = 0
Số quyền của một lớp người dùng cụ thể là tổng giá trị của các quyền cho lớp đó.
Mỗi chữ số của số quyền có thể là tổng của 4, 2, 1 và 0:
- 0 (0 + 0 + 0) – Không được phép.
- 1 (0 + 0 + 1) – Chỉ thực thi quyền.
- 2 (0 + 2 + 0) – Chỉ phép viết.
- 3 (0 + 2 + 1) – Viết và thực thi quyền.
- 4 (4 + 0 + 0) – Chỉ quyền đọc.
- 5 (4 + 0 + 1) – Đọc và thực hiện quyền.
- 6 (4 + 2 + 0) – Quyền đọc và ghi.
- 7 (4 + 2 + 1) – Quyền đọc, viết và thực thi.
Ví dụ: nếu số quyền được đặt thành 750, điều đó có nghĩa là chủ sở hữu tệp có quyền đọc, ghi và thực thi, nhóm của tệp có quyền đọc và thực thi và những người dùng khác không có quyền:
- Chủ sở hữu: rwx = 4 + 2 + 1 = 7
- Nhóm: rx = 4 + 0 + 1 = 5
- Khác: rx = 0 + 0 + 0 = 0
Khi sử dụng số có 4 chữ số, chữ số đầu tiên có ý nghĩa như sau:
- setuid = 4
- setgid = 2
- dính = 1
- không có thay đổi = 0
Ba chữ số tiếp theo có ý nghĩa tương tự như khi sử dụng số có 3 chữ số. Nếu chữ số đầu tiên là 0, nó có thể được bỏ qua và chế độ có thể được biểu diễn bằng 3 chữ số. Chế độ số 0755
cũng giống như 755
.
Để xem các quyền của tệp trong ký hiệu số (bát phân), hãy sử dụng stat
lệnh:
stat -c "%a" filename
Output:
644
Không bao giờ sử dụng chmod 777
Đặt 777 quyền cho một tệp hoặc thư mục có nghĩa là tất cả người dùng đều có thể đọc, ghi và thực thi được và có thể gây ra rủi ro bảo mật rất lớn.
Ví dụ: nếu bạn thay đổi đệ quy quyền của tất cả các tệp và thư mục con trong thư mục /var/www
thành 777
, bất kỳ người dùng nào trên hệ thống sẽ có thể tạo, xóa hoặc sửa đổi các tệp trong thư mục đó.
Nếu bạn gặp sự cố về quyền với máy chủ web của mình, thay vì đặt quyền một cách đệ quy 777
, hãy thay đổi quyền sở hữu tệp cho người dùng đang chạy ứng dụng và đặt quyền của tệp 644
và quyền của thư mục thành 755
.
Quyền sở hữu tệp có thể được thay đổi bằng cách sử dụng chown
lệnh và quyền với chmod
lệnh.
Giả sử bạn có một ứng dụng PHP trên máy chủ của mình đang chạy với tư cách người dùng “hocdevops”. Để đặt các quyền chính xác, bạn sẽ chạy:
chown -R hocdevops: /var/www find /var/www -type d -exec chmod 755 {} \; find /var/www -type f -exec chmod 644 {} \;
Chỉ root, chủ sở hữu tệp hoặc người dùng có đặc quyền sudo mới có thể thay đổi quyền của tệp. Hãy hết sức cẩn thận khi sử dụng chmod
, đặc biệt là khi thay đổi đệ quy các quyền.
Phần kết luận
Nếu bạn đang quản lý một hệ thống Linux, điều quan trọng là phải biết các quyền của Linux hoạt động như thế nào.
Bạn không bao giờ nên đặt các tệp và quyền thư mục 777 ( rwxrwxrwx ). 777 có nghĩa là bất kỳ ai cũng có thể làm bất cứ điều gì với các tệp đó.
Hãy để lại bình luận nếu bạn có bất kỳ câu hỏi nào.