전반적인 문제

디폴트 권한 적어놓기

drwxr-xr-x 3 root root 4096 Nov 15 16:08 home/

유저

drwxr-xr-x 7 cz cz 4096 Nov 19 04:38 cz/

유저안

rw------- 1 cz cz 1971 Nov 18 11:39 .bash_history -rw-r--r-- 1 cz cz 220 Feb 25 2020 .bash_logout -rw-r--r-- 1 cz cz 4196 Nov 15 17:43 .bashrc drwxrwxr-x 12 cz cz 4096 Nov 16 13:18 blog/ drwx------ 3 cz cz 4096 Nov 16 13:18 .cache/ -rw-rw-r-- 1 cz cz 4 Nov 16 13:29 composer.json drwx------ 4 cz cz 4096 Nov 16 13:18 .config/ drwxrwxr-x 3 cz cz 4096 Nov 16 13:18 .local/ drwxrwxr-x 8 cz cz 4096 Nov 15 17:44 .nvm/ -rw-r--r-- 1 cz cz 807 Feb 25 2020 .profile -rw-r--r-- 1 cz cz 0 Nov 15 16:10 .sudo_as_admin_successful -rw------- 1 cz cz 9582 Nov 19 04:38 .viminfo

라라벨 안

drwxrwxr-x 7 cz cz 4096 Nov 16 13:18 app/ -rw-rw-r-- 1 cz cz 1686 Nov 16 13:18 artisan drwxrwxr-x 3 cz cz 4096 Nov 16 13:18 bootstrap/ -rw-rw-r-- 1 cz cz 1612 Nov 16 13:18 composer.json -rw-rw-r-- 1 cz cz 264516 Nov 16 13:18 composer.lock drwxrwxr-x 2 cz cz 4096 Nov 16 13:18 config/ drwxrwxr-x 5 cz cz 4096 Nov 16 13:18 database/ -rw-rw-r-- 1 cz cz 220 Nov 16 13:18 .editorconfig -rw-rw-r-- 1 cz cz 845 Nov 16 13:18 .env -rw-rw-r-- 1 cz cz 794 Nov 16 13:18 .env.example -rw-rw-r-- 1 cz cz 111 Nov 16 13:18 .gitattributes -rw-rw-r-- 1 cz cz 163 Nov 16 13:18 .gitignore -rw-rw-r-- 1 cz cz 944 Nov 16 13:18 package.json -rw-rw-r-- 1 cz cz 1202 Nov 16 13:18 phpunit.xml drwxrwxr-x 2 cz cz 4096 Nov 16 13:18 public/ -rw-rw-r-- 1 cz cz 3738 Nov 16 13:18 README.md drwxrwxr-x 6 cz cz 4096 Nov 16 13:18 resources/ drwxrwxr-x 2 cz cz 4096 Nov 16 13:18 routes/ -rw-rw-r-- 1 cz cz 563 Nov 16 13:18 server.php drwxrwxr-x 5 cz cz 4096 Nov 16 13:18 storage/ -rw-rw-r-- 1 cz cz 181 Nov 16 13:18 .styleci.yml drwxrwxr-x 4 cz cz 4096 Nov 16 13:18 tests/ drwxrwxr-x 44 cz cz 4096 Nov 16 13:18 vendor/ -rw-rw-r-- 1 cz cz 559 Nov 16 13:18 webpack.mix.js

이 문제는 Apache와 PHP의 파일생성 권한과 연관되어 있다. Apache의 데몬실행 권한은 Apache 설정파일에 설정되어 있는데 우분투의 경우는 www-data이고 기타 다른 배포판에서는 nobody, 혹은 apache로 명명되어 있다(설명을 위해 우분투의 www-data를 기준으로 한다).

이말인즉, 서버에서 웹서비스를 구동할때 그 웹사이트를 구동하는 Owner(소유주)가 서버계정의 소유주가 아니라 Apache의 www-data가 된다는 것이다.

이로인해 PHP를 실행하게 되는 소유주 또한 www-data이기에 PHP를 이용해 파일을 생성하게 되는 경우, 예를들어 fopen을 이용한 파일생성, 업로드를 통해 생성되는 파일등의 소유주가 www-data가 된다.