본문 바로가기

개발

[리눅스][apache] 웹사이트 파일첨부가 되지 않을 때 시도할 것들

반응형

클라우드 서버를 하나 만들고, 개발한 웹사이트를 업로드 했다.

그런데 게시판의 파일첨부기능이 되지 않는다 ㅜ

당연히 디렉토리 권한 문제라고 생각했는데 안된다 ㅜ

어찌저찌 해결했는데, 이글에 정리해본다

 

1. 디렉토리 권한 문제

디렉토리에 권한에 쓰기를 추가한다

chmod -R 755 /PATH/

 

chmod : 파일이나 폴더에 권한을 주는 명령어

-R :  하위 모든 파일에 동일하게 주기

755 : 권한을 얼만큼 줄건가 

 

/PATH/ : 파일이 업로드 될 폴더 주소

상위 폴더 권한으로 업로드가 안 될 수있는데, 이때는 웹사이트가 들어가있는 폴더로 설정하는게 좋다

 

2. 디렉토리 소유자 문제

디렉토리 소유자 설정이 ROOT로 되어 있으면 파일 첨부가 안될 수 있다

chown -R apache:apache /PATH

 

나는 웹사이트가 사용할 수 있도록 아파치로 변경했다

chown : 파일이나 폴더에 소유자 설정

-R :  하위 모든 파일에 동일하게 주기

apache:apache   -> 소유자 그룹 설정

/PATH -> 해당 폴더

 

 

대부분 1번과 2번에서 해결된다

하지만 1번과 2번을 아무리해도 되지 않는다면 아래 방법을 시도해보자

 

3. SELinux 확인

sestatus

 

위의 명령어를 입력해본다

 

그리고 나는 아래와 같은 결과를 얻었다

SELinux status: enabled 
SELinuxfs mount: /sys/fs/selinux 
SELinux root directory: /etc/selinux 
Loaded policy name: targeted 
Current mode: enforcing
Mode from config file: enforcing 
Policy MLS status: enabled 
Policy deny_unknown status: allowed 
Max kernel policy version: 31

 

SELinux는 리눅스에서 보안 계층을 제공하는 보안 강화 기술이다


SELinux는 세 가지 모드로 동작할 수 있는데,

Enforcing (강제 모드): 보안 정책을 엄격하게 적용하고, 정책에 어긋나는 행위를 로그에 기록하며 차단
Permissive (관용 모드): 보안 정책을 로깅은 하지만 차단하지 않는다

Disabled (비활성화): SELinux를 완전히 비활성화


sestatus 명령어로 확인한 결과에서

"SELinux status"가 "enabled"이고 

"Current mode"가 "enforcing"으로 나오면 

SELinux가 활성화되어 있고 현재 강제 모드로 설정되어 있다는 것!

enforcing 모드에서는 SELinux 정책이 강제로 적용되어 

파일 엑세스와 같은 시스템 리소스에 대한 행위를 강력하게 제어한다

 

 

내가 최종적으로 해결한 명령어는 아래 명령어다

sudo chcon -R -t httpd_sys_rw_content_t /PATH/

 

 


chcon 명령어를 사용하여 파일이나 디렉토리의 SELinux 보안 컨텍스트를 변경하거나, 

semanage 명령어를 사용하여 SELinux 정책을 수정할 수 있다. 

 

이를 통해 웹 서버가 특정 디렉토리에 쓰기 권한을 가질 수 있도록 보안 정책을 수정했던거!

 

httpd_sys_rw_content_t는 SELinux에서 사용되는 보안 컨텍스트 레이블 중 하나인데,

 

웹 서버 (일반적으로 Apache HTTP Server)가 특정 디렉토리나 파일에

쓰기 및 읽기 권한을 가질 수 있도록 SELinux 정책을 지정하는 데 사용된다.

 

 

반응형