Access permission
Environmental variable
cli 에서 ls -l
을 치면 파일/폴더가 다음과 같이 나온다.
-rw-r--r-- 1 horyongjung staff 29 6 14 10:08 helloworld.js
drwxr-xr-x 2 horyongjung staff 64 6 14 10:07 linux
첫번째 - 혹은 d: directory or not
user(rwx), group(rwx), other(rwx)
r: read permission
w: write permission
x: execute permission (폴더는 executable)
1. user:
user는 파일의 소유자이다. 기본적으로 파일을 만든 사람이 소유자가 된다.
2. group:
group에는 여러 user가 포함될 수 있다.
그룹에 속한 모든 user는 파일에 대한 동일한 group 액세스 권한을 갖는다.
많은 사람이 파일에 액세스해야 하는 프로젝트가 있다면
각 user에게 일일이 권한을 할당하는 대신에 모든 user를 group에 추가하고
파일에 group 권한을 할당할 수 있다.
3. other:
파일에 대한 액세스 권한이 있는 다른 user 이다.
파일을 만들지 않은 다른 모든 user를 의미한다.
따라서 other 권한을 설정하면, 해당 권한을 global 권한 설정이라고 볼 수도 있다.
chmod
명령어로 폴더나 파일의 w
, r
, e
권한을 변경한다.
chmod
로 폴더나 파일의 권한을 변경할 수 있다.sudo
를 이용해 폴더나 파일의 권한을 변경할 수 있다.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) | '' (no anything) |
예)
chmod ug+wx hello.js
user, group -> w, x
chmod all= hello.js
all -> nothing(remove everything)
Absolute form 은 숫자 7까지 나타내는 3 bits의 합으로 표기한다.
사용자, 그룹, 또는 다른 사용자나 그룹마다 rwx 가 나타나고, 각 영역의 boolean 값으로 표기할 수 있다.
Permission | Number |
---|---|
r | 4 |
w | 2 |
x | 1 |
예)
chmod 753 hello.js
을 symbolic method 로 하면
chmod u=rwx,g=rx,o=wx hello.js
와 같다. (콤마로 이어붙이기 가능)
API key 와 같이 공개할 수 없는 정보가 코드에 포함될 경우, 네트워크를 통해 API key 가 공개될 수 있다. 이런 일을 방지하기 위해서는, API key 를 PC 에 저장해두고 사용해야 한다. JavaScript 에서 변수에 문자열을 할당하는 것처럼, API key 를 PC 에서 사용하는 변수에 할당하고 사용할 수 있다.
JavaScript 에서 변수는 스코프에 따라 전역변수와 지역변수로 나뉜다. 그러나 파일 A 에서 전역변수로 선언하더라도, 다른 파일 B 에서 파일 A 의 전역변수에 접근할 수 없다. 그러나 파일 A 의 전역변수를 export 한다면, 파일 B 에서 A 의 전역변수로 접근할 수 있다.
Linux 기반의 운영체제의 PC 에는 시스템 자체에 전역변수를 설정할 수 있다. 그리고 시스템에 설정한 전역변수를 환경변수(environmental variable)라고 한다. export
를 이용해 환경변수를 설정할 수 있다.
export
export game="fun"
(= 사이에 공백이 없어야 함)$game
npm 모듈 dotenv 를 사용하면 자바스크립트에서 환경변수를 사용할 수 있다.
새로운 폴더를 만들고 npm init 한 뒤, npm i dotenv 를 설치한다. 이때 생성된 폴더는 설치할 모듈과 이름이 같으면 안된다.
index.js 를 생성하여 console.log(process.env)
를 하면 환경변수를 볼 수 있다
export
명령어로 만든 환경변수는 현재 사용 중인 터미널에서만 임시로 사용이 가능하기 때문에 Node.js 환경에서 환경변수를 영구적으로 만드려면 .env 파일을 만든다.
먼저 .env 파일을 생성하고 사용하고자 하는 환경변수를 입력한 뒤 저장한다.
game=fun
dotenv 모듈로 .env 에 저장한 환경변수를 조회할 수 있다.
const dotenv = require("dotenv");
dotenv.config();
console.log(process.env.game);
환경변수를 이용해 API key, DB password 와 같이 민감한 정보를 저장하고 관리할 수 있다. 그뿐만 아니라 서로 다른 PC 또는 여러 .env 파일에서 같은 변수 이름에 다른 값을 할당할 수 있다.
예를 들면 개발 환경, 테스트 서버 환경, 배포 환경마다 다른 데이터베이스를 사용하도록 만들 수 있다.
# 개발환경에서 사용할 데이터베이스
DATABASE_NAME=app_dev
# 테스트환경에서 사용할 데이터베이스
DATABASE_NAME=app_test
# 제품환경에서 사용할 데이터베이스
DATABASE_NAME=app_production