ปกติเวลา setup เครื่อง ผมจะปิดการใช้งาน cgi ของ apache อยู่แล้ว เพื่อความสบายใจว่าไม่ต้องกังวลกับช่องโหว่ของ cgi บลาๆ. แต่ล่าสุดมีเครื่องนึงที่อยากจะซูมดูกราฟของ munin แต่มันติดว่าทำไม่ได้ :'( ก็เลยลองพยายามที่จะปรับให้มันใช้ได้ดู.
ตอนแรกเจอกับ error นี้ก่อน
[Thu Aug 18 01:53:26.499378 2016] [cgi:error] [pid 27035] [client 11.22.33.44:62264] AH01215: suexec policy violation: see suexec log for more details: /var/www/cgi-bin/munin-cgi-graph [Thu Aug 18 01:53:26.499420 2016] [cgi:error] [pid 27035] [client 11.22.33.44:62264] End of script output before headers: munin-cgi-graph
ลอง google ดูไม่ค่อยเจอวิธีแก้ปัญหาที่ตรงๆ แต่มี keyword นึงที่บอกว่าให้ลองเช็คใน log ไฟล์นี้
/var/log/httpd/suexec_log
ก็จะพบกับ log ประมาณนี้
[2016-08-18 01:52:07]: uid: (1000/webapps) gid: (1000/webapps) cmd: munin-cgi-graph [2016-08-18 01:52:07]: target uid/gid (1000/1000) mismatch with directory (0/0) or program (0/989)
Bingo! พอเดาได้ว่าเกี่ยวกับ uid:gid ไม่ตรงเนี่ยแหละ. ก็เลยลองเปลี่ยน uid:gid ของพาท /var/www/cgi-bin และ /var/www/cgi-bin/munin* จึงเข้าใจความหมายของบรรทัดที่ 2 ว่า มันต้องการให้ uid:gid ของ directory และ ตัว program (ในที่นี้คือ munin) เป็น 1000:1000 (id 1000 ในเครื่องเซิร์ฟเวอร์ผม คือ webapps) ก็เลยเปลี่ยนเป็น 1000:1000 ดู
chown webapps:webapps /var/www/cgi-bin chown webapps:webapps /var/www/cgi-bin/munin*
และแล้วกราฟ Dynamic zoom ก็แสดงผลตามปกติละ !
ลองไปไล่ config ของ apache ดูว่ามีตรงไหนที่เกี่ยวกับ webapps บ้าง เจอ block นี้ที่น่าจะคือสาเหตุ เพราะว่าเครื่องเซิร์ฟเวอร์ผมไม่ได้ติดตั้ง mod_ruid2 ไว้
<IfModule !mod_ruid2.c> SuexecUserGroup webapps webapps </IfModule>