Java

[아파치 웹서버] 이미지 저장 경로 변경 중 Forbidden 오류 발생..

https://blog.naver.com/shackerz/220375507309

너무 오랜만에 자바에 접하고 있다.

이미지를 저장하는 서버 경로를 변경중인데..

path.properties에서는 변경을 하여서 리눅스 서버의 경로에는 이미지가 저장되고 있다.

하지만 이미지를 찾지 못하는 오류가 발생하였다.

아 그래… 웹서버 세팅을 변경해야 하는 구나 라는 생각이 문득 들었다.

putty를 켜고 su계정으로 로그인 한 뒤 httpd/conf/httpd.conf 파일을 열었다.

vi /etc/httpd/conf/httpd.conf

Alias /wel_img “/upload/board”
< Directory “/wel_img”>
  #   Options Indexes FollowSymLinks MultiViews
  #   Options FollowSymLinks MultiViews
       Options MultiViews
       AllowOverride None
       Order allow,deny
       Allow from all
< /Directory>

Alias 경로를 변경 후 웹서버를 재시작하였다.
———————
아파치웹서버 상태 체크 
service httpd status
 
아파치 웹서버 정지
service httpd stop

아파치 웹서버 재시작

service httpd restart

하지만 이미지 접근이 불가하였다.


원인을 찾아야한다.


폴더 접근권한 문제는 아니다.
r-x 권한을 주었으므로….

getsebool -a | grep httpd

allow_httpd_anon_write –> off
allow_httpd_mod_auth_ntlm_winbind –> off
allow_httpd_mod_auth_pam –> off
allow_httpd_sys_script_anon_write –> off
httpd_builtin_scripting –> on
httpd_can_check_spam –> off
httpd_can_network_connect –> off
httpd_can_network_connect_cobbler –> off
httpd_can_network_connect_db –> off
httpd_can_network_memcache –> off
httpd_can_network_relay –> off
httpd_can_sendmail –> off
httpd_dbus_avahi –> on
httpd_dbus_sssd –> off
httpd_enable_cgi –> on
httpd_enable_ftp_server –> off
httpd_enable_homedirs –> off
httpd_execmem –> off
httpd_manage_ipa –> off
httpd_read_user_content –> off
httpd_run_preupgrade –> off
httpd_run_stickshift –> off
httpd_serve_cobbler_files –> off
httpd_setrlimit –> off
httpd_ssi_exec –> off
httpd_tmp_exec –> off
httpd_tty_comm –> on
httpd_unified –> on
httpd_use_cifs –> off
httpd_use_fusefs –> off
httpd_use_gpg –> off
httpd_use_nfs –> off
httpd_use_openstack –> off
httpd_verify_dns –> off

[설정 변경]
setsebool -P httpd_enable_homedirs on

httpd.conf 에서 사용자별 디렉토리를 설정했더라도 막상 접속해보면 퍼미션 오류가 나는데
httpd_enable_homedirs 를 on 해주면 httpd의 사용자별 디렉토리 권한 문제가 해결된다.

이미지에 접근이 된다…근데 이렇게 해야하는건가? 보안에 문제없는건가? 보안에 구멍이 생긴다.

폴더에 접근이 가능하게 된다. 그래서 그 폴더안에 어떤 이미지들이 있는지 전체를 들여다 볼 수 있다.

이건 보안에 걸린다. 다른 방법을 찾아라!!!

경우에 따라서는 SELinux가 security context 문제로 접근을 차단해서 발생한 것일 수 있다.
이 경우 chcon 명령을 사용해서 새로 변경한 
DocumentRoot의 하위 디렉토리 및 파일을 Apache Httpd의 SELinux security context와 일치시켜 문제를 해결할 수 있다

context가 httpd_sys_content_t 여야 apache 가 읽을수 있다.
ls -lZd /upload/board 폴더 조회

[chcon 명령으로 SELinux security context 변경]
chcon -R -t httpd_sys_content_t  /upload/board

chcon -R -t httpd_user_content_t /upload/board

현재 SeLinux상태 정보 확인


참고 :[CentOS 7 / Fedora 23 / RHEL 7.2]Apache Httpd DocumentRoot 변경 시 403 Forbidden Error…..

참고 : [Apache] You don’t have permission to access / on this server
참고 : SELinx 설정방법
참고 : apache httpd 가 web contents 를 읽지 못할 경우(13 – Permission denied or 2 – No such file or directory) error
참고 : 리눅스 [httpd] Apache 웹서버 SELinux 제한 풀기

Leave a Reply

error: Content is protected !!