ฉันเห็นการเปลี่ยนแปลงรหัสในที่ทำงานซึ่งค่าโหมดถูกเปลี่ยนจาก 777 เป็น 0777 เพื่อให้ nfs setattr ทำงาน ความแตกต่างใน 2 ค่าคืออะไร?
mkdir()ที่เกี่ยวข้องเช่น 0777 เทียบกับ 777
                ฉันเห็นการเปลี่ยนแปลงรหัสในที่ทำงานซึ่งค่าโหมดถูกเปลี่ยนจาก 777 เป็น 0777 เพื่อให้ nfs setattr ทำงาน ความแตกต่างใน 2 ค่าคืออะไร?
mkdir()ที่เกี่ยวข้องเช่น 0777 เทียบกับ 777
                คำตอบ:
หากคุณกำลังส่งพวกเขาไปที่chmod(โปรแกรมบรรทัดคำสั่ง) จะไม่มีความแตกต่าง แต่ในโปรแกรม C หรือคล้ายกัน0777คือ octal (สามชุดสามบิต 1 ซึ่งเป็นสิ่งที่คุณตั้งใจ) ในขณะที่777เป็นทศนิยมและมันเป็นรูปแบบบิตที่แตกต่างกันมาก ( chmodจะตีความอาร์กิวเมนต์ตัวเลขใด ๆ เป็นฐานแปดจึงไม่จำเป็นต้องมีศูนย์นำหน้า)
0777 (ฐานแปด) == ไบนารี0b 111 111 111    == สิทธิ์rwxrwxrwx     (== ทศนิยม511)
777 (ฐานสิบ) == ไบนารี0b 1 100 001 001== การอนุญาตsr----x--x(== ฐานแปด1411)
chmodคำสั่งจะถูกตีความว่าเป็นเลขฐานแปดเสมอ การใช้chmod 888จะทำให้เกิดข้อผิดพลาด
                    chmodตีความอาร์กิวเมนต์ตัวเลขเป็นฐานแปดโดยไม่คำนึงถึงคำนำหน้า (แต่จริงๆแล้วตัวเลขนั้นไม่มีฟังก์ชั่นเพียงแค่ตัวเลขหรือมากกว่าบิต)
                    1777คุณต้องเขียน01777?
                    1777เขียนเป็น01777C (หรือคุณสามารถเขียน1023ซึ่งเป็นตัวเลขเดียวกันในทศนิยม แต่อย่า :-)
                    บิตแรกใช้สำหรับบิตที่เหนียวhttp://en.wikipedia.org/wiki/Sticky_bit
หากคุณตั้งค่าการอนุญาตโดยใช้ 4 หลักตัวแรกจะตั้งค่าหรือลบบิตนี้
คำตอบที่น่าสนใจคือ:
0700และ700ตามที่อธิบายไว้ในคำตอบอื่น ๆ00700และ0700(ไดเรกทอรี)อย่างน้อยในกรณีของ GNU coreutils รุ่น chmod ซึ่งเป็นค่าเริ่มต้นบน Linux
ดูตัวอย่างนี้:
$ ls -ld mydir
drws--s--- 4 myuser mygroup 4096 Jul  8 09:27 mydir
$ chmod 0710 mydir ; ls -ld mydir                   # surprise ahead -- s-bits remain:
drws--s--- 4 myuser mygroup 4096 Jul  8 09:27 mydir
$ chmod 00710 mydir ; ls -ld mydir                  # _now_ they're gone:
drwx--x--- 4 myuser mygroup 4096 Jul  8 09:27 mydir
นี่คือเพื่อหลีกเลี่ยงการลบโดยไม่ตั้งใจของ setuid / setgid บิตสำหรับไดเรกทอรี สำหรับรายละเอียดโปรดดูเอกสารchmod
ในระบบ Linux มีการอนุญาตให้ใช้ได้สองประเภท:
ในการอนุญาตไฟล์เรากำหนดสิทธิ์สำหรับไฟล์และโฟลเดอร์:
สิทธิ์คือ:
ในขณะที่อยู่ในการอนุญาตพิเศษสามประเภทคือ:
ในคำถามของคุณคุณถามว่าอะไรคือความแตกต่างดังนั้นจึงไม่มีความแตกต่างใด ๆchmod 777 and 0777เนื่องจากมีno any octal valueค่าที่แสดงเป็นศูนย์ (0)