ทำไมชื่อไดเรกทอรี chmod 0000 จะไม่ล้างบิตพิเศษในไดเรกทอรี?


8
$ mkdir test 
$ chmod 0000 test 
$ ls -la | grep test | awk '{print $1}'
d---------.
$ chmod 6000 test
$ ls -la | grep test | awk '{print $1}'
d--S--S---.
$ chmod 0000 test
$ ls -la | grep test | awk '{print $1}'
d--S--S---.

ฉันไม่แน่ใจว่าทำไมchmod 0000 testจะไม่ล้างบิตสิทธิ์ทั้งหมด ฉันไม่ได้มาที่นี่ ฉันลองเปรียบเทียบกับเครื่องคิดเลขแล้วและมันไม่ตรงกัน พฤติกรรมแบบเดียวกันนี้จะเห็นได้บนเซิร์ฟเวอร์ที่ฉันได้เข้าใช้, RHEL และเครื่องของตัวเอง Ubuntu ฉันได้อ่านเกี่ยวกับเรื่องนี้มาระยะหนึ่งแล้วใช้เวลาพยายามทำความเข้าใจมากเกินไป

ฉันพบปัญหานี้เมื่อพยายามใช้สัญลักษณ์ทั้งหมดสำหรับ octal แรกโดยไม่เคยใช้ chmod กับ 4 octals มาก่อน มันดูเหมือนว่าจะล้างบิตเหนียว

คำตอบ:


8

0000 ได้รับการพิจารณาว่าคลุมเครือเนื่องจากมันอาจหมายถึง 000 บวกกับศูนย์นำเนื่องจากมันเป็นเลขฐานแปด

http://lists.gnu.org/archive/html/bug-coreutils/2011-03/msg00162.html

0755 ไม่ชัดเจน - มันคลุมเครือกับคนที่ใช้ printf% # 3o อย่างชัดเจนในการส่งออกสายอักขระเลขฐานแปด 3 หลักด้วยชั้นนำ 0 - ฉันไม่คิดว่าเราสามารถเปลี่ยนแปลงได้

หัวข้อสนทนา coreutils นั้นเริ่มต้นด้วยบางคนอ้างถึงหน้าคน chmod ที่สังเกตเห็นข้อ จำกัด นี้:

คุณสามารถตั้งค่า (แต่ไม่ชัดเจน) บิตด้วยโหมดตัวเลข

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.