클라우드 서버를 하나 만들고, 개발한 웹사이트를 업로드 했다.
그런데 게시판의 파일첨부기능이 되지 않는다 ㅜ
당연히 디렉토리 권한 문제라고 생각했는데 안된다 ㅜ
어찌저찌 해결했는데, 이글에 정리해본다
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 정책을 지정하는 데 사용된다.
'개발' 카테고리의 다른 글
can get stat of 'performance_schema/session_variables.TRG' errcode : 13 - permission denied (4) | 2023.12.05 |
---|---|
cordova + electron 작업시 창조절 및 아이콘 넣기 (2) | 2023.11.20 |
cordova 에서 deviceready 이벤트를 못 읽을 때 (2) | 2023.10.26 |
[React Native] pod install 오류 (3) | 2023.10.22 |
[react-native] firebase - [ auth/unknown] An internal error has occurred. [chain validation failed] (2) | 2023.10.20 |