Permission Denied 에러 해결 및 생성 파일 권한 자동 설정하기

포스트 썸네일 이미지

도커docker로 라라벨Laravel 개발 환경을 구축하는 방법을 여러 편으로 나눠서 포스팅했었다.

그러면서 중간에 Permission Denied 에러를 두 번이나 겪었고 해결 방법을 알려줬었다.

오늘의 포스트는 그때 알려준 해결 방법을 다시 한번 정리하면서, 파일을 생성할 때부터 권한이 나에게 있는 파일이 생성되도록 설정하는 방법도 정리해 보겠다.




이전 포스트

이전에 Permission Denied 에러가 발생했던 관련 포스트들이다.




앞으로 Permission Denied 에러를 수없이 자주 겪게 될 거다


권한이 없는 파일을 VSCode로 수정하려고 할 때 뜨는 Permission Denied 에러

소유자가 root인 파일을 VSCode에서 수정하려고 했을 때 뜨는 Permission Denied 에러 메시지다.


일반적으로 docker 컨테이너는 루트(root) 유저로 실행된다.

그래서 컨테이너 안에서 artisan, composer, npm 같은 명령어로 파일을 생성하면 그 파일의 소유자가 root:root가 돼버리고, 호스트(로컬)에서 내가 그 파일을 수정하려고 하면 권한이 없다고 Permission Denied 에러가 뜨게 되는 것이다.


앞으로 Laravel로 개발을 할 때, php artisan make 명령어를 통해서 수많은 파일들을 만들게 된다.

그때마다 매번 소유자와 그룹을 지정하는 명령어를 넣는 건 비효율적이다.





수동으로 소유자와 그룹 변경


일단 비효율적이라는 그 방법부터 다시 정리하겠다.

비효율적이지만, 일단은 알고는 있어야 하는 명령어이기 때문이다.




ls -l [src/ 등의 경로]

ls -l 뒤에 Permission Denied 에러가 발생한 파일이나 디렉터리의 경로를 입력한다.

아마 root로 되어있을 것이다.


whoami

이 명령어를 입력해서 본인의 계정을 확인한다.


sudo chown -R 소유자:그룹 [경로]

그리고 이 명령어를 실행한다. '소유자'와 '그룹'에 본인의 계정을 넣는다.

그리고 다시 ls -l [경로]를 입력하면 소유자가 본인으로 바뀌어 있을 것이다.


이 방법은 위에 링크해 놓은 이전 포스트들에 영상과 함께 더 자세히 정리가 되어있으니, 여기서 넘어가겠다.





생성 파일의 권한을 자동으로 설정하기


Makefile을 이용해서 파일을 생성할 때부터 권한이 나에게 있는 파일이 생성되도록 설정할 수 있다.




id -u

id -g

ubuntu에 이 두 명령어들을 입력해 보자.

아마 둘 다 1000이 출력될 거다.




Makefile

bash:
	docker-compose exec app bash

기존의 이 코드를 다음과 같이 수정하자.


bash:
	docker-compose exec -u 1000:1000 app bash
app:
	docker-compose exec app bash

이제 php 컨테이너 내부로 들어갈 때, 상황에 따라 make bash 혹은 make app을 입력하면 된다.


make bash로 php 컨테이너 내부로 들어가서 php artisan make 명령어 등으로 파일을 생성하면 처음부터 권한이 나에게 있는 파일이 생성된다.


반면, make app으로 php 컨테이너 내부로 들어가야 하는 경우도 있다.

npm run devbun run dev 등을 실행할 때는 make app으로 php 컨테이너에 들어가야 한다.




마무리


참고로 Makefile을 위와 같이 설정하고 make bash 명령어로 php 컨테이너로 들어가면, 터미널에 I have no name!이라고 표시된다.

뭔가 문제가 있는 것만 같은 거슬리는 문장이지만, 단순히 프롬프트 표시 문제일 뿐, 실제 권한이나 파일 생성에는 아무런 문제가 없다.


오늘의 포스트는 여기까지!

이 글이 도움이 됐거나 유익했다면 스크롤을 조금만 더 내려서 댓글을 남겨주세요. (비로그인도 가능합니다!)
응원이나 피드백이 담긴 댓글은 제가 계속 블로그를 해나갈 수 있는 원동력이 됩니다. 😊

지인에게 보여주고 싶은 글이었다면 URL을 복사해서 메신저나 소셜 미디어에 공유해 주세요.

댓글 쓰기

0 Comments

문의하기 양식