[linux] zsh: permission denied: ./h2.sh 로 알아보는 리눅스 명령어

2022. 3. 30. 18:19카테고리 없음

 

h2 를 실행할 때 다음과 같은 permission denied 가 발생했다.

$ ./h2.sh
$ zsh: permission denied: ./h2.sh

권한이 없다는 뜻이니 권한을 부여하면 된다. 

// 권한을 바꿔준다.
$ chmod 755 h2.sh 
$ ./h2.sh

 

chmod 755 명령어로 h2.sh 를 실행하는데 필요한 권한을 부여했다.

그런데 chmod 755 는 무슨 뜻일까?

 

 

Linux 명령어 간단히 알아보기

ll 명령어로 파일 경로를 확인하면 아래 그림처럼 나온다. 

drwxr-xr-x 라는 것이 무엇일까? 매번 지나치기만 한 이 문자를 한번 파헤쳐보자. 

$ drwxr-xr-x@  6 imseonghu  staff   192B  3 30 17:00 bin

 

손글씨로 표시한 drwxr-xr-x 는 퍼미션에 관한 내용을 표기한 것이다. 

d 는 directory.

rwx 는 read, write, execute 의 앞글자를 따서 표기한 것으로, 읽고 쓰고 실행할 수 있는 권한이 있다는 의미다. 

r-x 는 read 와 execute 를 할 수 있는 권한이 있다는 의미로, write 는 제외되었다. 즉 파일을 수정할 (write) 권한은 없다는 의미지.

그럼 rwx 가 한번 나왔으면 됐지, 왜 뒤에 r-xr-x 가 또 붙는 걸까? 바로 여러 사용자가 해당 파일에 접근할 수 있기 때문이다.

첫번째 rwx 는 개인 소유자, 두번째 rwx 는 그룹 사용자, 마지막 rwx 는 그 외 사용자의 권한을 의미한다.

 

 

chmod 755

자 다시 돌아와서, 그럼 chmod 755 는 무슨 의미일까?

우선 파일의 권한 구분은 아래 처럼 나타낼 수 있다.

- 읽기 Reading : 4
- 쓰기 Writing : 2
- 실행 Executing : 1

rwx 는 파일을 읽고 / 쓰고 / 실행 할 수 있는 의미라 했다.  각 명령단위(read, write, execute) 는 위의 숫자 값(4, 2, 1) 을 가지며,  rwx 권한을 모두 가진다는 것은 7 (= 4+2+1) 을 의미한다.

그럼 r-x 는?  5 (= 4 + 0 + 1) 를 나타낸다. 

 

자 이제 755 는 무슨 의미인지 다시 생각해보자. 

개인 소유자의 권한은 7, (7 : 읽고 쓰고 실행)

그룹 사용자의 권한은 5, (5 : 읽고 실행)

그 외 사용자의 권한도 5 를 뜻한다는걸 우리는 이제 알 수 있다.

 

 

결론

chmod 755 는 개인소유자의 권한을 7로 바꾸고, 그룹 사용자와 그 외 사용자의 권한을 5로 만든다. 

자 이제 처음으로 돌아가보자.

permission denied 가 떴을 때 chmod 755 h2.sh 명령어를 입력하여 permission 을 얻었다. 

즉 개인 사용자의 권한을 7로 변경하면서(chmod) 해당 파일(h2.sh) 를 실행할 수 있도록 한 것이다.