TIL 44일차

안광의·2021년 8월 23일
0

Today I Learned

목록 보기
44/64
post-thumbnail
post-custom-banner

시작하며

오늘은 Section 3를 처음 시작하는 날로 사용 권한과 환경 변수에 관련한 내용을 학습하였다. 일정에 여유가 있어서 오늘 배운 내용을 복습하는 것 외에 앞으로 배울 내용을 살펴보고 미리 학습하면 좋을 내용이 있을지 찾아보았다.

Linux

사용 권한


r, w, x는 각각 read permission, write permission, execute permission으로 읽기 권한, 쓰기 권한, 실행 권한을 나타낸다. 3번에 걸쳐 나타나는 이유는 사용자와 그룹, 나머지에 대한 권한을 표시하기 때문이고 rw-r--r--를 예로 들면, 소유자는 읽기와 쓰기가 가능하고, 다른 사용자 그룹은 읽기만 가능하다는 의미이다.

  • user : 파일의 소유자이고 기본적으로 파일을 만든 사람이 소유자가 된다.
  • group : group에는 여러 user가 포함될 수 있으며, 그룹에 속한 모든 user는 파일에 대한 동일한 group 액세스 권한을 갖는다. 많은 사람이 파일에 액세스해야 하는 프로젝트가 있다고 가정할 때, 각 user에게 일일이 권한을 할당하는 대신에 모든 user를 group에 추가하고, 파일에 group 권한을 할당할 수 있다.
  • other : 파일에 대한 액세스 권한이 있는 다른 user를 말하며, 파일을 만들지 않은 다른 모든 user를 의미한다. 따라서 other 권한을 설정하면, 해당 권한을 global 권한 설정이라고 볼 수도 있다.

chmod

명령어 chmod 폴더나 파일의 읽기, 쓰기, 실행 권한을 변경할 수 있고 OS에 로그인한 사용자와, 폴더나 파일의 소유자가 같을 경우에 명령어 chmod로 폴더나 파일의 권한을 변경할 수 있다.

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: u, g, and o)

사용예시

chmod g-r filename # removes read permission from group
chmod g+r filename # adds read permission to group
chmod g-w filename # removes write permission from group
chmod g+w filename # adds write permission to group
chmod g-x filename # removes execute permission from group
chmod g+x filename # adds execute permission to group
chmod o-r filename # removes read permission from other
chmod o+r filename # adds read permission to other
chmod o-w filename # removes write permission from other
chmod o+w filename # adds write permission to other
chmod o-x filename # removes execute permission from other
chmod o+x filename # adds execute permission to other
chmod u+x filename # adds execute permission to use

Absolute form

PermissionNumber
Read (r)4
Write (w)2
Execute (x)1

#SumrwxPermission
74(r) + 2(w) + 1(x)rwxread, write and execute
64(r) + 2(w) + 0(-)rw-read and write
54(r) + 0(-) + 1(x)r-xread and execute
44(r) + 0(-) + 0(-)r--read only
30(-) + 2(w) + 1(x)-wxwrite and execute
20(-) + 2(w) + 0(-)-w-write only
10(-) + 0(-) + 1(x)--xexecute only
00(-) + 0(-) + 0(-)---none

사용예시

chmod 744 filename # rwxr--r--
chmod 040 filename # ---r-----
chmod 421 filename # r---w---x

환경 변수

Linux 운영체제에는 이미 많은 환경변수가 설정되어 있고 터미널에 명령어 export 를 입력해, 기록된 환경변수를 확인할 수 있다.

명령어 export 를 이용하면, 새로운 환경변수를 추가할 수 있습니다. 이 때 등호 표시(Equal sign, =) 앞뒤에는 반드시 공백이 없어야 한다.

dotenv
npm 모듈 dotenv를 사용하면, 자바스크립트에서 환경변수를 사용할 수 있다. 설치한 dotenv를 이용해 환경변수에 접근할 수 있으며, 새로운 파일 index.js를 생성하고, process.env 를 출력할 수 있다. Node.js의 내장 객체 process.env를 이용하면, 명령어 export 로 확인한 내용과 동일한 내용을 객체로 출력한다.

mkdir environment_variable
cd environment_variable
npm init # 엔터 키를 여러번 입력해 init을 마친다.
npm i dotenv # dotenv 모듈을 설치한다.

.env: Node.js에서 환경변수 영구 적용
명령어 export 로 적용한 환경변수는 현재 사용 중인 터미널에서만 임시로 사용이 가능하다. 환경변수를 Linux 운영체제에 저장하는 방법은 여러 가지가 있지만, Node.js에서는 파일 .env를 만들어 저장하는 방법을 사용할 수 있다.

먼저 .env 파일을 생성하고, 사용하고자 하는 환경변수를 입력한 뒤 저장한 후, 모듈 dotenv를 이용하면 파일 .env에 저장한 환경변수를 조회할 수 있다.

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

환경변수를 이용해 API key, DB password와 같이 민감한 정보를 저장하고 관리할 수 있으며, 서로 다른 PC 또는 여러 .env 파일에서, 같은 변수 이름에 다른 값을 할당할 수 있다.

마치며

Section 3의 첫 날은 어렵거나 복잡한 개념없이 가볍게 학습하고 있을 만한 내용이었던 것 같다. 예전에 안드로이드 스마트폰이 등장한 초창기에 루팅(최상위 권한을 얻는 행위)을 통해서 기본앱 삭제, 테마 변경, 커스텀 펌웨어 설치 등을 하는 것이 유행이였는데, 그때 설치하고자 하는 파일을 644 퍼미션으로 변경한 적이 있다. 그때는 권한에 대한 개념없이 가이드를 보고 따라한 것 뿐이였는데, 지금 학습해보니 왜 이런 절차가 필요했는 지 알 수 있었다.

profile
개발자로 성장하기
post-custom-banner

0개의 댓글