SUID
เหนียวเล็กน้อยนำไปใช้กับโปรแกรมปฏิบัติการการตั้งค่าสถานะของระบบเพื่อให้ภาพของโปรแกรมในหน่วยความจำหลังจากที่โปรแกรมทำงานเสร็จ
แต่ฉันไม่รู้ว่าสิ่งที่เก็บไว้ในหน่วยความจำ และฉันจะเห็นพวกเขาอย่างไรในกรณีนี้
SUID
เหนียวเล็กน้อยนำไปใช้กับโปรแกรมปฏิบัติการการตั้งค่าสถานะของระบบเพื่อให้ภาพของโปรแกรมในหน่วยความจำหลังจากที่โปรแกรมทำงานเสร็จ
แต่ฉันไม่รู้ว่าสิ่งที่เก็บไว้ในหน่วยความจำ และฉันจะเห็นพวกเขาอย่างไรในกรณีนี้
คำตอบ:
นี่อาจเป็นหนึ่งในสิ่งที่น่ารำคาญที่สุดของฉันที่ผู้คนสับสนตลอดเวลา บิต SUID / GUID และ sticky-bit เป็น 2 สิ่งที่แตกต่างอย่างสิ้นเชิง
ถ้าคุณทำman chmod
คุณสามารถอ่านเกี่ยวกับ SUID และ sticky-bits หน้าคนสามารถใช้ได้ที่นี่เช่นกัน
สิ่งที่สกัดมา
ตัวอักษรrwxXstเลือกบิตโหมดไฟล์สำหรับผู้ใช้ที่ได้รับผลกระทบ: อ่าน (r), เขียน (w), เรียกใช้ (หรือค้นหาไดเรกทอรี) (x), เรียกใช้ / ค้นหาเฉพาะในกรณีที่ไฟล์เป็นไดเรกทอรีหรือมีสิทธิ์ดำเนินการบางอย่างแล้ว ผู้ใช้ (X), การตั้งค่าผู้ใช้หรือกลุ่ม ID ในการดำเนินการ (s) , ถูก จำกัด ธงลบหรือ บิตเหนียว (t)
สิ่งที่หน้า man ด้านบนพยายามจะพูดคือตำแหน่งที่บิต x ใช้ใน rwxrwxrwx สำหรับ octal ผู้ใช้ (กลุ่มที่ 1 ของ rwx) และ octal กลุ่ม (กลุ่มที่ 2 ของ rwx) สามารถใช้สถานะเพิ่มเติมที่ x กลายเป็น เอส เมื่อสิ่งนี้เกิดขึ้นกับไฟล์นี้เมื่อดำเนินการ (หากเป็นโปรแกรมและไม่ใช่แค่เชลล์สคริปต์) จะทำงานโดยได้รับอนุญาตจากเจ้าของหรือกลุ่มของไฟล์
ดังนั้นหากไฟล์เป็นเจ้าของโดย root และเปิด SUID bit โปรแกรมจะทำงานในฐานะ root แม้ว่าคุณจะรันมันเป็นผู้ใช้ปกติ สิ่งเดียวกันนี้ใช้กับบิต GUID
สิ่งที่สกัดมา
SETUID และ SETGID BITS
chmod ล้างบิต set-group-ID ของไฟล์ปกติหาก ID กลุ่มของไฟล์ไม่ตรงกับ ID กลุ่มที่มีประสิทธิภาพของผู้ใช้หรือหนึ่งใน ID กลุ่มเสริมของผู้ใช้ยกเว้นว่าผู้ใช้มีสิทธิ์ที่เหมาะสม ข้อ จำกัด เพิ่มเติมอาจทำให้บิต set-user-ID และ set-group-ID บิตของ MODE หรือ RFILE ถูกละเว้น พฤติกรรมนี้ขึ้นอยู่กับนโยบายและการทำงานของการเรียกระบบ chmod เมื่อมีข้อสงสัยให้ตรวจสอบพฤติกรรมของระบบพื้นฐาน
chmod รักษาบิตของ set-user-ID และ set-group-ID บิตเว้นแต่คุณจะระบุเป็นอย่างอื่นอย่างชัดเจน คุณสามารถตั้งค่าหรือล้างบิตด้วยโหมดสัญลักษณ์เช่น u + s และ gs และคุณสามารถตั้งค่าบิต (แต่ไม่ชัดเจน) บิตด้วยโหมดตัวเลข
ไม่มี SUID / GUID - เพียงแค่บิตrwxr-xr-xมีการตั้งค่า
$ ls -lt b.pl
-rwxr-xr-x 1 root root 179 Jan 9 01:01 b.pl
suid & ผู้ใช้ที่เปิดใช้งานบิตที่ใช้งานได้ (ตัวพิมพ์เล็ก) - บิตrwsr-xrxถูกตั้งค่า
$ chmod u+s b.pl
$ ls -lt b.pl
-rwsr-xr-x 1 root root 179 Jan 9 01:01 b.pl
SUID เปิดการใช้งานและบิตปฏิบัติการปิดการใช้งาน (พิมพ์ใหญ่ S) - บิตrwSr-xr-xมีการตั้งค่า
$ chmod u-x b.pl
$ ls -lt b.pl
-rwSr-xr-x 1 root root 179 Jan 9 01:01 b.pl
GUID และกลุ่มของบิตปฏิบัติการเปิดการใช้งาน (ตัวพิมพ์เล็ก s) - บิตrwxr-SR-xมีการตั้งค่า
$ chmod g+s b.pl
$ ls -lt b.pl
-rwxr-sr-x 1 root root 179 Jan 9 01:01 b.pl
GUID เปิดการใช้งานและบิตปฏิบัติการปิดการใช้งาน (พิมพ์ใหญ่ S) - บิตrwxr-SR-xมีการตั้งค่า
$ chmod g-x b.pl
$ ls -lt b.pl
-rwxr-Sr-x 1 root root 179 Jan 9 01:01 b.pl
Sticky บิตในทางกลับกันแสดงเป็นt
เช่นกับ/tmp
ไดเร็กทอรี:
$ ls -l /|grep tmp
drwxrwxrwt. 168 root root 28672 Jun 14 08:36 tmp
บิตนี้ควรถูกเรียกเสมอว่า "การลบ จำกัด " ที่ให้ไว้นั่นคือความหมายที่แท้จริง เมื่อเปิดใช้งานโหมดบิตนี้มันจะสร้างไดเรกทอรีซึ่งผู้ใช้สามารถลบไฟล์และไดเรกทอรีที่อยู่ในนั้นว่าเป็นเจ้าของเท่านั้น
สิ่งที่สกัดมา
ธงลบที่ถูก จำกัด หรือ BIT เหนียว
การตั้งค่าสถานะการลบที่ จำกัด หรือบิตที่ จำกัด เป็นบิตเดียวซึ่งการตีความขึ้นอยู่กับชนิดของไฟล์ สำหรับไดเรกทอรีจะ
ป้องกันผู้ใช้ที่ไม่มีสิทธิพิเศษจากการลบหรือเปลี่ยนชื่อไฟล์ในไดเรกทอรีเว้นแต่พวกเขาเป็นเจ้าของไฟล์หรือไดเรกทอรี สิ่งนี้เรียกว่าการตั้งค่าสถานะการลบแบบ จำกัด สำหรับไดเรกทอรีและพบได้ทั่วไปในไดเรกทอรีที่เขียนได้ทั่วโลกเช่น / tmp สำหรับไฟล์ปกติในระบบเก่าบางรุ่นบิตบันทึกรูปภาพข้อความของโปรแกรมบนอุปกรณ์ swap ดังนั้นมันจะโหลดเร็วขึ้นเมื่อทำงาน นี้เรียกว่าบิตเหนียว
ls
มันตั้งใจสำหรับคำสั่งปฏิบัติการระดับที่สำคัญเช่น เห็นได้ชัดว่ามีเพียง superuser เท่านั้นที่สามารถตั้งค่า bit bit ของไฟล์ได้ มันมีความสำคัญน้อยลงหลังจากมีการแนะนำหน่วยความจำเสมือนและไลบรารีที่แชร์และโดยเฉพาะอย่างยิ่งเมื่อเพจเจอร์เริ่มฉลาดขึ้นและสามารถตัดสินใจได้ว่าจะให้เพจใดอาศัยอยู่
ed
เหนียวเท่านั้น
"บิตหน่วงนำไปใช้กับโปรแกรมที่ปฏิบัติการได้การตั้งค่าสถานะระบบเพื่อเก็บภาพของโปรแกรมไว้ในหน่วยความจำหลังจากที่โปรแกรมทำงานเสร็จ"
ฉันคิดว่ามันเป็นข้อมูลที่ล้าสมัยไปแล้วในวันนี้ยูนิกซ์สมัยใหม่ส่วนใหญ่ไม่สนใจสิ่งนั้น ใน Linux บิตเหนียวนั้นเกี่ยวข้องกับไดเรกทอรีเท่านั้น ดูที่นี่และข้อมูลค่อนข้างบทความวิกิพีเดีย
อย่างไรก็ตามในภาพเก่านั้นภาพ (เฉพาะ "รหัส" ไม่ใช่ข้อมูล) ถูกเก็บไว้ในหน่วยความจำเสมือนเท่านั้น - เปลี่ยนเป็นปกติไม่ใช่ในหน่วยความจำจริงเพื่อให้ทำงานได้เร็วขึ้นในครั้งต่อไป
สิ่งที่เป็นบิตเหนียว?
sticky bit เป็นบิตสิทธิ์ที่ตั้งค่าไว้ในไดเรกทอรีที่อนุญาตให้เฉพาะเจ้าของไฟล์ในไดเรกทอรีนั้นหรือผู้ใช้รูทเท่านั้นที่จะลบหรือเปลี่ยนชื่อไฟล์ ไม่มีผู้ใช้รายอื่นที่มีสิทธิ์ที่จำเป็นในการลบไฟล์ที่สร้างโดยผู้ใช้รายอื่น
นี่เป็นมาตรการรักษาความปลอดภัยเพื่อหลีกเลี่ยงการลบโฟลเดอร์สำคัญและเนื้อหา (ไดเรกทอรีย่อยและไฟล์) แม้ว่าผู้ใช้รายอื่นจะได้รับอนุญาตอย่างเต็มที่