[Linux] Access Permission, Environmental Variable

Steve·2021년 6월 14일
0

웹개발 코스

목록 보기
40/59

Access permission
Environmental variable


Access Permission

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

chmod 명령어로 폴더나 파일의 w, r, e 권한을 변경한다.

  • OS에 로그인한 사용자와, 폴더나 파일의 소유자가 같을 경우에 명령어 chmod 로 폴더나 파일의 권한을 변경할 수 있다.
  • OS에 로그인한 사용자와 폴더나 파일의 소유자가 다를 경우에는 관리자 권한을 획득하는 명령어 sudo 를 이용해 폴더나 파일의 권한을 변경할 수 있다.

chmod 로 권한을 변경하는 방법은 두 가지가 있다.

1. Symbolic method

Access classOperatorAccess 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)

2. Absolute form

Absolute form 은 숫자 7까지 나타내는 3 bits의 합으로 표기한다.
사용자, 그룹, 또는 다른 사용자나 그룹마다 rwx 가 나타나고, 각 영역의 boolean 값으로 표기할 수 있다.

PermissionNumber
r4
w2
x1

예)
chmod 753 hello.js 을 symbolic method 로 하면
chmod u=rwx,g=rx,o=wx hello.js
와 같다. (콤마로 이어붙이기 가능)

Environmental Variable

API key 와 같이 공개할 수 없는 정보가 코드에 포함될 경우, 네트워크를 통해 API key 가 공개될 수 있다. 이런 일을 방지하기 위해서는, API key 를 PC 에 저장해두고 사용해야 한다. JavaScript 에서 변수에 문자열을 할당하는 것처럼, API key 를 PC 에서 사용하는 변수에 할당하고 사용할 수 있다.

JavaScript 에서 변수는 스코프에 따라 전역변수와 지역변수로 나뉜다. 그러나 파일 A 에서 전역변수로 선언하더라도, 다른 파일 B 에서 파일 A 의 전역변수에 접근할 수 없다. 그러나 파일 A 의 전역변수를 export 한다면, 파일 B 에서 A 의 전역변수로 접근할 수 있다.

Linux 기반의 운영체제의 PC 에는 시스템 자체에 전역변수를 설정할 수 있다. 그리고 시스템에 설정한 전역변수를 환경변수(environmental variable)라고 한다. export 를 이용해 환경변수를 설정할 수 있다.

  • PC에 저장된 환경변수 확인 - export
  • 새로운 환경변수 추가 export game="fun" (= 사이에 공백이 없어야 함)
  • 환경변수 값 확인 echo $game

dotenv 모듈: 자바스크립트에서 환경변수 사용하기

npm 모듈 dotenv 를 사용하면 자바스크립트에서 환경변수를 사용할 수 있다.
새로운 폴더를 만들고 npm init 한 뒤, npm i dotenv 를 설치한다. 이때 생성된 폴더는 설치할 모듈과 이름이 같으면 안된다.

index.js 를 생성하여 console.log(process.env) 를 하면 환경변수를 볼 수 있다

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

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
profile
게임과 프론트엔드에 관심이 많습니다.

0개의 댓글