Tại sao sử dụng `chmod 644` thay vì` chmod u = rw, go = r, '`?


38

Tôi đã làm việc trên * nix được vài năm rồi và một trong những điều tôi không thể làm quen là quyền bát phân trong mã. Có một số lý do khác ngoài chiều dài dòng để thích chmod 644 ...hơn chmod u=rw,go=r ...?

PS: Tôi không tìm kiếm một lời giải thích về quyền bát phân. Tôi biết cách chúng hoạt động, và nó được giải thích rõ trong hướng dẫn. Tôi đang hỏi tại sao bát phân dường như được ưa thích hơn hình thức dễ đọc hơn của con người.

Câu trả lời:


40

Sử dụng mã bát phân có hai lợi thế tôi có thể nghĩ đến, không phải cái nào cũng lớn cả:

  1. Chúng ngắn hơn, dễ gõ hơn.
  2. Một vài điều chỉ hiểu chúng và nếu bạn thường xuyên sử dụng chúng, bạn sẽ không phải vò đầu bứt tai (hoặc chạy đến tài liệu) khi bạn gặp phải một vấn đề. Ví dụ: bạn phải sử dụng bát phân cho chmodPerl hoặc C.

Đôi khi các tiện ích thực sự đơn giản sẽ không xử lý các phiên bản "thân thiện"; đặc biệt là trong các vùng người dùng không phải GNU.

Hơn nữa, một số tiện ích nhổ ra bát phân. Ví dụ: nếu bạn chạy umaskđể xem ô hiện tại của bạn là gì, nó sẽ nhổ nó ra trong bát phân (mặc dù trong bash, umask -Scó tính biểu tượng).

Vì vậy, tóm lại, tôi muốn nói lý do duy nhất để thích chúng là nhập ít ký tự hơn, nhưng ngay cả khi bạn chọn không sử dụng chúng, bạn nên biết cách chúng ánh xạ để bạn có thể tìm ra mã bát phân nếu bạn chạy vào một trong những điều chỉ làm bát phân. Nhưng bạn không cần phải biết ngay rằng 5 bản đồ tới rx, bạn chỉ cần có thể tìm ra điều đó.


1
Nói rằng chmodtrong Perl hoặc C cần sử dụng biểu diễn bát phân không thực sự là một lợi thế khi thấy đại diện đã tồn tại ở nơi đầu tiên.
n0pe

@MaxMackie: Đó là một lợi thế cho bạn khi sử dụng chúng. Tôi sẽ làm rõ.
derobert

18

Đoán tôi đã sử dụng bát phân quá lâu.

7 là rwx (làm bất cứ điều gì với nó), 5 là rx (phải đọc nó để thực thi nó), 6 là wr (bất kỳ tệp dữ liệu nào bạn cần sửa đổi), 4 là r (chúng tôi sẽ cho phép bạn xem nó) và 0 là - (xin lỗi, không có gì ở đây để xem). Và thứ tự là tôi, chúng tôi, mọi người. Đây là những kết hợp cơ bản.

755 Tôi có thể thay đổi và chạy nó, mọi người khác có thể chạy nó.

644 Tôi có thể thay đổi nó, mọi người khác có thể đọc nó.

444 Chỉ đọc cho tất cả mọi người, chúng tôi thông qua đây.

500 Tôi có thể thực thi nó, không muốn nó thay đổi, mọi người đều ra tay.

Đối với tôi, nó ngắn, đến mức. 9 ký tự và một thông số tập tin và di chuyển trên.


Vâng, bát phân (cơ sở-8), không phải hex (cơ sở-16).
derobert

Đúng, cái đó, một nửa hình lục giác. <grin>
Phòng thí nghiệm Fiasco

Tương tự ở đây, tôi thấy bát phân dễ đọc hơn phiên bản văn bản ...
Brian Knoblauch 16/12/13

13

Tôi chưa bao giờ thực sự thích đại diện bát phân, tôi đã luôn đi thẳng vào rwxr-xr-xký hiệu vì nó có vẻ đơn giản hơn đối với tôi. Tuy nhiên, từ những gì tôi thu thập được đại diện bát phân tồn tại để thực sự giúp chúng ta dễ nhớ hơn (tôi không thấy cách thức hoạt động của nó).

Lợi ích duy nhất có thể khác mà tôi thấy bát phân mang đến bàn là thiếu sự mơ hồ. 8 cấu hình bit quyền khác nhau được biểu thị bằng một số riêng biệt, điều này tôi chắc chắn sẽ giúp một số người vô tình đặt một wnơi mà họ không nên có.

Thật không may, mặc dù tôi đã ghi nhớ bảng này:

#  r  w  x
0  0  0  0
1  0  0  1
2  0  1  0
3  0  1  1
4  1  0  0
5  1  0  1
6  1  1  0
7  1  1  1

8
Tôi đã học nó như là sử dụng nhị phân cho mỗi bộ 3. vì vậy rw ------- sẽ là (110) (000) (000), đó là (6) (0) (0). rwxr-xr-x sẽ là (111) (101) (101), vì vậy (7) (5) (5).
Cướp

4
Các chính lý do các đại diện bát phân tồn tại là vì đó là cách hệ thống cho phép Unix ban đầu đã được lập trình, từ C. 4 chữ số bát phân (nhớ những người đặc biệt, như năm 1777 cho /tmp, trong đó có chút dính) mất 12 bit, một kích thước thuận tiện về các PDP, đặc biệt là PDP-8. Nếu họ đã sử dụng hex, một ánh xạ tự nhiên của một bộ quyền cho mỗi chữ số hex sẽ yêu cầu một máy từ 16 bit +, mà không phải tất cả các PDP đều được. Nó cũng sẽ lãng phí 3 bit hoặc yêu cầu họ phát minh ra việc sử dụng cho các bit đó, điều này có thể sẽ có các phép Unix phức tạp không có lợi ích thực sự.
Warren Young

Đi tới @Rob btw. Thật vậy, sau khi tính toán một số thực tế từ biểu diễn nhị phân là một tổ hợp cơ bản và bạn thậm chí không cần nhớ về việc có "số bát phân" vì số lượng tối đa (ví dụ 111b) sẽ không vượt quá 7.
Hi-Angel

Bảng này làm cho nó rất rõ ràng. Thật tuyệt!!!
Little Roys

6

Tôi nghĩ lý do là một lần nữa - lịch sử. Lúc đầu, các giá trị bát phân là những giá trị duy nhất. Những người tượng trưng đã đến sau.

Tôi thích những cái tượng trưng. Đặc biệt là nếu bạn muốn thay đổi các giá trị hiện có mà không cần chạm vào các phần khác.

Thích chmod -R u=rwx,g-w+X,o=-làm điều đó trong bát phân ...


3

Lưu ý rằng chế độ bát phân có thể loại bỏ các bit setuid và setgid trên một số hệ thống.

Fedora 16:

$ mkdir dir
$ chmod 2775 dir
$ stat -c %a dir
2775
$ chmod 770 dir
$ stat -c %a dir
2770

( 2được bảo tồn)

FreeBSD 9:

$ mkdir dir
$ chmod 2775 dir
$ stat -f %Mp%Lp dir
2775
$ chmod 770 dir
$ stat -f %Mp%Lp dir
0770

( 2đã trở thành một 0)

Nếu bạn muốn thay đổi quyền của tệp hoặc thư mục, tốt hơn là chỉ định các bit bạn muốn thay đổi (ví dụ chmod o= dirhoặc chmod o-rwx dirtrong ví dụ trên).


2

Lịch sử giải thích tại sao các chế độ bát phân tồn tại , nhưng tôi nghĩ chức năng là lý do tại sao hình thức ghi nhớ tồn tại. Và tất cả các điểm về các công cụ khác sử dụng chế độ bát phân độc quyền là hoàn toàn hợp lệ và tôi nghĩ bạn phải tìm hiểu và biết chúng. Tuy nhiên, tôi thấy rằng các quản trị viên bảo thủ không nhìn thấy tiện ích thực sự xuất phát từ hình thức ghi nhớ.

Dạng bát phân, đặc biệt là khi được sử dụng đệ quy, có xu hướng buộc các quản trị viên làm những điều ngu ngốc. Hay nói đúng hơn là sơ suất dẫn đến việc nó trở nên ngu ngốc. Bất cứ khi nào bạn chạy trên một số thư mục có nhiều tệp văn bản và tập xbit, bạn có bằng chứng.

Tại sao mọi người sẽ thiết lập xbit như vậy? Bởi vì thật khó để không trừ khi bạn sử dụng hình thức ghi nhớ cho các chế độ. Hãy xem xét rằng bạn muốn đặt lại các quyền trên /var/wwwvà bạn không chạy bất kỳ CGI kiểu cũ nào, vì vậy xbit nên được loại bỏ. Tuy nhiên, xbit phục vụ mục đích khác trên các thư mục. Vì vậy, cuối cùng bạn làm một cái gì đó (như root) như:

chmod -R 666 /var/www
find /var/www -type d -exec chmod 777 {} \;

Tuy nhiên, nếu bạn đang sử dụng hình thức ghi nhớ, bạn có thể cung cấp cho nó một "công thức":

chmod -R a=rwX /var/www

đó là dạng ngắn của chmod -R ugo=rwX /var/www(đạt được cùng một đường dẫn, nhưng khác nhau chmod -R a-x,a+rwX /var/www:).

Nhưng có một điều khác tầm thường hơn mà không thể đạt được với các chế độ bát phân. Bạn không thể điều chỉnh userhoặc grouphoặc othermặt nạ riêng lẻ với dạng bát phân.

Nói tóm lại: nó giống như so sánh một con dao mổ (mnemonic) và một con dao làm bếp sắc bén (bát phân) ... nhưng bạn vẫn phải biết các bit chế độ bát phân vì những lý do khác :)

Lý do tại sao các chế độ bát phân vẫn được ưa thích , tôi nghĩ, không phải là gõ nhiều hơn liên quan đến hình thức ghi nhớ, mà là quản trị viên quá bảo thủ. Và vâng, năm 2013 kêu gọi, những quản trị viên bảo thủ quá mức vẫn tồn tại và ở đây một thời gian.


0

Khi bạn phải sửa đổi quyền của các tệp mọi lúc , bạn đánh giá cao 3 ký tự. Rất nhiều thời gian tôi sử dụng +hoặc -phiên bản để thay đổi quyền.

Ví dụ, tôi tạo một PHP, Python mới hoặc tập lệnh khác trong thư mục apache của mình. chmod a+xlà tất cả tôi làm để nó có thể được chạy. Tôi đọc nó là "tất cả cộng thực hiện". Bây giờ tôi biết nó sẽ hoạt động và tôi chỉ cần 3 ký tự.

Lần khác tôi sử dụng 644 và 755 tự động. Tôi chỉ nghĩ về nó như 644là một tập tin, 755có nghĩa là một kịch bản.


0

Nó phù hợp với các cài đặt umask, thường được đưa ra bằng văn bản bát phân (bằng pamhoặc fstab).


0

Tôi đề nghị rằng một lý do quan trọng là biểu diễn bát phân khớp với những gì bạn thấy với ls -l(hoặc, đúng hơn, nó thực hiện khi bạn chuyển đổi tinh thần giữa bát phân và nhị phân).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.