Được sử dụng rộng rãi hơn: chmod 777 hoặc chmod a + rwx [đã đóng]


20

Trong hai tùy chọn để thay đổi quyền:

  • chmod 777 file.txt
  • chmod a+rwx file.txt

Tôi đang viết một tài liệu chi tiết rằng người dùng cần thay đổi quyền truy cập tệp của một tệp nhất định. Tôi muốn chi tiết nó như là cách phổ biến nhất để thay đổi quyền truy cập tệp.

Hiện tại đang nói:

- Set permissions on file.txt as per the example below:
    - chmod 777 /tmp/file.txt

Đây chỉ là một ví dụ và sẽ không thay đổi tệp để có toàn quyền cho mọi người.


6
Giải pháp đầu tiên ngắn hơn và được sử dụng rộng rãi hơn, tôi chưa bao giờ thấy giải pháp thứ hai.
Archemar

2
thiết lập đọc, viết VÀ thực thi quyền cho mọi người thực sự không phải là ý tưởng tốt về mặt bảo mật. Bạn nên sử dụng chmod 773 thay thế.
Martin Erhardt

1
@MartinErhardt Tôi thường chỉ sử dụng 775hoặc 755cho các tệp thực thi.
Kevdog777

3
chmod 777là như thế chmod a=rwx, không phải chmod a+rwx.
Stéphane Chazelas

1
777hoặc 666đơn giản và dễ nhớ hơn nhiều ugo+rwx, a+rwxhoặc ugo+rwrất khó hiểu vì omơ hồ và có thể có nghĩa là cho bạn hoặc chủ sở hữu hoặc người khác, bạn chọn. Vì vậy, thay vì phạm sai lầm lớn, bạn tiếp tục kiểm tra manđể xác minh xem cái nào là cái nào, hoặc chỉ sử dụng các số.
kenorb

Câu trả lời:


29

Google cung cấp cho:

chmod 777 phổ biến hơn khoảng 3 lần.

Điều đó nói rằng, tôi thích sử dụng các tùy chọn dài trong tài liệu và tập lệnh, bởi vì chúng là tài liệu tự. Nếu bạn đang làm theo hướng dẫn của mình với "Chạy ls -l | grep file.txtvà xác minh quyền", bạn có thể muốn sử dụng chmod a+rwxvì đó là cách ls sẽ hiển thị các quyền.


Cảm ơn vì điều đó. Tôi đoán rằng bằng cách viết nó ra đầy đủ (chữ và số) sẽ ngăn mọi người hỏi 7ý nghĩa của nó là gì, v.v.
Kevdog777

1
Tôi nghĩ lý do chmod 777phổ biến hơn (như được xác nhận trước khi nhìn thấy số của bạn) chỉ đơn giản là bạn nhập ít hơn 2 ký tự :)
Ángel

Nếu bạn đang thêm các mẹo trong tài liệu của mình, bạn có thể thêm một mẹo chmod 777là một phím tắt tiện dụng để đạt được hiệu quả tương tự. Độc giả của bạn sẽ đánh giá cao các yếu tố giáo dục trong tài liệu của bạn. 777 phổ biến hơn vì dễ dàng hơn và nhanh hơn 7 lần, nhưng khi người dùng mới nhìn thấy 777 lần đầu tiên, họ có thể không biết chính xác ý nghĩa của nó. Đó là lý do tại sao nó là một lựa chọn tồi làm tài liệu chính. Nhưng nó chắc chắn đáng được đề cập như một mẹo.
ADTC

Như một tiếp tuyến, anh trai tôi và bạn bè của anh ấy sẽ sử dụng kỹ thuật này để cho phép các từ Scrabble. Họ đã có một số ngưỡng cho số lần truy cập Google trước khi một từ được coi là 'thực'
Wayne Werner

Tôi nghĩ nó phổ biến vì nó cũ hơn (ký hiệu tượng trưng đã được thêm vào sau này), vì vậy khi bất kỳ ai chọn, họ tìm kiếm trên google hoặc những gì tương đương với thời gian và đi theo đám đông. Tôi nghĩ việc sử dụng biểu tượng sẽ dễ dàng hơn, bởi vì khi tôi tìm ra những con số tôi có thể đã gõ các ký hiệu, tôi cũng có xu hướng lấy nó ngay lần đầu tiên.
ctrl-alt-delor

26

[Tôi chỉnh sửa để thêm thực hành tốt nhất, theo gợi ý của Dotancohen trong câu trả lời của anh ấy. Tôi hy vọng nó không làm cho nó ít rõ ràng hơn và thói quen tốt đã được thực hiện]

Thông tin bổ sung quan trọng: Chúng không tương đương.

chmod a+rwx: đặt 3 quãng tám cuối cùng thành 777, để đảm bảo rằng Chủ sở hữu, Nhóm và Người dùng có bộ "rwx". Nếu có các bit bổ sung trong bát phân thứ nhất (setuid, setgid và / hoặc bit dính) thì nó sẽ không bị ảnh hưởng. Hãy nghĩ về nó như một nhị phân "hoặc 00777".

chmod 777 : đặt quyền thành 00777, để đảm bảo Chủ sở hữu, Nhóm và Người dùng đã đặt "rwx" và KHÔNG CÓ THÊM. Nó cũng đảm bảo các bit bổ sung (setuid, setgid và / hoặc bit dính) được đặt thành 0.

Vì vậy, hãy sử dụng biểu mẫu đầu tiên, nếu bạn chỉ muốn đảm bảo cấp quyền truy cập cho mọi người (và vui lòng thực hiện gấp đôi, gấp ba chắc chắn rằng nó được yêu cầu ... nó sẽ mở ra tất cả các vấn đề bảo mật, một số vấn đề khá bất ngờ họ cho phép người dùng độc hại làm)

Sử dụng biểu mẫu 777 nếu bạn cũng muốn đảm bảo đặt lại bất kỳ bit setuid / setgid / stick nào, tức là nếu các tệp cần là "00777", có thể nhiều khả năng trong trường hợp của bạn (quyền của tệp đã được biết và nên : 00777). Ngoài ra, hãy chắc chắn rằng nó thực sự cần thiết ...

Thông thường, tốt nhất là giữ quyền truy cập cho chủ sở hữu (và đôi khi là nhóm): sau đó sử dụng các nhóm để cấp quyền truy cập cho một số người dùng cụ thể vào tệp / thư mục. a + rwx vừa dễ và thường là cách cấp quyền truy cập sai (tất nhiên có những trường hợp rất hiếm khi đó là cách duy nhất ...)

http://en.wikipedia.org/wiki/Chmod là một bài đọc tốt vì nó giải thích những gì mỗi số hoặc chữ cái thể hiện (bao gồm setuid / setgid / stick)


1
Ngoài ra, chmod a + w (bao gồm a + rwx) trên tệp suid rất nguy hiểm. Tôi có cần phải giải thích về chmod a + w * không?
Joshua

Điểm trong việc thiết lập sự otherscho phép là gì? Nếu bạn đã đăng nhập vào máy với tư cách là người dùng, thì chắc chắn bạn chỉ có thể sử dụng usersquyền?
Kevdog777

@ Kevdog777: Những người khác dành cho những người không phải là chủ sở hữu cũng như trong nhóm, còn gọi là những người khác trên hệ thống
Olivier Dulac

1
@ Kevdog777: nếu chỉ root và người dùng cần truy cập: chmod 00600 (nếu không cần thực thi tệp) hoặc chmod 00700 (nếu cần thực thi tệp - hoặc đó là thư mục). hoặc chmod 00400 để thêm một bảo vệ (nhỏ, dễ bị ghi đè) chống sửa đổi / ghi vào tệp (00500 cho một thư mục). Sau đó, những người khác (và những người trong nhóm nhưng không phải người dùng) không thể truy cập tệp / thư mục. (theo ghi chú dotandcohen, tôi thêm bát phân thứ 4 vào đó + "0" trước nó: không tạo ra sự khác biệt nào cho vỏ, nhưng sẽ giúp nếu bạn đặt qua perl / C / etc và bát phân thứ 4 là một loại nhắc nhở rằng nó tồn tại và nó cũng được thiết lập)
Olivier Dulac

4
chmod 777cũng giống như chmod a=rwx.
Stéphane Chazelas

1

Tôi thường nghĩ về sự khác biệt khi đặt quyền thành 0777 đặt rõ ràng thành 0777. Như đã đề cập trước đó, số 0 đứng đầu sẽ được suy ra nếu bạn chỉ gõ 777. Trong khi đó, + rwx thêm đọc / ghi / thực hiện để lại setuid / stick một chút hoang sơ.

Giả sử bạn chỉ muốn chắc chắn rằng một tệp có thể thực thi được, bạn có thể sử dụng + x để bạn có thể sửa đổi đặc quyền thực thi mà không phải lo lắng hoặc sửa đổi các quyền khác. Nếu bạn đã sử dụng biểu diễn bát phân, bạn sẽ cần biết các quyền hiện đang được đặt để đảm bảo rằng bạn không sửa đổi các quyền theo một cách khác ngoài những gì bạn dự định.


0

Tôi muốn nói rằng việc đưa ra các giá trị số là phổ biến hơn nhiều trong "hướng dẫn người đơn giản", chẳng hạn như những hướng dẫn được tạo ra cho người dùng lưu trữ web ngân sách. Tuy nhiên, hãy cẩn thận để chỉ định chúng dưới dạng bát phân , không phải thập phân, giá trị:

$ chmod 0777 some_dir

Lưu ý hàng đầu 0trong 0777. Mặc dù Bash và các môi trường CLI khác làm điều đúng đắn khi sử dụng unpadded 777, nhiều ngôn ngữ lập trình như PHP và Perl có các chức năng tương tự đòi hỏi phải có hàng đầu 0. Vì vậy, tôi khuyên bạn nên sử dụng nó trong Bash, để nhớ rằng nó được cho là ở đó.

Lưu ý đối với downvoters: Như đã làm rõ trong các bình luận, chmodtrên thực tế , lệnh thực hiện biết để truyền lệnh dưới dạng bát phân ngay cả khi ký hiệu thập phân được chỉ định. Tuy nhiên, không phải tất cả các môi trường đều hỗ trợ điều này, do đó, cách tốt nhất là làm quen với việc chỉ định rõ ràng.


10
chmodkhông bao giờ coi số là số thập phân. chmod 777 filechmod 0777 filehoàn toàn tương đương.
celtschk

3
@ Kevdog777: "bát phân" chỉ có nghĩa là cơ sở 8. Nhưng bạn không cần quan tâm đến nó, chmodliên quan đến việc sử dụng lệnh shell; bạn chỉ có thể nghĩ ba chữ số là độc lập với nhau, mỗi chữ số cho bạn biết một bộ quyền.
celtschk

3
Đối với chmod, số 0 trong 0777 thực sự có nghĩa là xóa sạch các bit setuid, setgid và dính. Điều này tương đương với 777, vì đối số luôn được đệm với các số 0 đứng đầu đến bốn chữ số. Đối với cùng một lý do, chmod 77là tương đương với chmod 077.
Emil Jeřábek hỗ trợ Monica

1
Các chmodlệnh giải thích lý lẽ chế độ của nó trong bát phân. Bạn cần chú ý nếu bạn đang sử dụng hầu hết các ngôn ngữ lập trình (C, Perl, Nhận), nhưng trong một tập lệnh shell thì nó là bát phân chmod.
Gilles 'SO- ngừng trở nên xấu xa'

1
+1 cho ghi chú của bạn, vì thực sự tốt khi luôn luôn trả trước 0 (ngay cả khi đặt cả 4 octals: 01777 chẳng hạn) vì nó không có gì khác biệt với vỏ, nhưng đảm bảo C, perl và những người khác hiểu nó là bát phân
Olivier Dulac
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.