3 minute read

이 공부를 시작한지 열흘정도 됐을 무렵

Terminal을 다루는 기초적인 방법을 공부했었다.

그때 나름 흥미를 갖고 열심히 했던 덕분인지

지금까지 Terminal을 사용하는데 큰 문제가 없었다.

물론 더 깊이 사용할만한 배움의 크기가 되지 않았을 수도 있다.

앞으로는 더 많은 내용을 배울 것이기 때문에,

Terminal의 조금 더 심화적인 내용을 배워보자.

폴더와 파일의 권한

→ 읽기(Read), 쓰기(Write), 실행(Execute)

CLI에서의 폴더와 파일

‘Linix’ 라는 폴더와 ‘helloworld.js’ 라는 파일이 들어있는 터미널 디렉토리에서

ls -l 을 입력하면 아래와 같이 출력된다.

-rw-r--r--  1 username staff 29 10 5 10:59 helloworld.js

drwxr-xr-x 2 username staff 64 10 5 10:59 Linux

이렇게 출력된 결과 중에서 가장 왼쪽의 결과를 보자.

파일은 -rw-r-—r-- 로 표현되었고,

폴더는 drwxr-xr-x 라고 표현되었다.

가장 첫 글자인 (-)와 (d)는 각각 not directory와 directory를 나타낸다.

즉, 폴더가 아닌 것(파일)과 폴더인 것으로 나타낸 것이다.

이어지는 r, w, x는 각각

read permission, write permission, execute permission 으로,

읽기 권한, 쓰기 권한, 실행 권한을 나타낸다.

보다시피 3번에 걸쳐서 나타내는데, 각각 사용자, 그룹, 나머지에 대한 권한이다.

아래 그림을 보면 이해하기 쉽다.

사용자(user)

→ 파일의 소유자, 기본적으로 파일을 만든 사람

그룹(group)

→ 여러 user가 포함될 수 있다. 그룹에 속한 모든 user는 파일에 대한 동일한 액세스 권한을 갖는다.

나머지(other)

→ 파일에 대한 액세스 권한이 있는 다른 user. 파일을 만들지 않은 다른 모든 user를 의미한다.

폴더 및 파일의 권한 변경

chmod 명령어를 통해 폴더나 파일의 읽기, 쓰기, 실행 권한을 변경할 수 있다.

OS에 로그인한 사용자와, 폴더나 파일의 소유자가 같을 경우 권한 변경이 가능하다.

만약 OS에 로그인한 사용자와, 폴더나 파일의 소유자가 다를 경우에는 관리자 권한을 임시로

획득하는 명령어인 sudo 를 이용해 권한 변경이 가능하다.

( sudo 말고, su란? → switch user의 약자로, 계정을 전환하는 명령어 )

→ su namhun

chmod로 권한을 변경하는 두가지 방식

  • 더하기(+), 빼기(-), 할당(=)과 액세서 유형을 표기해서 변경하는 Symbolic method
  • -rwx를 3bit로 해석하여 숫자 3자리로 권한을 표기해서 변경하는 Absolute form

Symbolic method

기본 상태 -rw-r–r– 인 helloworld.js 파일을 기준으로,

chmod g+w helloworld.js => -rw-rw-r--
chmod u+x helloworld.js => -rwx-rw-r--
chmod o-r helloworld.js => -rwx-rw----
chmod a=rw helloworld.js => -rw-rw-rw-
chmod a= helloworld.js => ----------
chmod u=rw helloworld.js => -rw-------

Absolute form

Read(r) 를 4,

Write(w) 를 2,

Execute(x) 를 1로 나타낸다.

rwx를 나타내고 싶을땐 4 + 2 + 1 이므로 7,

rw를 나타내고 싶을땐 4 + 2 + 0 이므로 6,

r을 나타내고 싶을땐 4 + 0 + 0 이므로 4,

rx를 나타내고 싶을땐 4 + 0 + 1 이므로 5,

wx를 나타내고 싶을땐 0 + 2 + 1 이므로 3이다.

만약 ———- 상태인 helloworld.js 파일을

-rw-r–r–로 변경하고 싶을땐,

chmod 644 helloworld.js 라고 입력한다.

환경변수

A파일에 선언된 전역변수를 B파일에서 읽고싶다면,

A파일에서 export하고, B파일에서 require를 한 뒤 읽어낸다.

PC에서 이와 같은 역할을 하는 환경변수를 저장하는 방법을 알아보자.

터미널에 export 를 입력하면 현재 기록된 환경변수를 확인할 수 있고, 새로 저장도 할 수 있다.

export urclass=’is good’ 라고 입력하면, 새로운 환경변수가 저장된다.

이 때, (=)의 앞뒤는 반드시 공배이 없어야한다.

echo $환경변수명 을 입력하면, 값을 확인할 수 있다.

npm 모듈 dotenv로 환경변수 사용하기

새로운 폴더에 npm init을 입력하고, npm i dotenv를 입력해 모듈을 설치한다.

새로운 파일 index.js를 생성하고, 해당 파일 안에 console.log(process.env)를 입력한 뒤,

터미널에 node index.js를 입력하면 환경변수를 객체로 받아온다.

.env 파일을 이용해 Node.js에서 환경변수 영구 적용

export로 적용한 환경변수는 현재 터미널에서 임시적으로만 사용 가능하기 때문에,

.env 파일을 만들어 사용하고자 하는 환경변수를 입력한 뒤 저장해서 영구적으로 적용한다.

index.js파일의 내용을

const dotenv = require("dotenv");
dotenv.config();
console.log(process.env.myname);

위와 같이 저장해주고, node index.js로 출력을 하면

.env 파일에서 적용한 환경변수 kimcoding이 출력된다.

(위에서 설명했다시피, Javascript에서 다른 파일의 전역변수를 사용하고자 할 때, 해당 파일을 export하고,

require하는 것과 같은 원리)

환경변수 사용처

환경변수를 사용하면 API key, DB password와 같은 민감한 정보를 저장하고 관리할 수 있다.

또한 다른 PC 또는 여러 .env 파일에서 같은 변수 이름에 다른 값을 할당할 수 있다.

.env.는 민감한 정보가 들어있기 때문에 절대 git 또는 네트워크에 올리면 안되고,

git 에 올릴때는 .gitignore라는 파일을 만들고, .env라는 내용을 적어

.env파일이 gitr에 업로드 되지 않게 한다.

Updated: