Cách thức phân quyền trên Linux và bí mật đằng sau con số 777

Thảo luận trong 'Kali Linux' bắt đầu bởi sImplePerson, 04/06/20, 10:06 AM.

  1. sImplePerson

    sImplePerson Moderator Thành viên BQT

    Tham gia: 23/03/20, 05:03 PM
    Bài viết: 6
    Đã được thích: 5
    Điểm thành tích:
    3
    Giới thiệu:

    Hệ điều hành Linux được phát triển dựa trên hệ điều hành Unix, được Linus Torvalds phát hành lần đầu tiên vào năm 1991. Mặc dù nó có thể khó sử dụng với một số người dùng, nhưng Linux rất mạnh và hiếm khi gặp sự cố. Bất kỳ máy tính nào cũng bao gồm hai khối chức năng chính là khối tính toán (nơi xử lý dữ liệu) và khối bộ nhớ (nơi lưu trữ dữ liệu). Dữ liệu có thể là thông tin, cấu hình, cài đặt hoặc lệnh. Bây giờ, các tệp này có thể được đọc hoặc giả mạo bởi bất kỳ ai, gây ra các vấn đề bảo mật nghiêm trọng. Điều này đã phát triển một nhu cầu cấp quyền cho mỗi tập tin. Quyền truy cập tệp sẽ cho phép ai được làm gì trên mỗi tệp cụ thể.

    Lệnh List (ls):

    Trước khi tìm hiểu về các quyền của tập tin, hãy cùng mình xem xét những tập tin chúng ta có trên máy tính. Để liệt kê ra nội dung của thư mục mà bạn hiện đang ở (thư mục làm việc hiện tại), hãy gõ lệnh sau:
    image001.png
    image002.png
    Hình 1. Đầu ra của lệnh ‘ls trên máy tính của mình.
    Xin lưu ý rằng các hình ảnh theo sau hiển thị kết quả mà mình nhận được trong hệ thống của mình và tên của các tệp hoặc thư mục không mang bất kỳ ý nghĩa.

    Trong hình 1, các nội dung được tô sáng màu xanh lam là các thư mục và phần màu trắng là các tệp. Lệnh ‘ls’ cung cấp một số tùy chọn, một trong số đó là định dạng đầy đủ (-lh). Bây giờ, bạn hãy thử gõ lệnh sau:
    image003.png
    image004.png
    Hình 2: Đầu ra của lệnh ‘ls -lh trên máy tính của mình​

    Hình 2 mô tả đầu ra của lệnh đã nói ở trên máy tính của mình. Để dễ hiểu, đầu ra đã được chia thành bảy phần.

    Phần đầu tiên bên trái là phần quyền thực thi đối với thư mục hoặc tệp.

    Phần thứ hai biểu thị số lượng liên kết hoặc thư mục bên trong thư mục cụ thể đó.

    Phần thứ ba hiển thị người dùng sở hữu tệp hoặc thư mục.

    Phần thứ tư chứa nhóm mà tập tin hoặc thư mục đó thuộc về. Vì không có nhóm nào được tạo trong máy của mình, nó sẽ hiển thị chính người dùng ở phần thứ tư.

    Phần thứ năm hiển thị kích thước của tệp hoặc thư mục (cờ -h được sử dụng cùng với cờ -l trong lệnh hiển thị kích thước ở định dạng có thể đọc được) theo byte.

    Phần thứ sáu cho biết ngày và thời gian (dấu thời gian) khi tệp được sửa đổi lần cuối.

    Phần thứ bảy hiển thị tên của tệp hoặc thư mục. Một lần nữa, tên của các thư mục được tô sáng màu xanh lam.

    Để biết thêm thông tin về lệnh ‘ls, hãy dùng câu lệnh sau:
    image005.png
    Hoặc :
    image006.png
    Ma trận [What X Who]:

    Các quyền tệp khác nhau có thể được đặt trên hai chiều, có thể được gọi là ma trận [What X Who], nghĩa là ai có thể làm gì với tệp hoặc thư mục. Ba thao tác mà Linux cho phép người dùng thực hiện trên một tệp là ‘Read’, ‘Write’, và ‘Execute’. Ba hoạt động này tạo thành một phần ’What’ của Ma trận.

    · Read: Điều này chỉ ra rằng tập tin có thể được đọc.

    · Write: Điều này chỉ ra rằng tập tin có thể được ghi lên hoặc ghi đè.

    · Execute: Điều này chỉ ra rằng tệp là một tệp thực thi.

    Những người được phép thực hiện các hoạt động trên tạo thành ‘Who’ là một phần của ma trận. Trong Linux, ‘Who’, được chia thành ‘User’, ‘Group’, và ‘Others’.

    · User: Điều này cho biết các quyền của người dùng được đề cập trong phần thứ ba của Hình.2.

    · Group: Điều này cho biết các quyền của nhóm được đề cập trong phần thứ tư của Hình.2.

    · Other: Điều này cho biết các quyền của những người dùng khác trong hệ thống khi thực hiện trên tệp hoặc thư mục.

    Bây giờ, để hiểu điều này mình sẽ đưa ra một ví dụ cụ thể. Từ hình 2, hãy để xem xét phần quyền thực thi của thư mục “abc”. Các quyền được cung cấp cho thư mục này (nằm trong cột đầu tiên) là drwxrwxr-x . Mỗi quyền trong cột đầu tiên của Hình 2 bao gồm 10 ký tự. Trình giữ chỗ đầu tiên hiển thị cho dù nội dung cụ thể là tệp hoặc thư mục hoặc liên kết. Vì “abc” là 1 thư mục, nên nó được thể hiện bằng chữ ‘d’. Đối với một file, ký tự đầu tiên sẽ là một dấu gạch nối (-). Và, đối với một liên kết, ký tự đầu tiên được thể hiện bằng chữ ’l’.

    Ký tự thứ hai, thứ ba và thứ tư cho biết các quyền mà người dùng có. Trong ví dụ của chúng tôi, người dùng ‘cuong’, có quyền rwx-, cho thấy thực tế là người dùng đã đọc,viết và quyền thực thi.

    Ký tự thứ năm, thứ sáu và thứ bảy chỉ ra các quyền mà nhóm có. Trong ví dụ của chúng tôi, nhóm ‘cuong’ có quyền -rwx cho phép, cho thấy thực tế là nhóm có quyền đọc, ghi và thực thi.

    Ký tư thứ tám, thứ chín và thứ mười chỉ ra các quyền mà người khác có. Trong ví dụ của mình, những người khác có quyền - x -, cho thấy thực tế là họ cũng chỉ có quyền thực thi.

    Các quyền này cho tập tin của mình, có thể được vẽ trên ma trận [What X Who] như sau :
    1.png
    Tương tự, hãy xem xét ví dụ về file ‘Benjamin’, quyền cho phép biểu thị trên file là ‘-rw-r--r--'. Ký tự đầu tiên ‘-‘ cho biết đây là một file. Chín giá trị còn lại có thể được mình biểu thị trên ma trận dưới đây:
    2.png
    Ý nghĩa của con số “777”

    Mọi tệp, thư mục trong Linux đều chứa 8 bits dữ liệu lưu quyền truy cập. Ở dạng nhị phân cơ bản của nó, nó sẽ là “000”, tương đương với việc không có bất cứ quyền truy cập nào.

    · Khi bạn muốn thiết lập quyền Read: nó sẽ thêm 4-bit vào dữ liệu, tạo thành “100” (dạng nhị phân) hoặc “4” dạng thập phân.

    · Thiết lập quyền Write sẽ tương đương với việc thêm 2-bit vào dữ liệu, tạo thành “010” (nhị phân) hoặc “2” dạng thập phân.

    · Cuối cùng, thiết lập quyền Execute sẽ thêm 1-bit vào dữ liệu, tạo thành “001” hoặc “1” dạng thập phân.

    Như vậy, nói ngắn gọn lại thì:

    · Read (r) tương đương với '4'

    · Write (w) tương đương với '2' – w

    · Execute (x) tương đương với '1' – x

    Các giá trị này được thêm vào để thể hiện các quyền duy nhất.. Nếu người dùng có quyền - r -, thì sẽ có giá trị là 4 (4 + 0 + 0). Nếu họ có quyền ‘rwx’ , thì có giá trị là 7 (4 + 2 + 1). Đó là cách mà người dùng, nhóm và những người khác được gán giá trị dựa trên quyền của họ. Hãy xem xét ví dụ đầu tiên của mình về thư mục abc.
    3.png
    Với 9 ký tự ‘rwxrwxr-x’ hiển thị quyền của các nhóm người dùng sẽ có giá trị là 771. Để hiểu rõ hơn, mình sẽ đi qua ví dụ về tệp ‘Benjamin’
    4.png
    Như vậy, các permission sẽ có giá trị từ 0 – 7 (mà không phải 8 hay 9 như thắc mắc phía trên):

    · 0 – không có bất cứ quyền truy cập nào

    · 1 – execute

    · 2 – write

    · 3 – write và execute

    · 4 – read

    · 5 – read và execute

    · 6 – read và write

    · 7 – read, write và execute

    Ở đây có tận 3 số 777, và mục đích của nó là:

    · Số 7 đầu tiên được dùng để cấp quyền cho Owner

    · Số 7 thứ 2 để cấp quyền cho Group

    · Còn số 7 cuối cùng để cấp quyền cho Others

    Thay đổi quyền:

    Bây giờ, nếu chúng ta muốn thay đổi các quyền này thì sao? Điều gì xảy ra nếu chúng ta muốn làm cho một tệp thực thi hoặc gán lại các quyền? Đây là lúc lệnh ‘chmod (chế độ thay đổi) sẽ được sử dụng. Bây giờ mình muốn gán quyền chỉ thực thi đối với Users trên thư mục ‘abc’. Mình sẽ sử dụng câu lệnh:

    image007.png
    Bạn có thể thay thế <file_name> bằng một tệp trên hệ thống của bạn. mình đã thực hiện thao tác này trên thư mục ‘abc’. Bây giờ liệt kê lại nội dung với câu lệnh:

    image008.png
    image009.png
    Hình 3: Các quyền mới được thiết lập trên thư mục ’abc’​

    Cú pháp của cách này như sau:
    image010.png

    với options được định nghĩa như sau:

    5.png
    Như trong Hình 3, quyền của người dùng được thay đổi thành ‘- x’. Bây giờ, để làm cho việc thay đổi quyền đơn giản hơn, chúng ta cũng có thể sử dụng các giá trị từ 0-7 để phân quyền trên tệp hoặc thư mục. Để thay đổi quyền của tệp ‘Benjamin' để cung cấp tất cả quyền cho mọi người, giá trị cần gán là 777.

    Giá trị 7 đầu tiên cho biết quyền của người dùng (4 + 2 + 1), giá trị 7 thứ hai cho biết quyền của nhóm (4 + 2 + 1 ) và giá trị 7 thứ ba cho biết các quyền của người khác (4 + 2 + 1). Vì vậy, hãy thử lệnh :

    image011.png

    Bạn có thể thay thế <file_name> bằng một tệp trên hệ thống của bạn. mình đã thực hiện thao tác này trên tệp ‘Benjamin’. Bây giờ liệt kê lại nội dung với câu lệnh:

    image012.png

    Hình 4: Các quyền mới được thiết lập trên tệp ’Benjamin’​
    Trong hình 4 ở trên, chúng ta có thể thấy rằng các quyền đối với tệp ‘Benjamin’, đã được thay đổi thành ‘rwxrwxrwx’. Bạn có thể thử thay đổi quyền của tệp thành các giá trị khác nhau và thử các cờ khác nhau cho lệnh ‘chmod. Chẳng hạn, sử dụng cờ ‘-R’, để áp dụng các cài đặt quyền cho tất cả các tệp và thư mục có trong thư mục.

    Để biết thêm thông tin về lệnh ‘chmod, hãy thử như sau:
    image013.png
    Hoặc :
    image014.png
     
    Chỉnh sửa cuối: 04/06/20, 01:06 PM
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan