๋ณด์ ์ ์ฑ ๊ด๋ฆฌ
semanage๋ SELinux ์ ๋ณด์ ์ ์ฑ ์ ์กฐํํ๊ณ ์ถ๊ฐ/๋ณ๊ฒฝ/์ญ์ ํ ์ ์๋ ๋ช ๋ นํ ๊ธฐ๋ฐ์ ์ ํธ๋ฆฌํฐ์ ๋๋ค.
SELinux ๋ ํ์ผ, ๋คํธ์ํฌย ํฌํธ, ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ฑ์ ๋ณ๋์ ๋ณด์ ์ปจํ ์คํธ๋ก ๋ถ๋ฆฌํ์ฌ ๋ค๋ฃจ๊ณ ์์ผ๋ฏ๋ก ์๋น์ค ๋ฐ๋ชฌ์ SELinux ์์ ๋ฌธ์ ์์ด ์ฌ์ฉํ๋ ค๋ฉด ๋คํธ์ํฌ ํฌํธ์ ํ์ผ ์ปจํ ์คํธ๋ฅผ ์ดํดํ๊ณ semanage ๋ก ์ปจํ ์คํธ๋ฅผ ๋ค๋ฃฐ์ ์์ด์ผ ํฉ๋๋ค.
semanage ๋ ์ผ๋ฐ์ ์ผ๋ก ์ถ๊ฐ๋ก ์ค์นํด์ผ ํ๋ ํจํค์ง๋ก Red Hat์ ๋ค๋ฅธ ์์คํ ์ ํธ๋ฆฌํฐ์ฒ๋ผ python ์ผ๋ก ์์ฑ๋์ด์ python ์ธํฐํ๋ฆฌํฐ๋ฅผ ํ์๋ก ํ๊ณ ์์ผ๋ฉฐ ๋ค์ yum ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํจํค์ง๋ฅผ ์ค์นํ ์ ์์ต๋๋ค.
$ sudo yum install -y policycoreutils-python
ํฌํธ ์ปจํ ์คํธ
SELinux ๋ ๋คํธ์ํฌ ๋ฐ๋ชฌ๋ง๋ค ๋ช ์์ ์ผ๋ก ์ ๊ทผํ ์ ์๋ ํฌํธ ๋ฒํธ๋ฅผ ๊ด๋ฆฌํ๊ณ ์์ผ๋ฉฐ ์ค๋ น root ๋ก ๊ตฌ๋ํ ๋ฐ๋ชฌ ํ๋ก์ธ์ค๋ผ๋ย ํ์ฉ๋ ํฌํธ ์ด์ธ์๋ ์ฐจ๋จํด ๋ฒ๋ฆฝ๋๋ค.
์ด๋ ๊ณต๊ฒฉ์๊ฐ ์น ์๋ฒ๋ ๋ฉ์ผ ์๋ฒ๋ฑ ์ธํ๋ผ ํ๋ก์ธ์ค์ ์ทจ์ฝ์ ์ด๋ ์๋ชป๋ ์ค์ ์ ํดํนํ์ฌ ์์ ์ป์ ํ์ ssh ๋ฑ์ ์ฌ์ฉํ์ฌ ๋ด๋ถ ๋ง์ผ๋ก ๋ค์ ์นจํฌํ๋ 2์ฐจ ํผํด๋ฅผ ๋ฐฉ์งํด ์ฃผ๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ด์ง๋ง well known ์ด ์๋ ํฌํธ ๋ฒํธ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์๋ก์ด ํฌํธ ๋ฒํธ๋ฅผ ํ ๋นํ๋ ๋ฑ์ ๋ณ๊ฒฝ์ด ์์ ๊ฒฝ์ฐ ์ ๋๋ก ๋์ํ์ง ์๊ฒ ๋ฉ๋๋ค.
์ด๋ฐ ๋ด์ฉ์ ๋ชจ๋ฅธ๋ค๋ฉด SELinux ๊ฐ ์๋ฒ์ ํฌํธ ์ ๊ทผ์ ์ฐจ๋จํ์ฌ SELinux ๋ฅผ ์ฌ์ฉํ๋ฉด ์๋น์ค ์ด์์ด ํ๋ค๋ค๋ ์๊ฐ์ ๊ฐ๊ฒ ๋ ์ ์์ผ๋ฏ๋ก ํฌํธ ์ปจํ ์คํธ์ ๋ํด ๋ฐ๋์ ์ดํดํด์ผ ํฉ๋๋ค.
ํฌํธ๋ฅผ ๋ค๋ฃจ๋ ค๋ฉดย semangeย ๋ช ๋ น์ด ๋ค์ port ๋ช ๋ น์ ์ฌ์ฉํ๊ณ ๋ค์ ์ต์ ์ ์ฃผ๋ฉด ๋๋ฉฐ ์กฐํ๋ฅผ ํ ๊ฒฝ์ฐ -l ์ต์ ์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
์๋ ๋ช ๋ น์ SELinux ์ ๋ฑ๋ก๋ ์ ์ฒด ํฌํธ ์ปจํ ์คํธ๋ฅผ ์ถ๋ ฅํ๋ฉฐ ์ฒซ ๋ฒ์งธ ํ์ ํฌํธ ์ ํ, ๋ ๋ฒ์งธ๋ ํ๋กํ ์ฝ, ์ธ ๋ฒ์งธ๋ ํฌํธ ๋ฒํธ์ด๋ฉฐ ์ฒซ๋ฒ์งธ ํฌํธ ์ ํ์ ํ๋กํ ์ฝ:ํฌํธ๋ฒํธ์ ์ ๊ทผ์ ํ์ฉํ๋ค๋ ์๋ฏธ์ ๋๋ค.
$ sudo semanage port -l SELinux Port Type Proto Port Number afs_bos_port_t udp 7007 afs_client_port_t udp 7001 afs_fs_port_t tcp 2040 ... zebra_port_t udp 2600-2604, 2606 zented_port_t tcp 1229 zented_port_t udp 1229 zope_port_t tcp 8021
์ฆ ๋ง์ง๋ง ์ค์ย zope_port_t tcp 8021 ๋ zope_port_t ๋ผ๋ ํฌํธ ์ ํ์ tcp:8021 ํฌํธ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ์ ๊ด์ฌ์ฌ๋ ์น ์๋ฒ์ด๋ฏ๋ก http ์ ๊ดํ ํฌํธ ๋ฒํธ๋ฅผ ๊ฒ์ํด์ผ ํ๋ฉฐย semanage ๋ช ๋ น์์ ํ์ ๋ณ๋ก ๋ถ๋ฅํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์์ผ๋ฏ๋ก ํน์ ํ์ ๋ง ํ์ธํ ๊ฒฝ์ฐ grep ์ผ๋ก ๋ถ๋ฅ๋ฅผ ํด์ฃผ๋ฉด ๋ฉ๋๋ค.
์๋๋ http ๊ฐ ๋ค์ด๊ฐ ์ ์ฒด ํฌํธ ์ปจํ ์คํธ ๋ชฉ๋ก์ ์ถ๋ ฅํฉ๋๋ค.
$ sudo semanage port -l | grep http http_cache_port_t tcp 3128, 8080, 8118, 8123, 10001-10010 http_cache_port_t udp 3130 http_port_t tcp 80, 443, 8009, 8080
TODO http_port_t ์งํ๊ฒ
http_cache_port_t ๋ squid ๊ฐ์ ์น ์บ์ ์๋ฒ๊ฐ ์ ๊ทผํ ์ ์๋ ํฌํธ๋ฅผ ์๋ฏธํ๋ฉฐ ์น ์๋ฒ๊ฐ ์ ๊ทผํ ์ ์๋ ํฌํธ ์ปจํ ์คํธ์ ์ด๋ฆ์ย http_port_t ย ํ์ ์ผ๋ก ์ง์ ๋์ด ์์ต๋๋ค.ย
๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด ์น ์๋ฒ๋ http_port_t ์ ํ ๋น๋ 4๊ฐ์ ํฌํธ์ ์ ๊ทผํ ์ ์๋ค๋ ์๋ฏธ์ ๋๋ค. ๋ณดํต ์น ์๋ฒ๋ 80, 443์ ๋ฆฌ์จํ๋๋ฐ 8009 ๋ 8080 ์ด ์๋ ๊ฒ์ด ์์ํ ๋ ์๋ค์ด ์์ ์ ์์ต๋๋ค.
http_port_t ์ ์ง์ ํ๋ ํฌํธ๋ ์น ์๋ฒ๊ฐ ๋ฆฌ์จํ๋ ํฌํธ๋ง์ด ์๋๋ผ ์ปค๋ฅํธํ๋ ํฌํธ๊น์ง ์ง์ ํด ์ฃผ์ด์ผ ํ๋ฉฐ 8009, 8080 ๋ ์ํ์น ํฐ์บฃ์ด ๋ฆฌ์จํ๋ ํฌํธ์ด๋ฏ๋ก ์น ์๋ฒ๊ฐ ํฐ์บฃ์ ์ฐ๊ฒฐํ ๋ ํ์ํ๋ฏ๋ก ์ค์ ํด ์ฃผ์ด์ผ ํฉ๋๋ค.
์๋ก ์น ์๋ฒ๋ฅผ PHP ์ WAS ๋ผ๊ณ ๋ณผ ์ ์๋ php-fpm ๊ณผ ๋คํธ์ํฌ ์์ผ ๋ฐฉ์์ผ๋ก ์ฐ๋ํ๋ค๋ฉด php-fpm ์ด ์ฌ์ฉํ๋ ํฌํธ(๊ธฐ๋ณธ: 9000) ๋ฅผ http_port_t ์ ๋ฑ๋กํด ์ฃผ์ง ์์ผ๋ฉด SELinux ๋ ์น ์๋ฒ์ 9000 ๋ฒ ํฌํธ ์ฐ๊ฒฐ์ ์ฐจ๋จํด ๋ฒ๋ฆฝ๋๋ค.
๋ ํ๋์ ์ฌ๋ก๋ก ์ํ์น ์น ์๋ฒ๋ฅผ 900 ํฌํธ๋ฅผ ํตํด ์๋น์ค๋ฅผ ํด์ผ ํ ์ผ์ด ์๊ฒผ๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค. ์๋ก์ด ํฌํธ ์ถ๊ฐ๋ ์ํ์น์ ์ค์ ํ์ผ(CentOS์ ๊ฒฝ์ฐย /etc/httpd/conf/httpd.conf)์์ ์ฌ์ฉํ๋ ํฌํธ๋ฅผ ์ง์ ํ๋ Listen ํญ๋ชฉ์์ 900 ์ ์ถ๊ฐํ๊ณ ์ํ์น ์น์๋ฒ๋ฅผย ์ฌ์์ํด ์ฃผ๋ฉด ๋ฉ๋๋ค.
Listen 80 Listen 900
nginx ์ฌ์ฉ์๋ ๊ฐ์ ํธ์คํธ ์ค์ ์ server ๋ธ๋ก์ listen 900; ๋ฅผ ์ถ๊ฐํด ์ฃผ๋ฉด ๋ฉ๋๋ค.
server { listen 80; listen 900;
์๋ฌ ๋ก๊ทธ๋ฅผ ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ด 900 ๋ฒ ํฌํธ์ ๋ฐ์ธ๋ํ ์ ์๋ค๋ ์๋ฌ๊ฐ ๋ฐ์ํ๊ณ ์น ์๋ฒ๊ฐ ์ ์์ ์ผ๋ก ๊ตฌ๋๋์ง ์๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
$ sudo systemctl restart httpd (13)Permission denied: make_sock: could not bind to address [::]:900 (13)Permission denied: make_sock: could not bind to address 0.0.0.0:900
์ด๋ ์ํ์น ์น ์๋ฒ๊ฐ ๋ฃจํธ๋ก ๊ตฌ๋๋์ง๋ง ๋ถ์ฌ๋ ์ปจํ ์คํธ์ธ http_port_t ๋ ์์์ ๋ณธ 8๊ฐ ํฌํธ์ด์ธ์๋ ์ฐ๊ฒฐํ ์ ์์ผ๋ฏ๋ก ๋ฐ์ํ๋ ํ์์ด๋ฉฐ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด http_port_t ์ปจํ ์คํธ๊ฐ ์ฐ๊ฒฐํ ์ ์๋ ํฌํธ๋ฅผ ์ถ๊ฐํด ์ฃผ๋ฉด ๋ฉ๋๋ค.
ํฌํธ๋ฅผ ์ถ๊ฐํ ๊ฒฝ์ฐ ์ถ๊ฐ ์ต์ ์ธ -a ์ ์ฌ์ฉํ ํ๋กํ ์ฝ, ๋ณด์ ์ปจํ ์คํธ, ํฌํธ ๋ฒํธ๋ฅผ ์ง์ ํด ์ฃผ๋ฉด ๋ฉ๋๋ค.ย
HTTP ๋ tcp ๋ฅผ ์ฌ์ฉํ๋ฏ๋กย -p tcpย ์ต์ ๊ณผ ย ๋ณด์ ์ปจํ ์คํธ๋ฅผ ์ง์ ํ๋ย -t http_port_tย ๊ทธ๋ฆฌ๊ณ ํ์ฉํ ํฌํธ ๋ฒํธ 900 ์ ์ง์ ํ์ฌ ์ต์ข ์คํํ semanage ๋ช ๋ น์ด๋ ์๋์ ๊ฐ์ต๋๋ค.
$ sudo semanage port -a -p tcp -t http_port_t 900
๋ง์ฝ "Port tcp/900 already defined" ๊ฐ์ด ์ด๋ฏธ ํฌํธ๊ฐ ์ง์ ๋์ด ์๋ค๋ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค๋ฉด ์ถ๊ฐ ์ต์ ์ธ -a ๋์ ๋ณ๊ฒฝ ์ต์ ์ธ -m ์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
$ sudo semanage port -m -p tcp -t http_port_t 900
์ ์์ ์ผ๋ก ์ค์ ์ด ๋๋ฌ๋ค๋ฉด ํฌํธ ๋ชฉ๋ก์ ๋ค์ ํ์ธํด ๋ด ์๋ค.
$ sudo semanage port -l | grep http_port_t http_port_t tcp 80, 443, 8009, 8080, 900
TODO 900 ์งํ๊ฒ
์น ์๋ฒ๋ DMZ ๊ตฌ๊ฐ์ ์์นํ๊ณ WAS ์๋ ๋ฆฌ๋ฒ์ค ํ๋ฝ์๋ก ์ฐ๊ฒฐํ๋ฉด ์๋น์ค๊ฐ ์ปค์ง ๊ฒฝ์ฐ WAS ๋ฅผ ์ํ/์์ง ์ ์ผ๋ก ํ์ฅํ ์ ์๋ ์ฅ์ ๊ณผ ๋๋ถ์ด ๋ณด์๋ ๊ฒฌ๊ณ ํด ์ง๋ ์ฅ์ ์ด ์์ต๋๋ค.
๋ง์ฝ WAS ๋ฅผ ํ ์๋ฒ์ ๋ณ๋์ ํฌํธ๋ก ์ถ๊ฐ ๊ตฌ์ฑํ๋ ์์ง ํ์ฅ์ ๊ฒฝ์ฐ ํฌํธ ๋ฒํธ๊ฐ ์ถ๊ฐ๋๋ค๋ฉด ๊ผญ semanage port ๋ช ๋ น์ผ๋ก ์๋ก ๋ง๋ค์ด์ง WAS ์ ํฌํธ๋ฅผ ๋ฑ๋กํด ์ฃผ์ด์ผ ํฉ๋๋ค.
์ถ๊ฐ๋ ํฌํธ ์ปจํ ์คํธ๋ -d ์ต์ ์ผ๋ก ์ญ์ ํ ์ ์์ผ๋ฉฐ ํด๋น ํฌํธ๋ฅผ ์ถ๊ฐํ ๋์ ๋ง์ฐฌ๊ฐ์ง๋ก -p ๋ก tcp ์ธ์ง udp ์ธ์ง ์ง์ ํด ์ฃผ๊ณ ์ญ์ ํ ํฌํธ ๋ฒํธ๋ฅผ ์ง์ ํด ์ฃผ๋ฉด ๋๋ฉฐ ์๋ ๋ช ๋ น์ด๋ http_port_t ์ ์ถ๊ฐํ 900 ๋ฒ ํฌํธ๋ฅผ ์ญ์ ํฉ๋๋ค.
$ sudo semanage port -d -p tcp 900
๋ช ๋ น์ด๊ฐ ์ ์์ ์ผ๋ก ์ข ๋ฃ๋ ํ์ ํฌํธ ๋ชฉ๋ก์ ์กฐํํด ๋ณด๋ฉด 900 ๋ฒ์ด ์ฌ๋ผ์ง ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
$ sudo semanage port -l | grep http_port_t http_port_t tcp 80, 443, 8009, 8080
ํ์ผ ์ปจํ ์คํธย
/var/www/htmlย ํด๋ ๋ฐ์ cp ๋ก ํ์ผ์ ๋ณต์ฌํ๊ฑฐ๋ ๋๋ ์๋ํฐ๋ฑ์ผ๋ก ํ์ผ์ ์๋ก ๋ง๋ค๋ฉด ์๋์ผ๋ก httpd_sys_content_t ย ์ปจํ ์คํธ๊ฐ ๋ถ์ฌ๋๋ ๊ฒ์ ํ์ธํ์ต๋๋ค. ๋ restorecon ์ ์ฌ์ฉํ๋ฉด ์์น์ ๋ง๋ ๋ณด์ ์ปจํ ์คํธ๋ฅผ ๋ณต๊ตฌํด ์ค๋ค๋ ๊ฒ๋ ์๊ฒ ๋์๋๋ฐ ์ด๋ป๊ฒ ์ด๊ฒ ๊ฐ๋ฅํ ๊ฒ์ผ๊น์?ย
SELinux ๋ ์ฌ์ฉ์๋ค์ด ์ผ์ผ์ด ๋ณด์ ์ปจํ ์คํธ๋ฅผ ์ง์ ํ์ง ์์๋ ๋๋๋ก ์ฃผ์ ๋๋ ํฐ๋ฆฌ ๊ฒฝ๋ก๋ง๋ค ์๋์ผ๋ก ํน์ ์ปจํ ์คํธ๋ฅผ ๋ถ์ฌํ๋๋ก ์ฌ์ ํ์ฌ ์ ์ฑ ์ย ์ค์ ๋์ด ์์ต๋๋ค. semange ์ ย ํ์ผ ์ปจํ ์คํธ ๊ธฐ๋ฅ์ ๋ฐ๋ก ์ด๋ฐ SELinux ์ ์ค์ ์ ํ์ธํ๊ณ ์ถ๊ฐ/๋ณ๊ฒฝํ ์ ์๋ ํด์ฃผ๋ ๊ธฐ๋ฅ์ผ๋กย semanage ๋ช ๋ น์ด ๋ค์ fcontext ์ต์ ์ ์ฃผ๊ณ ์คํํ๋ฉด ๋ฉ๋๋ค.
๋จผ์ ์ค์ ๋ ํ์ผ ์ปจํ ์คํธ์ ๋ชฉ๋ก์ ํ์ํ๋ ์ต์ ์ธ -l ์ ์ฌ์ฉํด ๋ด ์๋ค. ๋ง์ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋ฏ๋ก ์ด๋ค ๊ฒฝ๋ก์ ํ์ผ์ ์์ฑํ๋ฉด ์๋์ผ๋กย httpd_sys_content_t ์ปจํ ์คํธ๊ฐ ๋ถ์ฌ๋๋์ง grep ์ ์ฌ์ฉํ์ฌ ํํฐ๋ง์ ํฉ๋๋ค.
$ sudo semanage fcontext -l|grep httpd_sys_content_t /srv/([^/]*/)?www(/.*)? all files system_u:object_r:httpd_sys_content_t:s0 /var/www(/.*)? all files system_u:object_r:httpd_sys_content_t:s0 /etc/htdig(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
๊ฒฝ๋ก๋ ์ ๊ท์์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ /var/www(/.*)?ย ๋ /var/www ํ์์ ๋ชจ๋ ํ์ผ๊ณผ ํด๋๋ฅผ ์๋ฏธํ๋ฏ๋ก /var/www/html ์ด๋ /var/www/mywebapp ๋ชจ๋ httpd_sys_content_t๊ฐ ๋ถ๊ฒ ๋ฉ๋๋ค.
์๋น์ค๋ฅผ ์ด์ํ๋ค ๋ณด๋ฉด MySQL ๋ฐ์ดํ๊ฐ ๋์ด๋์ ๊ธฐ๋ณธ ๊ฒฝ๋ก์ธ /var/lib/mysql ์ ์๋ ๋ฐ์ดํ ๋ฒ ์ด์ค ํ์ผ์ ๋ค๋ฅธ ํํฐ์ (์:ย /opt/mysql)์ผ๋ก ์ด๋ํด์ผ ํ๋ ์ผ์ด ์๊ธธ ์ ์์ต๋๋ค.
MySQL ๋ ์ค์ํ ๋ฐ๋ชฌ ํ๋ก์ธ์ค์ด๋ฏ๋ก SELinux ์ ์ฌ์ ํ์ฌ ์ ์ฑ ์ด ์๊ณ MySQL ์ ๋ฐ์ดํ๋ฒ ์ด์ค ํ์ผ๋ ๋์์ด๋ฏ๋ก MySQL ์ค์ ํ์ผ์ datadir=/opt/mysql ๋ก ์ค์ ํ๊ณ ์ฌ๋ถํ ํ๋ฉด ๊ธฐ๋ณธ ์ค์ ์์ ์ด๊ธ๋๋ฏ๋ก SELinux ๊ฐ ์ฐจ๋จํ์ฌ ์ ์์ ์ผ๋ก ๊ตฌ๋๋์ง ์์ต๋๋ค.
๋จผ์ MySQL ์ด ๋ฐ์ดํ๋ฒ ์ด์ค ํ์ผ์ ์ ์ฅํ ์ ์๋๋ก ํ์ฉ๋ ํ์ ์ธ mysqld_db_t ๋ฅผ ํ์ผ ์ปจํ ์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ธํด ๋ด ์๋ค.
$ sudo semanage fcontext -l|grep mysqld_db_t /var/lib/mysql(/.*)? all files system_u:object_r:mysqld_db_t:s0 /var/lib/squeezeboxserver(/.*)? all files system_u:object_r:mysqld_db_t:s0
/var/lib/mysql ๊ณผ /var/lib/squeezeboxserver ํ์์ ๊ฒฝ๋ก๊ฐ ์๋๋ผ๋ฉด ์๋์ผ๋ก mysql_db_t ๊ฐ ๋ถ์ง ์์์ ๋ฌธ์ ๊ฐ ๋ ์ ์์ผ๋ฉฐ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
1.chcon ์ผ๋ก ํ์ ๋ถ์ฌ
MySQL ๋ฐ์ดํ๋ฅผ ์๋ก์ด ํด๋๋ก ์ด๋ํ ํ์ ์๋ ๋ช ๋ น์ผ๋ก ํ์ ์ ๋ถ์ฌํด ์ฃผ๋ฉด ๋ฉ๋๋ค.ย
$ sudo chcon -R -t mysqld_db_t /opt/mysql
์ด ๋ฐฉ๋ฒ์ ๋จ์ ์ ์๋ก์ด database ๋ฅผ ์ถ๊ฐํ ๊ฒฝ์ฐ mysqld_db_t ๊ฐ ์๋์ผ๋ก ๋ถ์ฌ๋์ง ์์์ ์ค์๋ ํ๋ค๋ ์ ์ ๋๋ค.
2. ์๋ก์ดย ๊ฒฝ๋ก์ ์ปจํ ์คํธ ์ค์
port ๋ฅผ ์ถ๊ฐํ์๋ ์ฒ๋ผ ๊ฒฝ๋ก์ ์๋์ผ๋ก ์ ์ ํ ๋ณด์ ์ปจํ ์คํธ๊ฐ ๋ถ์ฌ๋ ์ ์๋๋ก ์ค์ ํ ์ ์์ต๋๋ค. ๊ธฐ์กด์ ์๋ ์์น์ด๋ฏ๋ก -aย ์ต์ ์ผ๋ก ์ถ๊ฐ๋ฅผ ํ๊ณ -t ์ต์ ์ ๋ถ์ฌํ ์ปจํ ์คํธ๋ฅผ ์ ๊ณ ์ ๊ท์์ผ๋ก ์ค์ ํ ๊ฒฝ๋ก๋ฅผ ์ ์ด ์ฃผ๋ฉด ๋ฉ๋๋ค.๋ค.
๋ค์์ /opt/mysql ํ๋จ์ ์๊ธฐ๋ ๋ชจ๋ ํ์ผ๊ณผ ํด๋์ mysqld_db_t ๋ฅผ ์๋์ผ๋ก ๋ถ์ฌํ๋ semanage ๋ช ๋ น์ด์ ๋๋ค.
$ sudo semanage fcontext -a -t mysqld_db_t "/opt/mysql(/.*)?"
์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์๋ค๋ฉด ์๋ก ์ถ๊ฐํ ๊ฒฝ๋ก์ ์ ์ฑ ์ด ๋ฐ์๋๋๋ก restorecon ์ ์คํํด ์ค๋๋ค.
$ sudo restorecon -R -v /opt/mysql
์ ์ฑ ์ ์ถ๊ฐ๋์์ผ๋ฏ๋ก ์ด์ ์๋ก์ด MySQL ๋ฐ์ดํ๋ฒ ์ด์ค ํ์ผ์ด ์๊ฒจ๋ ์ ์์ ์ผ๋ก ๋์ํฉ๋๋ค.
์ค์ ์ด ๋ณ๊ฒฝ๋์ด ํ์ผ ์ปจํ ์คํธ๋ฅผ ์ญ์ ํ ๊ฒฝ์ฐ ํฌํธ์ ๊ฒฝ์ฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก -d ์ต์ ์ผ๋ก ์ถ๊ฐํ ๊ฒฝ๋ก๋ฅผ ์ญ์ ํ ์ ์์ผ๋ฉฐ ๋ฑ๋กํ ๋์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ญ์ ํ ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํด์ผ ํฉ๋๋ค.
$ sudo semanage fcontext -d "/opt/mysql(/.*)?"
์ด์ SELinux ์ ๋ณด์ ์ปจํ ์คํธ์์ ๋ ๊ฐ์ง ์ค์ํ ์์์ธ ํ์ผ๊ณผ ๋ณด์ ์ปจํ ์คํธ๋ฅผ ์ดํดํ๋ฉด ํฐ ๋ฌธ์ ์์ด SELinux ๋ฅผ ์ฌ์ฉํ ์ ์์ ๊ฒ์ ๋๋ค.