การอ่านและเขียนกฎ Selinux¶
อินเทอร์เฟซนี้ช่วยให้คุณสามารถดำเนินการอ่านและเขียนกฎ Selinux ของระบบขั้นพื้นฐานได้ ทำให้คุณสามารถตั้งค่าหรือหลีกเลี่ยงข้อจำกัดบางอย่างของระบบได้ อินเทอร์เฟซที่เกี่ยวข้องอาจส่งผลกระทบต่อการทำงานของระบบ โปรดใช้ด้วยความระมัดระวัง คุณจำเป็นต้องมีความเข้าใจเกี่ยวกับ Selinux ด้วยตนเอง
การรับ Instance สำหรับการดำเนินการ¶
ก่อนที่จะเริ่ม คุณต้องรับ instance ของ selinux ก่อน
selinux = d.stub("SelinuxPolicy")
การรับสถานะ Selinux¶
เรียกใช้อินเทอร์เฟซต่อไปนี้เพื่อตรวจสอบว่ากฎ Selinux ถูกเปิดใช้งานอยู่หรือไม่
selinux.enabled()
>>> selinux.is_enabled( )
True
เรียกใช้อินเทอร์เฟซต่อไปนี้เพื่อตรวจสอบว่าสถานะปัจจุบันเป็น enforce หรือไม่
selinux.get_enforce()
>>> selinux.get_enforce()
1
การตั้งค่าสถานะ Selinux¶
เรียกใช้อินเทอร์เฟซต่อไปนี้เพื่อตั้งค่า Selinux เป็น enforce หรือ permissive
selinux.set_enforce(enable)
เรียกใช้อินเทอร์เฟซต่อไปนี้เพื่อตั้งค่าเป็น enforce
>>> selinux.set_enforce(True)
1
เรียกใช้อินเทอร์เฟซต่อไปนี้เพื่อตั้งค่าเป็น permissive
>>> selinux.set_enforce( False)
0
การสร้าง Domain ใหม่¶
เรียกใช้อินเทอร์เฟซต่อไปนี้เพื่อสร้าง domain ใหม่ใน Selinux
selinux.create_domain(domain_name)
>>> selinux.create_domain("hello_selinux")
True
การตั้งค่า Domain เป็น Permissive¶
เรียกใช้อินเทอร์เฟซต่อไปนี้เพื่อตั้งค่า Selinux domain เป็นสถานะ permissive
selinux.permissive(domain_name)
>>> selinux.permissive("untrusted_app")
True
การตั้งค่า Domain เป็น Enforce¶
เรียกใช้อินเทอร์เฟซต่อไปนี้เพื่อตั้งค่า Selinux domain เป็นสถานะ enforce
selinux.enforce(domain_name)
>>> selinux.enforce("untrusted_app")
True
การปรับแต่งกฎการควบคุมอย่างละเอียด¶
เรียกใช้อินเทอร์เฟซต่อไปนี้เพื่อเขียนกฎ allow และ disallow ได้อย่างละเอียดมากยิ่งขึ้น
selinux.disallow(source, target, tclass, action)
selinux.allow(source, target, tclass, action)
โดยที่ source และ target หมายถึง context ต้นทางและปลายทางตามลำดับ, tclass หมายถึงคลาสเป้าหมาย (target class), และ action หมายถึงการดำเนินการที่เฉพาะเจาะจง action รองรับเพียง * (หมายถึงทั้งหมด) หรือการกระทำที่ระบุเท่านั้น พารามิเตอร์ทั้งหมดไม่รองรับ context หรือ action หลายค่า เช่น รูปแบบกฎมาตรฐานอย่าง {binder system_app} ในที่นี้คุณสามารถระบุได้เพียงชื่อเดียวเท่านั้น ด้านล่างนี้คือตัวอย่างการดำเนินการ
>>> selinux.allow("hal_camera_default", "camera_vendor_data_file", "dir", "*")
กฎข้างต้นหมายถึงการอนุญาตให้ hal_camera_default มีสิทธิ์ดำเนินการทั้งหมดกับไดเรกทอรี camera_vendor_data_file (dir) ในทำนองเดียวกัน การเปลี่ยนเป็นเมธอด disallow จะหมายถึงการปฏิเสธสิทธิ์เหล่านี้
>>> selinux.allow("hal_camera_default", "camera_vendor_data_file", "dir", "search")
คุณยังสามารถระบุ action ที่ละเอียดขึ้นได้เช่น search ดังตัวอย่างข้างต้น