ซึ่งใช้กันอย่างแพร่หลาย: chmod 777 หรือ chmod a + rwx [ปิด]


20

จากสองตัวเลือกในการเปลี่ยนการอนุญาต:

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

ฉันกำลังเขียนเอกสารที่รายละเอียดที่ผู้ใช้จำเป็นต้องเปลี่ยนการอนุญาตไฟล์ของไฟล์บางไฟล์ ฉันต้องการให้รายละเอียดเป็นวิธีที่ใช้กันโดยทั่วไปในการเปลี่ยนการอนุญาตของไฟล์

ปัจจุบันมีการพูดว่า:

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

นี่เป็นเพียงตัวอย่างและจะไม่เปลี่ยนไฟล์ให้มีสิทธิ์อย่างเต็มที่สำหรับทุกคน


6
วิธีแก้ปัญหาแรกนั้นสั้นกว่าและใช้กันอย่างแพร่หลายมากขึ้นฉันไม่เคยเห็นวิธีที่สองมาก่อน
Archemar

2
การตั้งค่าการอ่านเขียนและดำเนินการให้สิทธิ์สำหรับทุกคนไม่มีความคิดที่ดีในแง่ของความปลอดภัย คุณควรใช้ chmod 773 แทน
Martin Erhardt

1
@MartinErhardt ปกติแล้วฉันจะใช้775หรือ755สำหรับไฟล์ปฏิบัติการเท่านั้น
Kevdog777

3
chmod 777ก็เหมือนไม่chmod a=rwx chmod a+rwx
Stéphane Chazelas

1
777หรือ666เป็นเรื่องง่ายและมากขึ้นกว่า memorizable ugo+rwx, a+rwxหรือugo+rwซึ่งจะทำให้เกิดความสับสนมากในขณะที่oไม่ชัดเจนและอาจหมายถึงให้คุณเป็นเจ้าของหรือคนอื่น ๆ ที่คุณเลือก ดังนั้นแทนที่จะทำผิดพลาดใหญ่คุณต้องตรวจสอบmanเพื่อยืนยันว่าอันไหนเป็นอันไหนหรือใช้ตัวเลข
kenorb

คำตอบ:


29

Google ให้:

  • 1,030,000 ผลการค้นหาสำหรับ ' chmod 777 '
  • 371,000 ผลการค้นหาสำหรับ ' chmod a + rwx '

chmod 777 เป็นที่นิยมมากขึ้นประมาณ 3 ครั้ง

ที่กล่าวว่าฉันชอบใช้ตัวเลือกแบบยาวในเอกสารและสคริปต์เนื่องจากเป็นเอกสารด้วยตนเอง หากคุณทำตามคำแนะนำของคุณด้วย "เรียกใช้ls -l | grep file.txtและตรวจสอบสิทธิ์" คุณอาจต้องการใช้chmod a+rwxเพราะนั่นคือวิธีที่ ls จะแสดงการอนุญาต


ขอบคุณสำหรับสิ่งนี้. ฉันเดาว่าด้วยการเขียนออกมาอย่างเต็มรูปแบบ (ตัวอักษรและตัวเลข) จะป้องกันไม่ให้ผู้คนถาม7ถึงความหมายและอื่น ๆ อีกต่อไป
Kevdog777

1
ผมคิดว่าเหตุผลที่chmod 777เป็นที่นิยมมากขึ้น (เป็น conjetured ก่อนที่จะเห็นตัวเลขของคุณ) ก็คือว่าคุณพิมพ์ 2 ตัวอักษรน้อย :)
Ángel

หากคุณกำลังเพิ่มเคล็ดลับในเอกสารของคุณคุณสามารถเพิ่มเคล็ดลับที่chmod 777เป็นทางลัดที่มีประโยชน์เพื่อให้ได้ผลเช่นเดียวกัน ผู้อ่านของคุณจะขอบคุณองค์ประกอบทางการศึกษาในเอกสารของคุณ 777 นั้นได้รับความนิยมมากกว่าเพราะมันง่ายกว่าและเร็วกว่าที่จะกดปุ่ม 7 สามครั้ง แต่เมื่อผู้ใช้ใหม่เห็น 777 เป็นครั้งแรกพวกเขาอาจไม่รู้ว่ามันหมายถึงอะไร นั่นเป็นเหตุผลที่มันเป็นตัวเลือกที่ไม่ดีเป็นเอกสารหลัก แต่มันก็คุ้มค่าที่จะกล่าวถึงเป็นคำแนะนำ
ADTC

ในฐานะที่เป็นแทนเจนต์พี่ชายและเพื่อนของเขาจะใช้เทคนิคนี้ในการอนุญาตให้ใช้คำ Scrabble พวกเขามีเกณฑ์สำหรับจำนวนการเข้าชมของ Google ก่อนที่คำจะถือว่า 'จริง'
Wayne Werner

ฉันคิดว่ามันเป็นที่นิยมเพราะมันเก่ากว่า (มีการเพิ่มสัญลักษณ์สัญญะในภายหลัง) ดังนั้นเมื่อมีใครเลือกพวกเขาค้นหาใน google หรือสิ่งที่เคยมีมาเทียบเท่ากับเวลาและไปกับฝูงชน ฉันคิดว่ามันง่ายกว่าที่จะใช้สัญลักษณ์เพราะเมื่อถึงเวลาที่ฉันคำนวณจำนวนที่ฉันสามารถพิมพ์สัญลักษณ์ได้ฉันก็มักจะทำให้ถูกต้องในครั้งแรก
ctrl-alt-delor

26

[ฉันแก้ไขเพื่อเพิ่มแนวปฏิบัติที่ดีที่สุดให้ทำตามคำแนะนำของ Dotancohen ในคำตอบของเขา ฉันหวังว่ามันจะไม่ทำให้ชัดเจนน้อยลงและนิสัยที่ดีก็ถูกนำไปใช้]

ข้อมูลเพิ่มเติมที่สำคัญ: พวกเขาจะไม่เทียบเท่า

chmod a+rwx: ตั้งค่า 3 octals ล่าสุดเป็น 777 ดังนั้นจึงมั่นใจได้ว่าเจ้าของกลุ่มและผู้ใช้มีการตั้งค่า "rwx" หากมีบิตเพิ่มเติมใน octal แรก (setuid, setgid และ / หรือ Sticky bit) จะทำให้ไม่มีการเปลี่ยนแปลง คิดว่ามันเป็นเลขฐานสอง "หรือ 00777"

chmod 777 : ตั้งค่าสิทธิ์เป็น 00777 ดังนั้นจึงมั่นใจได้ว่าเจ้าของกลุ่มและผู้ใช้มีการตั้งค่า "rwx" และไม่มีอะไรเพิ่มเติม นอกจากนี้ตรวจสอบให้แน่ใจว่าบิตเพิ่มเติม (setuid, setgid และ / หรือ Sticky bit) ได้รับการตั้งค่าเป็น 0

ดังนั้นให้ใช้แบบฟอร์มแรกหากคุณต้องการให้แน่ใจว่าจะให้สิทธิ์การเข้าถึงแก่ทุกคน (และโปรดตรวจสอบให้แน่ใจว่าจำเป็นต้องใช้สองเท่าและสามเท่า ... มันจะเปิดประตูสู่ปัญหาด้านความปลอดภัยทุกประเภท พวกเขาอนุญาตให้ผู้ใช้ที่เป็นอันตรายทำ)

ใช้แบบฟอร์ม 777 หากคุณต้องการให้แน่ใจว่าได้ทำการรีเซ็ต setuid / setgid / sticky bit ใด ๆ เช่นถ้าไฟล์นั้นจำเป็นต้องเป็น "00777" ซึ่งน่าจะเป็นไปได้มากกว่าในกรณีของคุณ (รู้จักสิทธิของไฟล์และควรเป็น : 00777) ตรวจสอบให้แน่ใจว่าจำเป็นจริง ๆ ...

โดยปกติแล้วจะเป็นการดีที่สุดในการเข้าถึงเจ้าของ (และบางครั้งเป็นกลุ่ม): จากนั้นใช้กลุ่มเพื่อให้สิทธิ์การเข้าถึงแก่ผู้ใช้บางรายในไฟล์ / ไดเรกทอรี + rwx เป็นทั้งง่ายและมักจะผิดวิธีในการให้สิทธิ์การเข้าถึง (แน่นอนว่ามีกรณีที่หายากมากเมื่อมันเป็นวิธีเดียวที่ ...

http://en.wikipedia.org/wiki/Chmodเป็นการอ่านที่ดีเนื่องจากอธิบายว่าแต่ละหมายเลขหรือตัวอักษรแสดงถึงอะไร (รวมถึง setuid / setgid / เหนียว)


1
นอกจากนี้ chmod a + w (ซึ่งรวมถึง + rwx) ในไฟล์ suid นั้นอันตรายมาก ฉันต้องอธิบายอย่างละเอียดเกี่ยวกับ chmod a + w * หรือไม่
โจชัว

จุดประสงค์ในการตั้งค่าการothersอนุญาตคืออะไร? หากคุณเข้าสู่ระบบในฐานะผู้ใช้แล้วคุณสามารถใช้usersสิทธิ์ได้หรือไม่?
Kevdog777

@ Kevdog777: อื่น ๆ มีไว้สำหรับคนที่ไม่ใช่เจ้าของหรือในกลุ่มหรือที่รู้จักกันทุกคนในระบบ
Olivier Dulac

1
@ Kevdog777: หากมีเพียง root และผู้ใช้จำเป็นต้องเข้าถึง: chmod 00600 (หากไม่จำเป็นต้องเรียกใช้งานไฟล์) หรือ chmod 00700 (หากจำเป็นต้องเรียกใช้ไฟล์หรือเป็นไดเรกทอรี) หรือ chmod 00400 เพื่อเพิ่มการป้องกัน (เล็ก ๆ , แทนที่ได้อย่างง่ายดาย) จากการแก้ไข / เขียนไฟล์ (00500 สำหรับไดเรกทอรี) จากนั้นคนอื่น ๆ (และคนในกลุ่ม แต่ไม่ใช่ผู้ใช้) ไม่สามารถเข้าถึงไฟล์ / dir (ตาม dotandcohen note ฉันเพิ่ม octal 4 ในนั้น + a "0" ก่อนหน้านั้น: ไม่สร้างความแตกต่างให้กับ shell แต่ช่วยได้ถ้าคุณตั้งค่าผ่าน perl / C / etc และ octal ตัวที่ 4 เป็นตัวเตือนที่มีอยู่ และมันก็ถูกตั้งไว้ด้วย)
โอลิเวียร์ดูแลค

4
chmod 777chmod a=rwxเป็นเหมือน
Stéphane Chazelas

1

ฉันมักจะนึกถึงความแตกต่างที่ว่าการตั้งค่าการอนุญาตเป็น 0777 จะกำหนดเป็น 0777 อย่างชัดเจนดังที่ได้กล่าวไว้ก่อนหน้านี้ 0 นำหน้าจะถูกอนุมานหากคุณพิมพ์ 777 ในขณะที่ + rwx เพิ่มอ่าน / เขียน / ดำเนินการออกจาก setuid / เหนียว แตะต้องบิต

สมมติว่าคุณต้องการให้แน่ใจว่าไฟล์นั้นสามารถเรียกใช้งานได้คุณอาจใช้เครื่องหมาย + x เพื่อให้คุณสามารถแก้ไขสิทธิ์การดำเนินการได้โดยไม่ต้องกังวลหรือแก้ไขสิทธิ์อื่น ๆ หากคุณใช้การแทนฐานแปดคุณจะต้องรู้ว่าสิทธิ์ใดที่ตั้งค่าไว้ในปัจจุบันเพื่อให้แน่ใจว่าคุณไม่ได้แก้ไขการอนุญาตในลักษณะอื่นนอกเหนือจากที่คุณต้องการ


0

ฉันจะบอกว่าให้ค่าตัวเลขเป็นเรื่องธรรมดามากใน "คู่มือประชาชนง่าย" เช่นที่ผลิตสำหรับผู้ใช้เว็บโฮสติ้งงบประมาณ อย่างไรก็ตามโปรดระมัดระวังเพื่อระบุให้เป็นค่าฐานแปดไม่ใช่ทศนิยม:

$ chmod 0777 some_dir

หมายเหตุชั้นนำใน0 0777แม้ว่าทุบตีและสภาพแวดล้อม CLI อื่น ๆ ทำสิ่งที่ถูกต้องกับการใช้ unpadded 777, การเขียนโปรแกรมภาษาหลายอย่างเช่น PHP และ Perl 0มีฟังก์ชั่นที่คล้ายกันที่ไม่จำเป็นต้องมีผู้นำ ดังนั้นฉันจึงแนะนำให้ใช้ใน Bash เช่นกันเพื่อให้จำไว้ว่าควรจะอยู่ที่นั่น

หมายเหตุสำหรับ downvoters:ตามที่ได้อธิบายไว้ในความคิดเห็นแล้วchmodคำสั่งจะทราบผ่านคำสั่งเป็นฐานแปดแม้ว่าจะมีการระบุสัญลักษณ์ทศนิยมไว้ก็ตาม อย่างไรก็ตามบางสภาพแวดล้อมไม่รองรับสิ่งนี้ดังนั้นจึงเป็นวิธีปฏิบัติที่ดีที่สุดในการใช้เพื่อระบุอย่างชัดเจน


10
chmodไม่ถือว่าตัวเลขเป็นทศนิยม chmod 777 fileและchmod 0777 fileเทียบเท่าอย่างสมบูรณ์
celtschk

3
@ Kevdog777: "แปด" เพียงแค่หมายถึงฐาน 8 แต่คุณไม่จำเป็นต้องสนใจมันเท่าที่การใช้chmodคำสั่งเชลล์เกี่ยวข้อง คุณสามารถนึกได้ว่าตัวเลขสามหลักนั้นเป็นอิสระจากกันโดยแต่ละคนบอกให้คุณทราบชุดของการอนุญาต
celtschk

3
ในการ chmod, 0 ใน 0777 หมายถึง "ล้าง setuid, setgid และเหนียวบิต" นี่เทียบเท่ากับ 777 เนื่องจากอาร์กิวเมนต์มีเบาะเต็มด้วยเลขศูนย์นำหน้าถึงสี่หลักเสมอ ด้วยเหตุผลเดียวกัน, เทียบเท่ากับchmod 77 chmod 077
Emil Jeřábekสนับสนุนโมนิก้า

1
chmodคำสั่งตีความอาร์กิวเมนต์โหมดในฐานแปด คุณจำเป็นต้องให้ความสนใจหากคุณกำลังใช้การเขียนโปรแกรมภาษามากที่สุด (C, Perl, ... ) chmodแต่ในสคริปต์เปลือกมันเป็นฐานแปด
Gilles 'หยุดชั่วร้าย'

1
+1 สำหรับบันทึกย่อของคุณเนื่องจากเป็นการดีที่จะเติม 0 เสมอ (แม้ว่าจะตั้งค่าทั้งหมด 4 octals: 01777 ตัวอย่าง) เนื่องจากไม่มีความแตกต่างกับเชลล์ แต่ให้แน่ใจว่า C, perl และอื่น ๆ ตีความว่าเป็น octal
Olivier Dulac
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.