ปัญหาดังกล่าวอาจขึ้นอยู่กับระบบปฏิบัติการที่คุณใช้และวิธีการกำหนดค่า ลินุกซ์ distros บางตัว (ส่วนใหญ่เป็นแบบ RHEL เช่น CentOS หรือ Fedora) มาพร้อมกับ SELinux ที่เปิดใช้งานโดยค่าเริ่มต้น สามารถตรวจสอบและเปลี่ยนแปลงได้ชั่วคราวด้วยคำสั่งต่อไปนี้:
root@ls:~# /usr/sbin/getenforce
Enforcing
root@ls:~# /usr/sbin/setenforce Permissive
root@ls:~# /usr/sbin/getenforce
Permissive
คุณสามารถมีมุมมองที่สมบูรณ์ยิ่งขึ้นในการกำหนดค่าปัจจุบันด้วย:
root@ls:~# /usr/sbin/sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: permissive
Mode from config file: enforcing
Policy version: 21
Policy from config file: targeted
การเปลี่ยนแปลงนี้สามารถทำได้อย่างถาวรโดยแก้ไข/etc/selinux/config
ไฟล์และตั้งค่าSELINUX
ตัวแปรเป็นpermissive
disabled
หรือ
แต่วิธีที่ถูกต้องในการแก้ไขปัญหานี้หากคุณอยู่ในสถานการณ์เช่นนี้ก็คือการตรวจสอบ/var/log/audit/audit.log
ไฟล์บันทึก มันจะมีเหตุการณ์ทั้งหมดที่เกี่ยวข้องกับกฎ SELinux จากนั้นคุณควรให้บริบทที่ถูกต้องแก่สคริปต์ของคุณเช่นได้รับอนุญาตให้ทำงานโดยผู้ใช้ apache / php การตรวจสอบบริบทความปลอดภัยของ SELinux นั้นทำได้ด้วยls -Z
:
root@ls:~# ls -alZ /var/www/cgi-bin/
drwxr-xr-x root root system_u:object_r:httpd_sys_script_exec_t .
drwxr-xr-x root root system_u:object_r:httpd_sys_content_t ..
รายการนี้ผู้ใช้บทบาทและประเภทของแต่ละไฟล์ / ไดเรกทอรี ที่นี่httpd_sys_script_exec_t
ประเภทให้ไฟล์ในไดเรกทอรี cgi สิทธิ์ที่จะดำเนินการโดย httpd เชลล์สคริปต์ของคุณอาจมีประเภทเดียวกัน
คุณยังสามารถป้อน audit.log
บรรทัดไปยังaudit2allow
คำสั่ง มันจะส่งผลให้คุณมีการเปลี่ยนแปลงที่จำเป็นเพื่อให้ SELinux มีความสุข แต่โดยปกติแล้วการเปลี่ยนแปลงที่แนะนำจะต้องทำในนโยบายของ SELinux ซึ่งไม่ใช่สิ่งที่คุณควรทำในกรณีของคุณ (ยังคงเอาท์พุทนี้สามารถให้เบาะแสบางอย่างที่เกิดขึ้น)
หน้าต่อไปนี้อธิบายปัญหาที่คล้ายกันและวิธีต่างๆในการแก้ไข: http://sheltren.com/stop-disabling-selinux
x
) ในไฟล์หรือไม่ คุณระบุล่ามสคริปต์ในบรรทัด Shebang หรือไม่?