스마트에디터 업로드 권한 문제
본문
data 폴더는 707로 설정 되어있습니다만, 스마트에디터 파일 업로드를 할때 644로 업로드 되네요..; 이유가 뭘까요?
그리고 jpg는 스마트에디터에 올라가는데 png는 파일은 data폴더에 올라는 갔지만 file upload failed로 나와버리네요;;
고수 선배님들 자비를 ^^;;
답변 3
기본적으로 리눅스 파일시스템이 폴더는 755 / 파일은 644로 생성됩니다.
(물론 변경할 수 있지만 추천드리진 않습니다.)
그누보드 자체 config.php 설정에서도
define('G5_DIR_PERMISSION', 0755); // 디렉토리 생성시 퍼미션
define('G5_FILE_PERMISSION', 0644); // 파일 생성시 퍼미션
이렇게 정의되어 있습니다.
8진수로 표현하는 퍼미션
8진수 |
표시되는 퍼미션 |
의미하는 내용 |
0 |
--- |
아무런 권한이 없음 |
1 |
--x |
실행권한만 있음 |
2 |
-w- |
쓰기 권한만 있음 |
3 |
-wx |
쓰기와 실행권한만 있음 |
4 |
r-- |
읽기 권한만 있음 |
5 |
r-x |
읽기와 실행권한만 있음 |
6 |
rw- |
읽기와 쓰기 권한만 있음 |
7 |
rwx |
모든 권한(읽기, 쓰기, 실행) |
파일에 7 (모든권한)을 앵간해서는 주지 않는걸 추천합니다.
해킹에 취약점이 생겨 보통을 읽거나 쓰기만 허용하지 x (실행까지는 허용하지 않습니다.)
그래서 보통은 읽기 권한만 주고, 업로드시에는 써야하니 해당 폴더는 707 을 넣어줘야 하는겁니다.
업로드가 되었다면 퍼미션 문제라기보단 라이브러리의 문제가 클것으로 생각됩니다.
내용만 봐서는 정확히 무슨 원인이지는 파악이 안되네요 ㅎ
에디터 업로드 파일 퍼미션이 644로 설정되는 이유는
상위 폴더(data) 퍼미션과는 무관하고 PHP의 umask 설정에 따릅니다.
PHP가 파일을 생성할 때, umask 값이 0022라면, 파일은 644로 생성됩니다.
PHP 코드에서 umask() 함수를 실행하면 현재 설정된 값을 확인할 수 있다.
echo sprintf("Current umask: %04o\n", umask());를 적용하여 테스트해보세요.
대개, 환경 파일(config.php)로 chmod($file_path)를 추가하여 권한을 조정합니다.
umask 값 영구적으로 변경하시려면 ~/.bashrc 또는 ~/.profile에 적용하시면~
*umask 0000 → 파일 666, 폴더 777
*umask 0022 → 파일 644, 폴더 755 (기본값, 일반적인 설정)
*umask 0077 → 파일 600, 폴더 700
*umask 0277 → 파일 400, 폴더 500
png 파일이 업로드되었으나 "file upload failed" 오류가 발생하는 것은,
파일 업로드 후 처리 과정에서
MIME 타입 필터링, GD 라이브러리 오류,
또는 서버의 파일 시스템 권한 문제일 것입니다.
그누라면, /extend/smarteditor_upload_extend.php 파일이 존재하는지 확인,
파일 업로드 처리 로직에서 chmod() 등이 적용되는지 검토. (config.php 등)
nginx.conf 또는 .htaccess에서 *.png 파일에 대한 제한이 없는지 확인.
upload_max_filesize, post_max_size, max_execution_time 등의 설정을 늘리기.
모두들 감사드립니다. 우선 다 시도해봤으나 원인은 찾지 못하고 결국 해당 오류를 반환하지 않게 처리하였을 뿐입니다. ㅠㅠ