Ubuntu 26.04 & Apache2 환경에서 /home 디렉토리내 업로드 폴더 쓰기가 안될 경우

리눅스/APACHE|2026. 7. 21. 09:44
반응형

Apache 2.4.66 버전부터 업로드 디렉토리에 쓰기가 안되는 문제점이 확인 되었습니다.


[ 증상 ]

- uploads 폴더 권한을 707/777로 바꿔도 업로드 실패

- is_writable()은 true인데 실제 fopen()/move_uploaded_file()은 "Failed to open stream: Read-only file system" 에러 발생

- sudo -u www-data로 직접 쉘에서 쓰기 테스트하면 성공하는데 PHP(Apache)를 통해서만 실패

 

[ 원인 ]

Apache 2.4.66부터 Debian/Ubuntu 패키지 자체에서 systemd 하드닝(ProtectSystem=full, ProtectHome=read-only)을 기본 적용함.

Ubuntu 24.04에서는 없었고, 26.04(Apache 2.4.66 탑재)부터 기본 활성화됨.

 

 

1. 보안 설정 확인

 

# systemctl show apache2.service | grep ProtectHome

ProtectHome=read-only

 

 

2. 해결 (override로 uploads 경로만 예외 처리)


전체 /home을 rw로 풀면 보안이 약해지니, uploads 디렉토리만 명시적으로 쓰기 허용합니다.


mkdir -p /etc/systemd/system/apache2.service.d

cat > /etc/systemd/system/apache2.service.d/override.conf << 'EOF'
[Service]
ReadWritePaths=/home/sysdocu/public_html/file/uploads
EOF


만약 다른 웹앱들도 업로드/쓰기 디렉토리가 있다면, 그것들도 한 번에 같이 추가하는 게 좋습니다.

(필요한 다른 경로들도 같은 방식으로 추가)

 

cat > /etc/systemd/system/apache2.service.d/override.conf << 'EOF'
[Service]
ReadWritePaths=/home/sysdocu/public_html/file/uploads
ReadWritePaths=/home/sysdocu/public_html/share/uploads
EOF


변경 사항이 있다면 아래와 같이 반영합니다.

systemctl daemon-reload

systemctl restart apache2

 

적용한 설정을 확인합니다.

systemctl show apache2.service -p ReadWritePaths


uploads 경로가 목록에 나온다면, 웹에서 파일업로드가 잘 될 것입니다.

 

반응형

댓글()

PaaS 구성 - (필수 사항) HAProxy 로드밸런서 구성

리눅스/PaaS|2026. 7. 6. 14:45
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

PaaS 구성 - (참고 사항) 빌드팩 이미지 업데이트 방법

리눅스/PaaS|2026. 7. 6. 08:18
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

PaaS 구성 - (필수 사항) K8s 클러스터 초기 설정 (SSL/Ingress/404) - 필요한지 검증해봐야 함

리눅스/PaaS|2026. 7. 3. 10:55
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

PaaS 구성 - (참고 사항) CLI 명령어 만들기

리눅스/PaaS|2026. 6. 15. 12:40
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

PaaS 구성 - (참고 사항) 앱 SSL 인증서 발급 형태

리눅스/PaaS|2026. 6. 10. 15:19
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

PaaS 구성 - (사용 방법) 사용자 앱 배포

리눅스/PaaS|2026. 6. 10. 15:03
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

PaaS 구성 - (참고 사항) 포털 웹소스 및 DB데이터 백업하기

리눅스/PaaS|2026. 6. 9. 13:49
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

PaaS 구성 - 10. 자체 빌드 서버 구축 (FastAPI + Docker + Buildpack)

리눅스/PaaS|2026. 6. 9. 08:20
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

PaaS 구성 - 9. 포털 서버 구축

리눅스/PaaS|2026. 6. 8. 10:08
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

PaaS 구성 - 8. 모니터링 및 로그 수집 (선택 사항)

리눅스/PaaS|2026. 6. 8. 08:49
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.