SELinux Boolean
SELinux boolean μ΄λ?
SElinux λ 보μ μ μ± μ€μ νΈμλ₯Ό μν΄ μ¬μ μ μ μλ κ·μΉ μ§ν©λ€μ κ°κ³ μμΌλ©° μ΄ κ·μΉλ€μ SELinux λΆλ¦°(Boolean) μ΄λΌκ³ ν©λλ€.
μλ‘ Β μνμΉ httpd κ° cgi λ₯Ό μ€νν μ μκ² νλ €λ©΄ μ¬λ¬ κ°μ§ 보μ 컨ν μ€νΈ μ€μ μ ν΄μΌ νμ§λ§ μ΄λ° λ²κ±°λ‘μμ μμ κΈ° μν΄ μ΄λ° κ³Όμ μ λ¬Άμ΄μ httpd_enable_cgi λΌλ λΆλ¦°μ μ 곡νκ³ μμΌλ©° true λ‘ μ€μ νλ©΄ SELinux λ μνμΉ μΉ μλ²μ cgi μ€νμ νμ©ν©λλ€.
보μμ μν΄ λλΆλΆμ λΆλ¦° μ€μ μ κΈ°λ³Έ κ°μ΄ off μ΄λ©° νμ¬ μ€μ μ νμΈνλ €λ©΄ getsebool λͺ λ Ήμ΄λ₯Ό μ¬μ©νλ©΄ λλ©° νμΈνλ €λ λΆλ¦°λͺ μ μ£Όκ±°λ -a μ΅μ μ μ€ κ²½μ° λͺ¨λ λΆλ¦°μ μ€μ νν©μ νμν©λλ€.
μλ λͺ λ Ήμ μνμΉ httpd κ° SMTP λ©μΌ μλ²μ μ°κ²°ν μ μλμ§λ₯Ό λνλ΄λ λΆλ¦°μΈΒ httpd_can_sendmailΒ μ μ€μ μ νμΈν©λλ€.
$ getsebool httpd_can_sendmail httpd_can_sendmail --> off
λλ μλμ κ°μ΄ λͺ¨λ λΆλ¦°μ μΆλ ₯ν νμ egrep κ³Ό μ κ·μμ νμ©νμ¬ μ°Ύλ λ°©λ²λ μμ΅λλ€.
$ getsebool -a | getsebool -a | egrep "httpd(.*)sendmail" httpd_can_sendmail --> off
SELinux boolean μ€μ
κΈ°λ³Έ μ€μ μ off μ΄λ―λ‘ κ°λ° μΈμ΄λ₯Ό μΉ μλ²μμ λͺ¨λ νμ(PHPμ mod_php, python - mod_wsgi)μΌλ‘ Β μ¬μ©ν Β κ²½μ° apache μΉ μλ²μ κΆνκ³Ό λλ©μΈμ μμλ°κ² λλ―λ‘ μμ±ν μ€ν¬λ¦½νΈμμ λ©μΌ μ μ‘μ ν μ μμ΅λλ€.
μ΄ λ¬Έμ λ₯Ό μ¬μ°ν΄ 보기 μν΄ PHP μμ mail ν¨μλ₯Ό μ¬μ©νμ¬ λ©μΌμ μ μ‘νλ μ½λλ₯Ό μμ±ν΄ λ΄ μλ€. mail() ν¨μμ 첫λ²μ§Έ νλΌλ―Έν°λ μμ μμ μ΄λ©μΌ μ£Όμμ΄κ³ λλ²μ§Έλ μ λͺ©, μΈλ²μ§Έλ λ³Έλ¬Έ λ΄μ©μ λλ€.
<?php Β mail('user@example.com', 'Subject', 'Message Body');
λ μμ μλ²μ PHP μΈν°ν리ν°κ° μ€μΉλμ΄ μκ³ mod_php λ°©μμΌλ‘ λμνλ€κ³ κ°μ ν μν©μμ μμ μ λλ€.
μ μ€ν¬λ¦½νΈλ₯Ό μΉ μλ²μ 컨ν μΈ κ²½λ‘(μ: /var/www/html/mailtest.php) μ μ μ₯ν νμ λΈλΌμ°μ λ₯Ό ν΅ν΄μ νΈμΆνλ©΄Β μνμΉ μΉ μλ²κ° μ€ννλ©° httpd_can_sendmailΒ μ΄ off μ΄λ―λ‘ μΉ μλ²μ λ‘κ·Έ νμΌμλΒ λ€μκ³Ό κ°μ μ€λ₯κ° λ¨μΌλ©° μ λλ‘ λμνμ§ μμ΅λλ€.
sendmail: fatal: chdir /var/spool/postfix: Permission denied
μνμΉ μΉ μλ²μ λ‘κ·Έ νμΌμ μΌλ°μ μΌλ‘ /var/log/httpd μ λ¨κ² λ©λλ€.
μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ €λ©΄ httpd μλ²κ° λ©μΌ μλ²μ μ μν μ μλλ‘Β httpd_can_sendmailΒ Β λΆλ¦°μ on μΌλ‘ μ€μ ν΄ μ£Όλ©΄ λ©λλ€.
μ€μ λ³κ²½μ setsebool λͺ λ Ήμ΄λ₯Ό μ¬μ©νλ©° μ€μ ν λΆλ¦°λͺ κ³Ό 1μ΄λ true λλ 0 μ΄λ false λ₯Ό μ§μ νμ¬ ν΄λΉ λΆλ¦°μ νμ±ν/λΉνμ±νν μ μμ΅λλ€.
μλ λͺ λ Ήμ httpd_can_sendmail λ₯Ό true λ‘ μ€μ νμ¬ μΉ μλ²μμ mod_php λ°©μμΌλ‘λ λ©μΌ μ μ‘μ΄ κ°λ₯νκ² μ€μ ν©λλ€.
$ sudo setsebool httpd_can_sendmail true
μ΄μ λ€μ λΈλΌμ°μ μμ mailtest.php μ μ°κ²°νλ©΄ μ μ λμνμ¬ λ©μΌμ΄ κ°λ κ²μ νμΈν μ μμ κ²μ λλ€.
setsebool λͺ λ ΉμΌλ‘ μ€μ ν λΆλ¦° κ°μ μ§μλμ§ μμΌλ©° μλ²λ₯Ό μ¬λΆν νλ©΄ κΈ°λ³Έ μ€μ μΌλ‘ λλμ μ€κ² λ©λλ€. λΆν μμλ μ€μ ν λΆλ¦°μ μ μ§νλ €λ©΄ -P μ΅μ (persistant)μ λΆμ¬μ μ€ννλ©΄ λλ©° λ€μ λͺ λ Ήμ΄λ μ¬λΆν ν΄λ μνμΉ μΉ μλ²κ° sendmail μλ²μ μ°κ²°ν μ μκ² μ€μ ν©λλ€.
$ sudo setsebool -P httpd_can_sendmail true
λΆλ¦° μ€λͺ μ μν΄ μΉ μλ²μ λͺ¨λ λ°©μμΌλ‘ λμν κ²½μ°λ₯Ό μλ‘ λ€μμ§λ§ μΉ μλ² λͺ¨λ λ°©μμ μν€ν μ² λ° λ³΄μμ μ’μ μ νμ΄ μλλ©° λ³λμ WAS(php-fpm, tomcat λ±)λ‘ κ΅¬μ±νκ³ μΉ μλ²λ 리λ²μ€ νλ½μ λ°©μμΌλ‘ μ°κ²°νλ κ²μ΄ 보μκ³Ό μμ€ν νμ₯ μΈ‘λ©΄μμ μ 리ν©λλ€.
μ΄μ λν΄ μμΈν μ€λͺ μ "μΉ μλ² λ³΄μ κ°ν" μ₯μμ λ€λ£Ήλλ€.