พฤติกรรมแปลก ๆ สำหรับ setuid และ setgid


1

ฉันกำลังทำการทดลองขนาดเล็กที่มีบิตสิทธิ์พิเศษดังนี้

[root@localhost~]# useradd user1
[root@localhost~]# cp /bin/touch /home/
[root@localhost~]# chown user1:user1 /home/touch
[root@localhost~]# chmod u+s,g+s /home/touch
[root@localhost~]# ls -l /home/touch
-rwsr-sr-x 1 user1 user1 52656 Jun 26 14:17 /home/touch
[root@localhost~]# chmod o+w /usr/local/etc/
[root@localhost~]# ls -ld /usr/local/etc
drwxr-xrwx.2 root root 4096 Jun 26 14:14 /usr/local/etc/
[root@localhost~]# /home/touch /usr/local/etc/root.1
/home/touch: cannot touch '/usr/local/etc/root.1': Permission denied

เนื่องจากทั้ง suid bit และ sgid bit ถูกตั้งค่าไว้สำหรับ executable /home/touchฉันคาดหวังว่าเมื่อ root รันคำสั่ง/home/touch /usr/local/etc/root.1ประสิทธิภาพที่user:groupควรจะเป็นuser1:user1ซึ่งควรมีการเข้าถึงการเขียนไปยัง/usr/local/etcไดเรกทอรี (ดูo=rwx)

แต่ผลที่ได้ทำให้ฉันงง ที่จริงแล้วทุกคนที่อยู่ในrootกลุ่มจะล้มเหลวเหมือนรูท แต่ผู้ใช้รายอื่นสามารถรันคำสั่งด้านบนได้สำเร็จ

หลังจากที่ฉันเปลี่ยนโหมดไดเรกทอรีโดยchmod g+w /usr/local/etcผู้ใช้ที่อยู่ในrootกลุ่มสามารถเรียกใช้คำสั่งได้โดยไม่มีข้อผิดพลาดในการอนุญาต

ไม่ควรเป็นผู้ใช้ที่มีประสิทธิภาพ: กลุ่มสำหรับทุกคนที่ทำงาน/home/touchอยู่user1:user1ใช่หรือไม่ เกิดอะไรขึ้นกับกลุ่มรูท ฉันคิดถึงอะไรเหรอ?

ฉันทำการทดลองกับ RHEL 6.4 64 บิต


1
ฉันสังเกตเห็นว่าสิทธิ์การส่งออกสำหรับ/usr/local/etc(“ drwxr-xrwx.”) ลงท้ายด้วยจุด นี่อาจหมายความว่าไดเรกทอรีมี ACL คุณช่วยตรวจสอบได้ไหม
สกอตต์

ไดเรกทอรีหรือไฟล์ที่มี ACL นั้นลงท้ายด้วยเครื่องหมาย "+" แทน "."
yuanlinios

ฉันดูเอกสาร 'ls' มันบอกว่า: GNU 'ls' ใช้ '' เพื่อระบุไฟล์ที่มีบริบทความปลอดภัยของ SELinux ในสภาพแวดล้อมของฉันฟีเจอร์ SELinux ถูกปิดใช้งาน
yuanlinios
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.