[Linux] Linux 심화 학습

Yalstrax·2021년 7월 19일
4

Common

목록 보기
2/4
post-custom-banner

Linux 를 심화 학습하여 정리해보았습니다. 부족한 부분이 있다면 언제든지 피드백 부탁드립니다! 😘

사용 권한

Linux에서 사용하는 폴더와 파일은 권한이 있습니다.

  • 읽기(Read)
  • 쓰기(Write)
  • 실행(Execute)

이 세 가지 권한이 무엇이고, 어떻게 권한을 변경할 수 있을 지 확인해보겠습니다.

문자열을 출력하는 함수를 작성하고 저장합니다.

CLI에 명령어 ls -l을 입력하면 다음과 같은 출력을 만날 수 있습니다.


helloworld.js-rw-rw-r--이라 출력되었고, 폴더 linuxdrwx-rwxr-x-이라 출력되었습니다. 표현의 첫 시작인 -d는 각각 폴더(Directory)인지, 폴더가 아닌지를 나타냅니다.

폴더이면 d, 파일이면 -로 나타납니다.

이어지는 r,w,x는 각각 read, write, execute permission입니다.

3번에 걸쳐 나타나는 이유는 사용자 - 그룹 - 나머지 에 대한 권한을 표시합니다.

helloworld.js를 보면, 소유자와 그룹은 읽기와 쓰기가 가능하고, 나머지는 읽기만 가능합니다.

linux폴더는 사용자와 그룹은 읽기, 쓰기, 실행이 가능하고, 나머지는 읽기와 실행만 가능합니다.



user

  • user는 파일의 소유자입니다. 기본적으로 파일을 만든 사람이 소유자가 됩니다.

group

  • group에는 여러 user가 포함될 수 있습니다. 그룹에 속한 모든 user는 파일에 대한 동일한 group 액세스 권한을 갖습니다. 많은 사람이 파일에 액세스해야 하는 프로젝트가 있을 때, 각 user에게 일일이 권한을 할당하는 대신 모든 user를 group에 추가하고, 파일에 group 권한을 할당할 수 있습니다.

other

  • 파일에 대한 액세스 권한이 있는 다른 user입니다. 파일을 만들지 않은 다른 모든 user를 의미합니다. 따라서 other 권한을 설정하면, 해당 권한을 global 권한 이라 볼 수 있습니다.

chmod : 권한 변경


chmod 명령어로 폴더나 파일의 읽기, 쓰기, 실행 권한을 변경할 수 있습니다.

변경하는 방법은

  • 더하기(+), 빼기(-), 할당(=)과 액세서 유형을 표기해서 변경하는 Symbolic method입니다.
  • rwx를 3bit로 해석하여, 숫자 3자리로 권한을 표기해서 변경하는 Absolute form입니다.

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 & o)

다음과 같이 Symbolic method를 이용해 권한을 변경할 수 있습니다.

Absolute form

Absolute form은 숫자 7까지 나타내는 3 bits의 합으로 표기합니다.

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

만약, user는 rwx 를, 나머지는 r--로 권한을 변경하려고 한다면, 위 표에 나와있는 숫자의 합을 user, group, other 순으로 입력하여 사용합니다.


#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

위 표를 참고하여 권한을 변경할 수 있습니다.

(저는 Symbolic method가 더 편한 것 같습니다...)



환경 변수

API key와 같이 공개할 수 없는 정보가 코드에 포함된 경우, 네트워크를 통해 API key가 공개될 수 있습니다.

이를 방지하기 위해 API key를 PC에 저장해두고 사용해야하 합니다. Javascript 변수에 문자열을 할당하는 것 처럼, API key를 PC에서 사용하는 변수에 할당하고 사용할 수 있습니다.

Linux 기반의 운영체제의 PC에는 시스템 자체에 전역변수를 설정할 수 있습니다. 그리고 시스템에 설정한 전역변수를 환경변수 라고 합니다.

export를 이용해 환경변수를 설정할 수 있습니다.

터미널에 명령어 export 를 입력해, 이미 설정된 환경변수들을 확인할 수 있습니다.

새로운 환경변수를 추가할 때, 다음과 같이 터미널에 입력할 수 있습니다.

명령어 echo와 함께 환경변수를 입력하면 환경변수의 값을 확인할 수 있습니다. 변수 앞에 $를 입력하여 변수라는 뜻을 터미널에 알려줍니다.



dotenv: JS에서 환경변수 사용


위와 같이 터미널에 입력하는 것으로 npm 모듈 dotenv를 설치할 수 있습니다.

새로운 파일 index.js를 생성하고, process.env 를 출력합니다.

Node.js의 내장 객체 process.env를 이용하여 명령어 export 로 확인한 내용과 동일한 내용을 객체로 출력할 수 있습니다.


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

export 로 적용한 환경변수는 현재 사용 중인 터미널에서만 임시로 사용 가능합니다. Node.js는 파일 .env 를 만들어 환경변수를 Linux 운영체제에 저장할 수 있습니다.

.env 파일을 생성하고, 사용하고자 하는 환경변수를 입력하고 저장합니다.

그리고, index.js에 모듈 dotenv를 가져와 dotenv.config 메소드를 이용해 .envprovess.env에 적용할 수 있습니다.

index.js를 실행하는 것으로 변수에 할당한 값을 얻을 수 있습니다.

환경변수를 사용하여 API key, DB password와 같이 민감한 정보를 저장하고 관리할 수 있습니다.

개발 과정에서, 개발 환경 / 테스트 환경 / 서비스 환경이 있습니다.

예를 들어, 구글 API로 개발하는 경우, 개발 환경에서 개발자는 개인의 API key를 이용할 수 있습니다. 그러나, 서비스 환경에서 개인 API key를 사용하면, 일일 요청량을 초과하는 경우 제품이 정상적으로 동작하지 않습니다.

이런 경우를 방지하기 위해 서비스 환경에선 기업용 API key를 사용합니다.

개발환경과 서비스 환경에서 사용하는 API key가 다른데, 이를 환경변수를 이용해 환경을 구분하여 코드를 작성할 수 있습니다.

데이터베이스도 각기 다른 환경에 같은 변수 이름을 사용하여 데이터베이스를 구분할 수 있습니다.

profile
즐겁다면 그것만으로 만만세!
post-custom-banner

0개의 댓글