Tôi sẽ cố gắng giải quyết lý do cơ bản tại sao nó là 777, thay vì aaa, hoặc 999.
Hãy nhớ rằng các quyền có định dạng sau:
u g o
rwx rwx rwx
trong đó u = người dùng, g = nhóm, o = khác.
Bây giờ, hãy tưởng tượng bạn đang đại diện cho mỗi nhóm này dưới dạng nhị phân. 1 là đúng, 0 là sai.
Nếu bạn muốn cấp quyền truy cập đầy đủ cho mọi người, bạn sẽ chỉ định các quyền sau dưới dạng nhị phân:
u g o
rwx rwx rwx
111 111 111
Bây giờ, nếu bạn biết nhị phân, bạn sẽ nhận ra rằng khi bạn chuyển đổi 111
từ nhị phân sang thập phân, bạn sẽ nhận được 7
.
Vì vậy, bạn có thể đại diện cho toàn quyền truy cập như 777
.
Lưu ý: Chúng tôi thực sự chuyển đổi từ nhị phân sang bát phân. Xem chỉnh sửa dưới đây.
Điều này hoạt động cho tất cả các chế độ truy cập khác là tốt.
Chẳng hạn, chúng ta có thể dễ dàng tìm ra ý 555
nghĩa của việc chuyển đổi từng loại 5
thành nhị phân và viết nó theo định dạng trên. 5
trong nhị phân là 101
, vì vậy chúng tôi có các quyền sau:
u g o
r-x r-x r-x
101 101 101
5 5 5
Tương tự, nếu chúng tôi muốn cung cấp tất cả các quyền cho người dùng, nhưng chỉ cho phép người khác đọc, chúng tôi có thể tìm thấy một đại diện số.
u g o
rwx r-- r--
111 100 100
7 4 4
Bây giờ, chúng ta biết rằng 111
trong nhị phân là 7
số thập phân và 100
nhị phân là 4
số thập phân. Như vậy, các quyền sẽ được 744
.
Biên tập:
Về mặt kỹ thuật, như được nhấn mạnh bởi @ LưuViênPhúc và @Braiam, chúng tôi đang chuyển đổi từ nhị phân sang bát phân, như được mô tả dưới đây. Tuy nhiên, biểu diễn thập phân và bát phân của các số <8 là như nhau, vì vậy đối với các số nhị phân có 3 chữ số trở xuống, cả hai biểu diễn thập phân và bát phân đều giống nhau.
Khi được biểu diễn dưới dạng số bát phân, thay vì chia thành các nhóm ba và thực hiện chuyển đổi nhị phân sang thập phân trên mỗi nhóm, bạn thực sự có thể lấy cả ba nhóm làm một số nhị phân duy nhất và chuyển đổi thành bát phân.
Ví dụ: đây là một số chuyển đổi nhị phân sang bát phân:
0b111111111 == 0o777
0b101101101 == 0o555
0b111100100 == 0o744
Lưu ý rằng tôi đang chuẩn bị "0b" và "0o" để phân biệt giữa số nhị phân và số bát phân.
Nếu bạn muốn chơi xung quanh với điều này, hãy mở một thiết bị đầu cuối, chạy python
và sau đó chơi xung quanh với các lệnh sau:
oct(0b111111111)
bin(0o555)
Hãy nhớ thêm "0b" hoặc "0o" vào các số để cho máy tính biết cơ sở nào bạn quan tâm. (Nếu bạn không, nó sẽ giả sử cơ sở 10.)