Linux tập 2: Permission - Đặc trưng đầy QUYỀN năng của Linux.
Trong bài viết trước, tôi đã trình bày về cấu trúc cây thư mục của hệ điều hành Linux cũng như sự khoa học trong cách bố trí các thư mục con. Trong bài này, tôi sẽ tiếp tục trình bày về 1 đặc trưng có thể nói là bá đạo nhất của Linux so với các hệ điều hành khác, đó chính là Permission (phân quyền).
3 loại User trong hệ thống Linux.
Với mỗi file (tệp tin), Linux sẽ phân chia tập hợp tất cả các User trong hệ thống (trừ ROOT) thành 3 nhóm đôi một ko giao nhau:
- Own: Đây là tập hợp các User là chủ sở hữu của file đó.
- Group: Đây là tập hợp các User tuy ko sở hữu file đó, nhưng lại thuộc cùng một Group với chủ sở hữu của file đó.
- Other: Đây là tập hợp toàn bộ các User khác ko thuộc 2 nhóm trên.
Lưu ý rằng danh sách trên tuy gọi là danh sách các User, nhưng thực tế thì ngay cả các Service, Daemon, Process, ... khác trong Linux cũng được liệt vào thành các User khác nhau khi thực hiện tương tác với một file.
Mỗi tập hợp trên sẽ có được những đặc quyền riêng được tương tác với file đó. Việc thiết lập các đặc quyền này với mỗi file có thể được thực hiện bởi chủ sở hữu Own của file đó; hoặc bởi ROOT. Ví dụ bạn chỉ cho phép các người dùng khác trong cùng Group của bạn có thể đọc và ghi vào file bạn sở hữu; nhưng lại chỉ cho phép những người khác đọc thôi, ko cho quyền ghi.
3 loại Permission của File trong Linux.
Với mỗi file trong hệ thống, Linux xác định 3 đặc quyền mà các User có thể tương tác với file:
- Read: khi quyền này được kích hoạt, User có thể được phép đọc nội dung file.
- Write: khi quyền này được kích hoạt, User có thể được phép ghi vào nội dung file.
- Execute: khi quyền này được kích hoạt, User có thể được phép thực thi file.
- Read: ký hiệu chữ là "r", giá trị số là 4.
- Write: ký hiệu chữ là "w", giá trị số là 2.
- Execute: ký hiệu chữ là "x", giá trị số là 1.
Ví dụ, nếu bạn nhìn thấy file nào đó với permission chỉ định là 6, mà 6 = 4 + 2, tức là bạn có quyền 4 ("r" - read) và quyền 2 ("w" - write) với file đó; bạn có thể xem và ghi đè nội dung vào file đó. Nếu bạn có quyền 5 (5 = 4 + 1), tức là bạn chỉ có thể đọc (4 - "r") và thực thi (1 - "x") với file đó, mà ko được phép thay đổi nội dung bên trong nó. Nếu bạn có quyền 7 = 4 + 2 + 1 với file đó, có nghĩa là bạn có full quyền với file đó.
Bạn có thể tham khảo hình ảnh mô tả trực quan này mình tìm thấy ngay trên Google:
Linux sẽ xác định các giá trị thể hiện permission của toàn bộ các User thuộc 3 nhóm User trên với từng file. Cụ thể, bạn có thể xem chi tiết Permission của từng file trong thư mục hiện tại bằng lệnh "ls -la" rất nhanh. Ngoài ra, nếu bạn chỉ muốn xem Permission của 1 file cụ thể nào đó chẳng hạn, ví dụ như file ".bashrc", bạn có thể "ls -l $FILENAME" hoặc "grep" bằng lệnh "ls -la | grep bashrc".
Ví dụ như với file ".bashrc" ở hình trên chẳng hạn, cột đầu tiên là 1 chuỗi "-rw-r--r--", đây chính là các giá trị kiểm soát permission của file này; cột thứ 3 chính là tên của Own (tức là mình - "cuongbv"), cột thứ 4 chính là tên Group của "cuongbv"; mấy cột sau là các thông tin thêm. Đi vào cụ thể cột đầu tiên, chuỗi giá trị "-rw-r--r--" có cấu trúc là:
- "-": dấu gạch đầu tiên ám chỉ rằng đây là 1 tệp tin, ko phải 1 thư mục. Nếu là 1 thư mục, nó sẽ có giá trị là "d" chứ ko phải "-".
- "rw-": 3 ký tự đầu tương ứng với quyền mà Own có thể tương tác với file này. Cụ thể trong trường hợp này, "cuongbv" có thể đọc ("r") và ghi ("w") vào file này; ko có quyền thực thi file này vì ký tự thứ 3 là "-", ko phải "x".
- "r--": 3 ký tự tiếp theo tương ứng với quyền mà Group của "cuongbv" có thể tương tác với file này. Cụ thể, các User khác thuộc cùng Group với "cuongbv" chỉ có thể đọc ("r") file này thôi, ko có quyền ghi hay thực thi, vì giá trị tương ứng với 2 trường này đều là "-".
- Tương tự với 3 ký tự cuối, mọi User khác chỉ có quyền đọc.
Thay đổi đặc quyền.
Khi ta thấy 1 file có quyền là 751, thực hiện phân tích, ta thấy rằng:
- 7 = 4 + 2 + 1: tức là Own có full quyền với file đó.
- 5 = 4 + 1: tức là Group chỉ có thể đọc và thực thi, ko đc phép ghi vào file đó.
- 1 = 1: tức là Other chỉ có quyền thực thi file đó, ko thể đọc nội dung cũng như ghi đè file đó.
- chmod: thay đổi permisson của file.
- chown: thay đổi chủ sở hữu (own) cũng như group của file.
- chgrp: thay đổi group của file, ko thay đổi own.
Leo thang đặc quyền.
Leo thang đặc quyền có thể hiểu là phương thức tấn công mà các User có quyền hạn thấp có thể tự nâng quyền hạn của mình lên tương đương các User có quyền hạn cao hơn, hoặc thậm chí là lên ROOT. Để làm được điều này, tin tặc sẽ phải tìm kiếm và khai thác các lỗ hổng trong hệ thống. Cách làm thông thường hay được sử dụng là "crack password" hoặc "buffer - overflow".
Nhận xét
Đăng nhận xét