Docker 인스턴스를 설정하고 실행할 때 부팅 시 nginx는 403 Forbidden
정적 파일에 액세스할 때 다음을 제공합니다.
에서는 명령 Dockerfile
을 사용하여 COPY
모든 파일을 로 이동한 다음 사용자가 파일을 읽을 수 있도록 정적 디렉터리 에 명령을 /var/www/app
사용합니다 .RUN
chmod
www-data
모양 Dockerfile
은 다음과 같습니다.
...
COPY app /var/www/app
RUN chmod -R go+rX /var/www/app/static
...
조사 결과(인스턴스에서 대화식으로 bash 실행) 루트 사용자가 먼저 수행하지 않는 한 www-data 사용자는 파일을 읽거나 디렉터리를 나열할 수 없다는 사실을 발견했습니다. 이것이 제가 정말 혼란스럽게 생각하는 점입니다. 마치 루트 사용자가 파일을 검토할 때까지는 나열된 권한이 완전히 효과가 없는 것처럼 보입니다.
root@0e4b48a67a72:/# sudo -u www-data ls -la /var/www/app/static/js
ls: cannot access /var/www/app/static/js: Permission denied
root@0e4b48a67a72:/# ls -la /var/www/app/static/js
total 100
drwxr-xr-x 2 root root 4096 Oct 9 02:40 .
drwxr-xr-x 10 root root 4096 Oct 9 02:40 ..
-rw-r--r-- 1 root root 93868 Oct 6 13:39 jquery.js
root@0e4b48a67a72:/# sudo -u www-data ls -la /var/www/app/static/js
total 100
drwxr-xr-x 2 root root 4096 Oct 9 02:40 .
drwxr-xr-x 10 root root 4096 Oct 9 02:40 ..
-rw-r--r-- 1 root root 93868 Oct 6 13:39 jquery.js
어떻게 이럴 수있어? 실행하면 ls
유효 권한이 명백하게 변경되는 이유는 무엇입니까?
답변1
해당 Dockerfile에서 ADD를 사용하셨나요? ADD를 피하세요. 해당 명령 이후에는 모든 새 파일과 디렉터리가 UID와 GID 0으로 생성되기 때문입니다.