리눅스 chmod 실행권한 - linugseu chmod silhaeng-gwonhan

쉘스크립트 파일에 execute(실행) 권한을 부여하는 방법을 소개합니다.

다음과 같이 쉘스크립트 파일을 실행할 수 없다면, 파일에 실행 권한이 없는 것입니다.

$ ./myscript.sh bash: ./myscript.sh: Permission denied

권한 정보를 보면 read, write만 있고 execute는 없습니다.

$ ls -al -rw-rw-r-- 1 js js 16 620 18:08 myscript.sh

실행(execute) 권한 부여

다음 명령어로 파일에 실행 권한을 부여할 수 있습니다.

$ chmod +x myscript.sh

권한을 확인해보면 execute(x)가 부여된 것을 확인할 수 있습니다.

$ ls -al -rwxrwxr-x 1 js js 16 620 18:08 myscript.sh

이제 다음과 같이 실행해보면, 스크립트가 실행이 됩니다.

$ ./myscript.sh My Script

참고

파일에 실행(execute) 권한이 없어도 다음과 같이 sh [file] 명령어로 스크립트를 실행시킬 수 있습니다.

$ sh myscript.sh My Script

Loading script...

Related Posts

  • Ubuntu에서 draw.io 설치하는 방법
  • 리눅스 deb 파일 설치
  • 우분투에 VMware 설치하기
  • [Ubuntu] VMware에서 Windows 11 설치
  • Vi/Vim에서 라인 번호 표시하기
  • Vi/Vim에서 1줄 또는 여러줄 삭제 방법
  • 우분투에서 rar 압축, 압축 풀기
  • Ubuntu에서 구글 드라이브 사용하기 (로컬 폴더에 마운트)
  • [Ubuntu] apt-cache search, 설치 가능한 패키지 검색
  • Ubuntu - DNS 캐시 삭제 방법
  • Ubuntu에서 사용할 수 있는 Text Editor 소개
  • 우분투(리눅스) - RAM(메모리) 크기 확인
  • 우분투에서 시간대(Timezone) 변경하기
  • 우분투(리눅스)에서 Atom 텍스트 에디터 설치
  • 우분투(리눅스)에서 Microsoft Edge 브라우저 설치
  • 우분투(리눅스)에서 Slack 설치
  • 우분투(리눅스)에서 Visual Studio Code 설치
  • Linux - 파일, 디렉토리 삭제 명령어(rm -rf, rmdir)
  • Linux - 파일이 수정된 날짜/시간 확인 방법
  • Linux - touch로 파일 생성, 파일의 날짜/시간 변경
  • Linux - Node.js로 Html 파일을 로컬 서버에서 실행하기

주로 개인이 일반적으로 사용하는 '단일 사용자 운영체제'(Single-User Operation System, 대표적으로 Windows)와는 다르게 여러 사용자들에게 서비스를 제공해주는 서버에는 '다중 사용자 운영체제'(Multi-User Operation System)가 사용됩니다.

다중 사용자 운영체제의 대표적인 것이 유닉스(Unix) 운영체제와 유닉스에서 파생된 리눅스(Linux) 운영체제이며, 다중 사용자 운영제체는 여러 클라이언트 컴퓨터에서 하나의 서버 컴퓨터에 접속을 하는데 사용되기 때문에 파일 및 디렉터리의 접근 권한을 클라이언트 계정별로 엄격하게 관리되어야 한다는 특징이 있습니다.

* 리눅스에서 디렉토리는 그 디렉터리가 포함하는 파일과 하위 디렉터리 정보를 저장하는 하나의 파일로 취급되기 때문에 디렉터리도 파일의 한 종류입니다. 추가로 macOS 역시 유닉스 계열의 운영체제이므로 리눅스와 동일한 파일 권한을 사용합니다.

ls -l

'파일 권한 이해하기'

리눅스 명령어 'ls' 는 list segments라는 뜻으로 디렉터리 목록을 확인하는 명령어입니다. 'ls' 명령어에 '-l' 옵션을 통해 현재 위치에 있는 전체 파일들을 자세하게 볼 수 있습니다.

('-al' 옵션의 경우 숨겨진 파일까지 모두 보여줍니다.)

맨 앞 10자리가 파일 타입 및 권한 정보를 가진 코드

(링크수는 쉽게 윈도우의 '바로가기'이며, 소유 그룹은 특별한 변경이 없을 경우 소유자가 속한 그룹이 소유 그룹으로 지정됩니다.)

'ls' 명령어로 파일들을 자세하게 봤을 때 맨 앞에 'drwxr-xr-x', '-rw-r--r--'와 같은 문자들이 있습니다.

이 부분이 바로 파일 권한 정보를 가지고 있는 부분입니다. 파일 타입(file type)과 권한 정보(permission)를 나타내며 총 10자리로 이루어져 있습니다.

먼저 맨 앞의 문자 1자리가 바로 파일 타입(file type)을 나타내는데요.

-  :  일반 파일이라는 표시입니다. (regular file)

d  :  폴더 / 디렉터리라는 표시입니다. (directory)

l  :  심볼릭 링크라는 표시입니다. (symbolic link)

외에 b(블록 타입 특수 파일), c(문자 타입 특수 파일), p(파이프), s(소켓)가 있습니다.

그리고 파일 타입 다음의 9자리가 바로 '권한(permission)'을 나타내는 부분입니다. 9자리의 권한은 3자리씩 3 부분으로 나뉘게 되는데요.

- 맨 앞의 3자리는 파일 소유자에 대한 권한을 나타냅니다.

- 중간의 3자리는 파일 소유자의 그룹에 대한 권한을 나타냅니다.

- 마지막의 3자리는 시스템의 다른 사용자에 대한 권한(소유자 외 유저들의 권한)을 나타냅니다.

drwxr-xr-x // 'd' + 'rwx' + 'r-x' + 'r-x'

를 예로 들었을 때 맨 앞의 'd'는 파일의 타입인 디렉터리를 나타내고, 다음의 'rwx'는 파일 소유자의 권한, 다음 'r-x'는 파일 소유자의 그룹에 대한 권한, 마지막 'r-x'는 시스템의 다른 사용자에 대한 권한을 나타내는 것입니다.

그렇다면 여기서 r, w, x는 무엇을 나타내는 것일까요?

r  :  읽기(read)로 파일을 읽을 수 있는 권한입니다.

w  : 쓰기(write)로 파일을 쓰거나, 수정하거나, 지울 수 있는 권한입니다.

x  : 실행(execute)으로 파일을 실행할 수 있는 권한입니다.

이 내용을 위의 3자리의 권한으로 정리했을 때 아래와 같습니다.

--- 권한 없음

--x 실행 전용 권한

-w- 쓰기 전용 권한

-wx 쓰기 및 실행 권한

r-- 읽기 권한

r-x 읽기 및 실행 권한

rw- 읽기 및 쓰기 권한

rwx 읽기, 쓰기 및 실행 권한

'파일 권한 변경하기(chmod)'

다중 사용자 운영체제(Multi-User Operation System)의 특성상 파일 및 디렉터리의 접근 권한이 클라이언트 계정별로 관리되어야 한다고 했는데요. 권한의 변경이 필요한 경우에는 'chmod'(change mode) 명령어를 사용하여 변경합니다.

chmod [변경하고자 하는 권한 값] [파일 혹은 디렉토리] chmod [옵션] [사용자][설정기호][권한] [파일 혹은 디렉토리]

권한을 변경하는 'chmod' 명령어의 사용법에는 크게 두 가지가 있습니다.

1. 첫 번째로 기호를 통해 권한을 변경하는 방법입니다.

먼저 살펴볼 부분은 r, w, x는 위에서 본 것처럼 각 읽기, 쓰기, 실행을 나타내며 아래 추가적으로 필요한 기호가 있습니다.

+  :  권한 추가

-  : 권한 제거

=  :  권한 부여

u  : user의 약자, 소유자

g  : group의 약자, 소유 그룹

o  : other의 약자, 일반 사용자

a  :  all의 약자, 모든 사용자

(만약 문자가 없으면 'a'와 동일하게 적용됩니다.)

chmod a+x test.txt // 모든 사용자(a = all)에게 실행 권한(x)를 추가(+)합니다. chmod g-w test.txt // 소유 그룹(g = group)에게 쓰기 권한(w)를 제거(-)합니다. chmod u=rw test.txt // 소유자(u = user)에게 읽기(r), 쓰기(w) 권한을 부여합니다. chmod u-x,g+w,o+w test.txt // 소유자에게 실행 권한을 제거하고, 그룹에게 쓰기 권한을 추가하고, 나머지 사용자에게 쓰기 권한을 부여합니다.

위 방법을 사용해서 다음 예시들과 같이 권한 설정을 변경할 수 있으며, 마지막처럼 콤마( , )를 통해 단일 대상이 아닌 여러 대상에게도 권한을 적용할 수 있습니다.

2. 두 번째 방법인 숫자를 통해 권한을 변경하는 방법입니다.

r, w, x는 각 권한마다 부여된 고유의 숫자가 존재합니다. r = 4, w = 2, x = 1인데요.

앞에서 봤던 것처럼 권한은 총 9자리로 되어있고, 2-4 / 5-7 / 8-10 이렇게 3자리씩 3 부분으로 나눠져 있었습니다.

해당 방법은 하나의 그룹을 대표하는 숫자를 통해서 권한을 부여할 것이며, 각 그룹을 대표하는 숫자는 r, w, x 권한 여부를 모두 더한 값을 나타냅니다.

(r + w = 6,  r + x = 5,  w + x = 3)

chmod 777 test.txt // user, group, other에 대한 모든 권한을 추가합니다. chmod 743 test.txt // user에게는 모든 권한이 허용되고, group에게는 읽기 권한(r=4), other에게는 실행 권한(x=3)과 쓰기 권한(w=2)를 줍니다. chmod -R 700 project // -R 옵션을 사용하면 하위 디렉토리와 그 안의 파일 권한까지 모두 변경할 수 있습니다. // project 디렉토리 하위에 위치한 모든 파일 및 디렉토리에 user의 읽기, 쓰기, 실행 권한만 주고 나머지 권한은 다 제거합니다.

예시로 본 것처럼 해당하는 그룹(user, group, other)에 부여하고 싶은 권한의 고유 숫자 값을 모두 더한 값을 주는 방법입니다.

'-R' 옵션을 사용하면 하위 디렉터리와 그 안의 파일 권한까지 모두 변경할 수 있습니다.

'파일 소유자 변경하기'

chown [변경할 소유자] [변경할 파일]

마지막으로 파일의 소유자 변경입니다.

파일 소유자 변경은 'chown' 명령어를 통해 할 수 있고, [변경할 소유자] 부분에 ". 그룹 이름" 형식을 사용한다면 소유자뿐만 아니라 소유 그룹도 변경할 수 있습니다.

< 참고 자료 >

리눅스에는 파일 권한이 왜 있고, 권한 조회는 어떻게 하는가? 그리고 파일을 실행한다는 것은

주로 개인이 사용하는 윈도우즈 운영체제와는 다르게 여러 사용자들에게 서비스를 제공해주는 서버에는 다중 사용자 운영체제(Multi-User Operating System)가 사용되는데 대표적인 것이 유닉스 운영

Toplist

최신 우편물

태그