ทำไม“ chmod 1777” และ“ chmod 3777” ทั้งคู่จึงตั้งค่าบิตเหนียว?


15

ในการตั้งค่า sticky bit ในไดเรกทอรีเหตุใดคำสั่งchmod 1777และchmod 3777ทั้งคู่จึงทำงาน


2
คุณกำลังเสนอการดำเนินการที่อาจมีความเสี่ยงการรวมบิตที่เหนียวและการอนุญาต rwx สำหรับทั้งหมดนั้นเป็นการปฏิบัติที่ไม่ดี ทุกคนสามารถเปลี่ยนและดำเนินการไฟล์และ s-bit อนุญาตให้เปลี่ยนเป็นผู้ใช้รูทโดยไม่ต้องใช้รหัสผ่าน
jippie

1
@jippie setuid และ setgid บิตหายไปหากไฟล์ถูกแก้ไขดังนั้นคุณจะไม่สามารถเข้าถึงรูทได้
Kyle Jones

@ KyleJones มันอันตรายนะ ถ้าpasswdไบนารีเป็นโลกที่สามารถเขียนได้คุณจะไม่สามารถที่จะได้รับการเข้าถึงรากโดยการปรับเปลี่ยนมันเป็นคุณจะพูด แต่คุณสามารถแทนที่ด้วยบางไบนารีอื่น ๆ passwdที่ทุกคนจะทำงานหลังจากนั้นคิดว่ามันเป็น
สัญลักษณ์แทน

@ เห็นด้วยเห็นด้วย
Kyle Jones

คำตอบ:


29

แต่ละหมายเลข (เรียกอีกอย่างว่าฐานแปดเพราะเป็นฐาน 8) ในการจัดกลุ่มนั้นหมายถึง 3 บิต หากคุณเปลี่ยนเป็นไบนารี่มันจะทำให้ง่ายขึ้นมาก

1 = 0 0 1
3 = 0 1 1
5 = 1 0 1
7 = 1 1 1

ดังนั้นถ้าคุณทำ 1777, 3777, 5777 หรือ 7777 คุณจะต้องตั้งค่าบิตที่เหนียวเพราะคอลัมน์ที่สามจะเป็น 1 อย่างไรก็ตามด้วย 3777, 5777 และ 7777 คุณจะตั้งบิตอื่นเพิ่มเติม (SUID สำหรับคอลัมน์แรกและ SGID สำหรับคอลัมน์ที่สอง)

ในทางกลับกันตัวเลขอื่น ๆ ในจุดนั้น (สูงสุด 7) จะไม่ตั้งบิตเหนียวเนื่องจากคอลัมน์สุดท้ายจะไม่ใช่ 1 หรือ "เปิด"

2 = 0 1 0
4 = 1 0 0
6 = 1 1 0


3
+1 สำหรับคำอธิบายที่ดีว่าตัวเลขฐานแปดทำงานอย่างไรและนำไปใช้กับบิตสิทธิ์ของไฟล์ได้อย่างไร
CVn

1
มันเรียกว่า "bitmask" และ +1 สำหรับการอธิบาย / แสดงวิธีการตั้งค่าและclearคอลัมน์กลุ่มเจ้าของและอื่น ๆ
Chris K

16

สิทธิ์ที่ส่งผ่านเป็นอาร์กิวเมนต์ไปยัง chmod ถูกระบุเป็นค่าฐานแปด ตัวเลขแต่ละตัวในค่าแทนสามบิต หากได้รับตัวเลขสามตัวคุณกำลังตั้งค่าบิตอ่านเขียนและดำเนินการสำหรับเจ้าของไฟล์กลุ่มและอื่น ๆ (ทุกคน) หากกำหนดตัวเลขสี่ตัวหมายเลขด้านซ้ายสุดจะตั้งค่าบิต setuid, setgid และเหนียว Octal 1 ตั้งบิตเหนียว Octal 2 กำหนด bit setgid Octal 2 + octal 1 คือ octal 3 ซึ่งตั้งค่าบิต setgid และ sticky bit


1
ไม่ใช่เลขฐานแปด 2 | ฐานแปด 1 มากกว่าฐานแปด 2 + ฐานแปด 1 การดำเนินการเกิดขึ้นกับผลลัพธ์เดียวกันในกรณีนี้ แต่โดยทั่วไปมันเป็นบิตหรือที่สำคัญใช่มั้ย
gerrit

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