23.04.16 LINUX 와 권한

Kuno17·2023년 4월 15일
0

TIL/WIL

목록 보기
34/38
post-thumbnail

문제상황

  • CodeDeploy를 통해서 CICD를 구축해서 AWS EC2에 Spring Server를 배포.
  • FE서버와의 연결상태 확인.
  • 게시글 작성에서 이미지를 리스트로 업로드하는 부분이 서버상에서 작동하지 않는다..

에러코드

  • java.io.ioexception: permission denied
  • ??? 갑자기 이게 무슨일인가 했다.

시도 및 확인

  • Local환경에서 Test 결과 - 성공
  • 서버 환경에서 Test결과 - 실패
  • 어떤 변수값에 의한 문제발생인지 파악이 필요했다.
  • 대부분의 기능들이 정상적으로 작동하나 이미지 업로드와 관련된 부분에서 동일한 에러가 발생함을 확인.
    • 이미지 사이즈에 의한 문제인가? - 아니다 - 로컬상에도 사이즈를 줄여서 해봤지만 지정한 예외가 처리되게 되어있다.
    • 이미지 용량에 의한 문제인가? - 아니다 - 로컬상에서 도합 10MB넘는 용량을 업로드하면 지정한 예외가 처리되었다.

  • 코드나 기능상에서 예상할 수 있는 문제는 모두 아닌것으로 생각되었다.
  • 환경이나 설정의 문제라고 생각.
  • 권한이라는 단어에 집중했다 -> 어디의 권한인가? -> 서버상의 권한일것 -> 서버는 어디인가? -> 우분투 서버이며 이는 리눅스 기반의 서버이다.
  • 시도1. 현재 ubuntu 에서 사용자 권환상태를 확인.
  • 시도2. 권한 침범이 예상되는 경로에 chmod 755 -R /경로 를 사용해서 권한 업데이트
  • 결과적으로 성공하지 못했다.

해결

리눅스의 권한이 무엇인지에 대한 이해도가 너무 부족했던것 같다.
그리고 통신 플로우에 대한 이해가 없었던것 같다.

version: 0.0
os: linux

files:
  - source:  /
    destination: /home/ubuntu/app
    overwrite: yes

permissions:
  - object: /
    pattern: "**"
    owner: ubuntu -> root 로 변경
    group: ubuntu

hooks:
  AfterInstall:
    - location: scripts/stop.sh
      timeout: 60
      runas: ubuntu
  ApplicationStart:
    - location: scripts/start.sh
      timeout: 60
      runas: root
  1. permision denied 디렉토리에 접근 권한이 없기때문에 나오는 오류이다 -> 접근이 안된다.
  2. 권한을 무언가 설정을 해야한다. S3의 권한확인 -IAM에서 FullAccess가 되어있었다.
  3. S3는 EC2 밖에 존제하는대 EC2내부에서 권한을 수정하고 있었다.
  4. 경로 접근에대한 이해도가 부족했다.
  5. 더 좋은 접근방법은 통신 플로우의 이해도가 필요하다.
  6. S3에 접근하는 주체에대해 생각해볼 수 있다.
  7. CodeDeploy 설정인 appspec.yml에서 권한 설정이 잘못되어 있다.
  8. ubuntu가 최상위 권한인줄 알았으나 실상은 root계정이 최상위 권한자이다.(내가한 오해)
  9. 그러므로 결국은 권한이 부족한 계정으로 프로그램을 실행하면서 권한부족이 발생했다.
  10. 그러나 실질적으로 root계정을 사용하는것은 옳바른 방법은 아니다.
  11. 일반계정에 권한을 따로 지정해줄 필요가 있다.

추가적인 정보를 참조한다면 좋으듯 하다.
참조 https://goodgid.github.io/Github-Action-CI-CD-CodeDeploy-App-Spec-File/

profile
자바 스터디 정리 - 하단 홈 버튼 참조.

0개의 댓글