ฉันพยายามทำความเข้าใจว่า selinux confined users ทำงานอย่างไร แต่มีพฤติกรรมบางอย่างที่ฉันยังไม่สามารถเข้าใจได้
ตาม หมวกสีแดง
ความสามารถของผู้ใช้ SELinux
ผู้ใช้ stuff_u ควรจะเรียกใช้ sudo ได้ แต่ไม่ใช่ su
ดังนั้นฉันได้สร้างผู้ใช้ ผู้ใช้บางคน และแมปกับ staff_u
[someuser@testserver ~]$ id -Z
staff_u:staff_r:staff_t:s0-s0:c0.c1023
ตอนนี้ถ้าฉันเพิ่มสิทธิ์ทั้งหมดโดยใช้ sudo แต่ไม่ได้ตั้งค่าบทบาท/ประเภทใน sudoers ฉันจะทำอะไรไม่ได้มาก (ตามที่คาดไว้)
[someuser@testserver ~]$ sudo -l
การจับคู่รายการเริ่มต้นสำหรับผู้ใช้บางคนบนเซิร์ฟเวอร์ทดสอบ:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
ผู้ใช้ someuser อาจเรียกใช้คำสั่งต่อไปนี้บนเซิร์ฟเวอร์ทดสอบ:
(ทั้งหมด) NOPASSWD: ALL
[someuser@testserver ~]$ sudo ls -la /var/log/audit/audit.log
ls: ไม่สามารถเข้าถึง '/var/log/audit/audit.log': ปฏิเสธการอนุญาต
[someuser@testserver ~]$ sudo ausearch -m avc -ts ล่าสุด
เกิดข้อผิดพลาดในการเปิดไฟล์ปรับแต่ง (การอนุญาตถูกปฏิเสธ)
หมายเหตุ - ใช้บันทึกในตัว: /var/log/audit/audit.log
เกิดข้อผิดพลาดในการเปิด /var/log/audit/audit.log (ปฏิเสธการอนุญาต)
[someuser@testserver ~]$
ถ้าฉันเปลี่ยน sudoers เพื่อทำการเปลี่ยนเป็น sysadm_r และ sysadm_t ฉันคาดว่าจะได้รับอนุญาตโดยทั่วไปให้ทำอะไรก็ได้ แต่มันไม่ใช่สิ่งที่ฉันได้รับ
ฉันทำได้หลายอย่าง:
[someuser@testserver ~]$ sudo -l
การจับคู่รายการเริ่มต้นสำหรับผู้ใช้บางคนบนเซิร์ฟเวอร์ทดสอบ:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
ผู้ใช้ someuser อาจเรียกใช้คำสั่งต่อไปนี้บนเซิร์ฟเวอร์ทดสอบ:
(ทั้งหมด) ROLE=sysadm_r TYPE=sysadm_t NOPASSWD: ทั้งหมด
[someuser@testserver ~]$ sudo ausearch -m avc -ts ล่าสุด | สุขา -l
66
[someuser@testserver ~]$ sudo ls -la /var/log/audit/audit.log
-rw-------. 1 รูทรูท 1996980 30 ก.ค. 12:55 /var/log/audit/audit.log
[someuser@testserver ~]$ sudo cat /var/log/audit/audit.log | สุขา -l
8172
[someuser@testserver ~]$
แต่บางคำสั่งยังคงถูกบล็อก เช่น postsuper จากแพ็คเกจ postfix
[someuser@testserver ~]$ sudo postsuper
sesh: ไม่สามารถดำเนินการได้ /sbin/postsuper: การอนุญาตถูกปฏิเสธ
[someuser@testserver ~]$ ไฟล์ /sbin/postsuper
/sbin/postsuper: ไม่สามารถเปิด `/sbin/postsuper' (ปฏิเสธการอนุญาต)
[someuser@testserver ~]$ ไฟล์ sudo /sbin/postsuper
/sbin/postsuper: วัตถุที่ใช้ร่วมกัน LSB 64 บิตของ ELF, x86-64, เวอร์ชัน 1 (SYSV), เชื่อมโยงแบบไดนามิก, ตัวแปล /lib64/ld-linux-x86-64.so.2, สำหรับ GNU/Linux 3.2.0, BuildID[sha1]=aa0157870508c475195fe5fb1dafe5a9b3898a61 ปล้น
[someuser@testserver ~]$
ใครช่วยอธิบายเหตุผลให้ฉันฟังหน่อยได้ไหม สิ่งที่แปลกที่สุดคือฉันไม่เห็นการปฏิเสธใด ๆ บน /var/log/audit/audit.log สำหรับคำสั่ง postsuper แต่จะต้องเกี่ยวข้องกับ SELINUX เพราะถ้าฉันเปลี่ยนผู้ใช้กลับเป็น unconfined_u ทุกอย่างจะทำงานได้