Linux 를 심화 학습하여 정리해보았습니다. 부족한 부분이 있다면 언제든지 피드백 부탁드립니다! 😘
Linux에서 사용하는 폴더와 파일은 권한이 있습니다.
이 세 가지 권한이 무엇이고, 어떻게 권한을 변경할 수 있을 지 확인해보겠습니다.
문자열을 출력하는 함수를 작성하고 저장합니다.
CLI에 명령어 ls -l
을 입력하면 다음과 같은 출력을 만날 수 있습니다.
helloworld.js
는 -rw-rw-r--
이라 출력되었고, 폴더 linux
는 drwx-rwxr-x-
이라 출력되었습니다. 표현의 첫 시작인 -
와 d
는 각각 폴더(Directory)인지, 폴더가 아닌지를 나타냅니다.
폴더이면 d
, 파일이면 -
로 나타납니다.
이어지는 r,w,x
는 각각 read
, write
, execute
permission
입니다.
3번에 걸쳐 나타나는 이유는 사용자 - 그룹 - 나머지 에 대한 권한을 표시합니다.
helloworld.js
를 보면, 소유자와 그룹은 읽기와 쓰기가 가능하고, 나머지는 읽기만 가능합니다.
linux
폴더는 사용자와 그룹은 읽기, 쓰기, 실행이 가능하고, 나머지는 읽기와 실행만 가능합니다.
user
group
other
chmod
명령어로 폴더나 파일의 읽기, 쓰기, 실행 권한을 변경할 수 있습니다.
변경하는 방법은
Access class | Operator | Access Type |
---|---|---|
u (user) | + (add access) | r (read) |
g (group) | - (remove access) | w (write) |
o (other) | = (set exact access) | x (execute) |
a (all: u,g & o) |
다음과 같이 Symbolic method를 이용해 권한을 변경할 수 있습니다.
Absolute form은 숫자 7까지 나타내는 3 bits의 합으로 표기합니다.
Permission | Number |
---|---|
r (Read) | 4 |
w (Write) | 2 |
x (Execute) | 1 |
만약, user는 rwx
를, 나머지는 r--
로 권한을 변경하려고 한다면, 위 표에 나와있는 숫자의 합을 user, group, other 순으로 입력하여 사용합니다.
# | Sum | rwx | Permission |
---|---|---|---|
7 | 4(r) + 2(w) + 1(x) | rwx | read, write and execute |
6 | 4(r) + 2(w) + 0(-) | rw- | read and write |
5 | 4(r) + 0(-) + 1(x) | r-x | read and execute |
4 | 4(r) + 0(-) + 0(-) | r-- | read only |
3 | 0(-) + 2(w) + 1(x) | -wx | write and execute |
2 | 0(-) + 2(w) + 0(-) | -w- | write only |
1 | 0(-) + 0(-) + 1(x) | --x | execute only |
0 | 0(-) + 0(-) + 0(-) | --- | none |
위 표를 참고하여 권한을 변경할 수 있습니다.
(저는 Symbolic method가 더 편한 것 같습니다...)
API key와 같이 공개할 수 없는 정보가 코드에 포함된 경우, 네트워크를 통해 API key가 공개될 수 있습니다.
이를 방지하기 위해 API key를 PC에 저장해두고 사용해야하 합니다. Javascript 변수에 문자열을 할당하는 것 처럼, API key를 PC에서 사용하는 변수에 할당하고 사용할 수 있습니다.
Linux 기반의 운영체제의 PC에는 시스템 자체에 전역변수를 설정할 수 있습니다. 그리고 시스템에 설정한 전역변수를 환경변수 라고 합니다.
export
를 이용해 환경변수를 설정할 수 있습니다.
터미널에 명령어 export
를 입력해, 이미 설정된 환경변수들을 확인할 수 있습니다.
새로운 환경변수를 추가할 때, 다음과 같이 터미널에 입력할 수 있습니다.
명령어 echo
와 함께 환경변수를 입력하면 환경변수의 값을 확인할 수 있습니다. 변수 앞에 $
를 입력하여 변수라는 뜻을 터미널에 알려줍니다.
위와 같이 터미널에 입력하는 것으로 npm 모듈 dotenv를 설치할 수 있습니다.
새로운 파일 index.js를 생성하고, process.env
를 출력합니다.
Node.js의 내장 객체 process.env
를 이용하여 명령어 export
로 확인한 내용과 동일한 내용을 객체로 출력할 수 있습니다.
export
로 적용한 환경변수는 현재 사용 중인 터미널에서만 임시로 사용 가능합니다. Node.js는 파일 .env
를 만들어 환경변수를 Linux 운영체제에 저장할 수 있습니다.
.env
파일을 생성하고, 사용하고자 하는 환경변수를 입력하고 저장합니다.
그리고, index.js에 모듈 dotenv를 가져와 dotenv.config
메소드를 이용해 .env
를 provess.env
에 적용할 수 있습니다.
index.js를 실행하는 것으로 변수에 할당한 값을 얻을 수 있습니다.
환경변수를 사용하여 API key, DB password와 같이 민감한 정보를 저장하고 관리할 수 있습니다.
개발 과정에서, 개발 환경 / 테스트 환경 / 서비스 환경이 있습니다.
예를 들어, 구글 API로 개발하는 경우, 개발 환경에서 개발자는 개인의 API key를 이용할 수 있습니다. 그러나, 서비스 환경에서 개인 API key를 사용하면, 일일 요청량을 초과하는 경우 제품이 정상적으로 동작하지 않습니다.
이런 경우를 방지하기 위해 서비스 환경에선 기업용 API key를 사용합니다.
개발환경과 서비스 환경에서 사용하는 API key가 다른데, 이를 환경변수를 이용해 환경을 구분하여 코드를 작성할 수 있습니다.
데이터베이스도 각기 다른 환경에 같은 변수 이름을 사용하여 데이터베이스를 구분할 수 있습니다.