Linux에서 사용하는 폴더와 파일에는 권한이 있다.
권한은 Read, Write, Execute로 나뉜다.
프롬프트에서 js파일 생성
nano 파일명.js
ctrl
+ x
나가기
y
파일 저장 동의
프롬프트에 ls -l
을 입력하면 현재 위치에 있는 폴더와 파일들의 정보가 출력된다.
프롬프트에 출력된 내용을 예시로 들면
-rw-r--r--
drwxr-xr-x
임을 알 수 있다.
권한을 변경하는 명령어이다.
OS에 로그인한 사용자와 소유자가 같을 경우
chmod
명령어로 폴더나 파일의 읽기, 쓰기, 실행 권한을 변경할 수 있다.
소유자가 다를 경우 sudo
를 이용해 관리자 권한을 획득해 변경할 수 있다.
+
, -
, =
와 엑세서 유형을 표기하여 변경하는 방법
권한 클래스 | 연산자 | 권한 타입 |
---|---|---|
u (user) | + (권한 추가) | r (읽기) |
g (group) | - (권한 삭제) | w (쓰기) |
o (other) | = (권한 정하기) | x (실행) |
a (all) |
예시
chmod g-r filename # 그룹의 읽기 권한 삭제 chmod g+r filename # 그룹의 읽기 권한 추가 chmod o-w filename # 다른 사용자의 쓰기 권한 삭제 chmod o+w filename # 다른 사용자의 쓰기 권한 추가 chmod u-x filename # 사용자의 실행 권한 삭제 chmod u+x filename # 사용자의 실행 권한 추가 chmod a+rx filename # 모든 사용자의 읽기, 실행 권한 추가 chmod a=rw filename # 모든 사용자의 권한은 읽기, 쓰기 chmod o= filename # 다른 사용자의 권한은 없다.
숫자 7까지 나타내는 3bit의 합으로 표기하는 방법
권한 | 수 |
---|---|
Read | 4 |
Write | 2 |
Execute | 1 |
수의 합을 user, group, other 순으로 입력하여 사용한다.
예시
chmod 744 filename # -rwxr--r-- chmod 316 directoryname # d-wx--xrw-
API key와 같이 공개할 수 없는 정보를 코드에 포함시킬 수 없으므로 이를 방지하기 위해서는 API key를 PC에 저장해두고 사용해야 한다.
PC에서 사용하는 변수에 할당해 사용할 수 있다.
Linux 기반의 운영체제의 PC의 시스템에 설정한 전역변수를 환경변수라 한다.
프롬프트에 명령어 export
를 입력하면 현재 설정된 환경변수를 확인할 수 있다.
명령어 export
로 새로운 환경변수를 추가할 수 있다. (현재 사용중인 프롬프트에서만 임시로 사용이 가능하다.)
export 변수명="변수값"
명령어 echo
로 환경변수의 값을 확인할 수 있다.
echo $변수명
($는 변수라는 뜻이다.)
npm 모듈이며 JavaScript에서 환경변수를 사용할 수 있게 해준다.
- 폴더안으로 진입후
npm init
으로 npm을 init해준 후npm i dotenv
로 설치하면 된다.
폴더명은 모듈명과 같으면 안된다.
node.js의 내장 객체 process.env를 이용해 환경변수객체를 프롬프트에 출력할 수 있다.
node.js에서 파일 .env를 만들어 입력한 환경변수를 영구적용할 수 있다.
.env파일을 생성하고 사용하고자 하는 환경변수를 입력한 뒤 저장한다.
변수명=변수값
index.js를
require("dotenv").config();
console.log(process.env.변수명);
다음과 작성하고 실행하면
해당 변수명의 환경변수의 값이 출력된다.
환경변수를 이용해 API Key나 데이터베이스 password와 같이 민감한 정보를 저장하고 관리할 수 있다.
서로 다른 PC또는 여러 .env파일에서 같은 변수 이름에 다른 값을 할당할 수도 있다.
구글 API를 이용해 웹 어플리케이션을 만드는 경우
개발 환경에서는 개발자 개인의 API Key를 사용할 수 있다.
그러나 제품을 서비스할 때 개인 APi Key를 사용하면 일일요청량을 초과해 제품이 정상적인 동작을 할 수 없다.
이런 경우를 방지하기 위해 실제 제품에서는 기업용 API Key를 사용한다.
이처럼 개발 환경과 제품을 제공하는 환경에서 사용하는 API Key가 다른 경우,
환경변수를 이용해 환경을 구분하여 코드를 작성할 수 있다.
데이터베이스도 마찬가지로 환경을 구분해 코드를 작성할 수 있다.
예시
DATABASE_NAME=my_app_dev #개발환경에서 접근할 데이터베이스 DATABASE_NAME=my_app_test #테스트환경에서 접근할 데이터베이스 DATABASE_NAME=my_app_produvtion #제품환경에서 접근할 데이터베이스