springboot 프로젝트에 TDD 에 따라 테스트코드를 작성하고 작업을 진행하는데
./gradlew test
명령어를 치려니 ./gradlew 에 권한이 없다고 떴다.
블로그를 확인해보니
chmod +x gradlew
를 통해 gradlew 에 권한을 부여할 수 있다는데 그게 어떻게 동작하는지 알아봤다.
일단 아무 디렉토리에서 어떤 파일드이 있는지 봐보자
ls
현재 디렉토리에 있는 모든 파일과 폴더의 상태를 확인한다.

ls -l
폴더와 파일들의 상태를 더 자세히 알 수 있다.

이때 앞에 d 로 시작하면 폴더이고 - 로 시작하면 파일이다.
파일의 경우
-rw-r--r--
의 형태를 띄는데
앞에서부터 그 의미는
인데 r : 파일 읽기
w : 파일 쓰기
x : 파일 실행하기이다.
3개씩 묶어서 r : 4, w : 2, - : 0 의 값을 갖는데
소유자 : r + w + - = 4 + 2 + 0 = 6
그룹 : r + - + - = 4 + 0 + 0 = 4
누구나 : r + - + - = 4 + 0 + 0 = 4
로 계산이 가능하다.

즉, ~ 디렉토리에 있는 Desktopapple.jpg 파일은 644 권한을 갖는다는 의미이다.
이 파일을 누구나 수정하고자 한다면 w 권한이 필요하기에 anyone 누구나의 권한을
r + - + - => r + w + -
로 바꿔 권한을 6 4 4 에서 6 4 6 으로 바꿔줘야 한다.
이때 권한을 바꿔주는 명령어가 chmod 이다.
앞에서의 예시로 본다면
chmod 646 Desktopapple.jpg
를 통해 권한을 수정할 수 있을 것으로 보인다.
그러나 ssh 를 통해 ec2 에 접속했을때 ubuntu 혹은 linux 에 권한을 바꿀 권한이 없을 수 있다.
sudo chmod 646 Desktopapple.jpg
필자는 본인 컴퓨터에서 실행해서 sudo 를 붙이지 않았다.

ls -l 했을때 누구나의 권한이 r-- 에서 rw- 로 바꿘것을 볼 수 있다.

누구나 모든 권한을 부여하게 하려면?
sudo chmod 777 Desktopapple.jpg
모두에게 : rw-, r--, r-- 모두 수정
r : 4
w : 2
x : 1
chmod +x gradlew
???
이제와 다시 보니 앞에서 본 것과 뭔가 다르다.
일단 ec2 에 접속해보자
ssh springboot-webservice
필자는 사용할 username 및 ip 주소를 매번 입력하기 귀찮아서 한줄의 셸스크립트 명령어로 ec2 에 접속할 수 있도록 설정했다.


참고로 test 폴더는 gitlab 프로젝트에서 실수로 테스트하던 프로젝트에 github 에서 작업하던 레포를 import 했는데 공모전에서 사용중인 gitlab 계정이라 수정권한이 없어서 이름이 test 로 굳혀졌다..

현재 ec2 에 클론받은 spring boot 프로젝트의 루트 디렉토리를 보면 gradlew 가 초록색으로 보인다. 권한을 이전에 부여했었다는 의미이다. gradlew 에 권한이 없으면 흰색으로 보인다. 파일 이름이 초록색이면 실행파일이라는 의미이다.
gradlew : 맥, 리눅스용 스크립트
내장 gradle 을 이용해 Gradle 명령어를 실행하기 위한 환경설정부터 실행까지 모두 수행한다.
gradle : 빌드 자동화 시스템
참고로 명령어가 두종류 있어서 정리해본다.
chmod +x gradlew
이 명령어의 경우 모든 사용자(소유자, 그룹, 누구나)에게 실행 권한을 (x권한이니 실행하기로 보인다)부여한다.
chmod u+x gradlew
반면 이 명령어의 경우 소유자에게만 실행 권한을 부여한다.
위에서 자료조사한 것을 토대로 보면 원래 -rw-r--r-- 였는데
오.. 타 블로그 eunguru 님 티스토리 를 보다가 이해가 되었다.
위에서 쓴 것처럼 권한을 숫자가 아닌 기호로 나타낼 수 있다.
대상 :
u : user, 소유자
g : 그룹
o : 기타
a : u, g, o
' ' : 아무것도 사용하지 않을 경우 all 로 추정?
수행할 명령 :
- : 추가
- : 제거
= : 지정, 기존 속성 사라짐
설정할 퍼미션 :
r : 읽기
w : 쓰기
x : 실행
예시
u+x : 소유자에게 실행 권한 추가
+x : 모든 사용자에게 실행 권한 추가
o-rw: 기타 사용자의 읽기, 쓰기 권한 제거
다른 예시는 위의 eunguru 님 티스토리 링크로 참고하자
chmod +x gradlew
위 명령어는 모든 사용자에게 gradlew 실행권한을 부여하는 명령어다.
확실히 이해했다.