210719. Today I Learned(TIL) : Linux 심화(사용 권한, 환경변수)
사용 권한
Read, Write, Execute 권한
폴더인가 파일인가
ls -l
위와 같이 명령어를 입력하면 pc 내의 디렉토리와 파일의 목록을 보여준다.
-
터미널 출력 결과를 살펴보면, 가장 왼쪽의
drwxr-xr-x
와-rw-r--r--
를 확인할 수 있다.drwxr-xr-x
에서 이 출력 결과의 첫 시작 글자인d
가 directory임을 알려주고-rw-r--r--
에서 이 출력 결과의 첫 시작 글자인-
는 directory가 아님(not directory)을 알려준다. -
그 다음으로 이어지는
rwx
는 각각
r | read permission |
w | write permission |
x | execute permission |
위 표와 같은 권한을 나타낸다. rw-r--r--
는 즉, 소유자는 읽기와 쓰기가 가능하고, 다른 사용자 그룹과 그 외는 읽기만 가능하다는 의미이다.
user, group, and other
user:
- user는 파일의 소유자이다. 기본적으로 파일을 만든 사람이 소유자가 된다.
group
- group에는 여러 user가 포함될 수 있다. 그룹에 속한 모든 user는 파일에 대한 동일한 group 액세스 권한을 갖는다. 많은 사람이 파일에 접근해야 하는 프로젝트일 경우 각 user에게 일일이 권한을 부여하는 대신, 모든 user를 group에 추가하고 파일에 group 권한을 부여할 수 있다.
other
- 파일에 대한 액세스 권한이 있는 다른 user이다. 파일을 만들지 않은 다른 모든 user를 의미하며, 해당 권한을 global 권한 설정이라고 볼 수도 있다.
chmod: 권한을 변경하는 명령어
명령어 chmod
는 폴더나 파일의 읽기, 쓰기, 실행 권한을 변경할 수 있다. OS에 로그인한 사용자와, 폴더나 파일의 소유자가 같을 경우에 명령어 chmod
로 폴더나 파일의 권한을 변경할 수 있다. 만약 OS에 로그인한 사용자와, 폴더나 파일의 소유자가 다를 경우에는 관리자 권한을 획득하는 명령어 sudo
를 이용해 폴더나 파일의 권한을 변경할 수 있다.
명령어 chmod
로 권한을 변경하는 방법은 두 가지가 있다.
- 첫 번째는 더하기(+), 빼기(-), 할당(=)과 액세서 유형을 표기해서 변경하는 Symbolic method
- 두 번째는 rwx를 3 bits로 해석하여, 숫자 3자리로 권한을 표기해서 변경하는 Absolute form
Symbolic method는 액세스 클래스, 연산자, 액세스 타입으로 구분한다.
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: u, g, and o) |
chmod g-r {filename} // removes read permission from group
chmod g+r {filename} // adds read permission to group
chmod o+x {filename} // adds execute permission to other
chmod u-w {filename} // removes write permission to user
chmod a=rw {filename} // allocate read and write permission to all # -rw-rw-rw-
chmod u= {filename} // allocate nothing to user # ----rw-rw-r
chmod a= {filename} // allocate nothing to all # ----------
액세스 클래스와 연산자, 액세스 타입을 모두 기억해야만 Symbolic method를 이용해 권한을 변경할 수 있다.
Absolue form은 숫자 7까지 나타내는 3 bits의 합으로 표기한다.
사용자, 그룹, 또는 다른 사용자나 그룹마다 rwx
가 나타나고, 각 영역의 boolean 값으로 표기할 수 있다.
permission | Number |
---|---|
Read(r) | 4 |
Write(w) | 2 |
Execute(x) | 1 |
권한을 변경하려고 한다면, 위 표에 나와있는 숫자의 합을 user, group, other 순으로 입력하여 사용한다.
// u=rwx (4 + 2 + 1 = 7), go=r (4 + 0 + 0 = 4)
chmod 744 {filename} // -rwxr--r--
# | Sum | rwx | permission |
---|---|---|---|
7 | 4(r) + 2(w) + 1(x) | rwx | read, write and execute |
6 | 4(r) + 2(w) + 0(-) | rw- | read and write |
5 | 4(r) + 0(-) + 1(x) | r-x | read and execute |
4 | 4(r) + 0(-) + 0(-) | r-- | read only |
3 | 0(-) + 2(w) + 1(x) | -wx | write and execute |
2 | 0(-) + 2(w) + 0(-) | -w- | write only |
1 | 0(-) + 0(-) + 1(x) | --x | execute only |
0 | 0(-) + 0(-) + 0(-) | --- | none |
환경변수
Linux 기반의 운영체제의 PC에는 시스템 자체에 전역변수를 설정할 수 있다. 그리고 이 시스템에 설정한 전역변수를 환경변수라 한다. 환경변수는 명령어 export
를 이용해 설정할 수 있다.
export: 환경변수 확인하기 && 환경변수 임시 적용
터미널에 명령어 export
를 입력해 기록된 환경변수를 확인할 수 있다.
명령어 export
를 이용하여 새로운 환경변수를 추가할 수 있다.
export urclass="is good" // 등호 표시(=) 앞 뒤에는 반드시 공백이 없어야 한다.
명령어 echo
와 함께 환경변수를 입력하면 환경변수의 값을 확인할 수 있다. 이때 환경변수의 앞에는 달러사인($)을 입력하여 변수라는 뜻을 터미널에 전달한다.
dotenv: 자바스크립트에서 환경변수 사용하기
npm 모듈 dotenv를 사용하면 자바스크립트에서 환경변수를 사용할 수 있다.
dotenv 모듈은 다음 명령어들로 설치할 수 있다.
mkdir environment_variable // 모듈을 설치할 새 디렉토리를 만들어준다.
cd environment_variable // 디렉토리로 이동한다.
npm init // 엔터 키를 여러번 입력해 init을 마친다.
npm i dotenv // 모듈 설치, 생성된 폴더는 설치할 모듈과 이름이 같으면 안됨.
새로운 파일 index.js를 생성하고 process.env
를 출력한다(console.log(process.env)
). Node.js의 내장 객체 process.env
를 이용하면 명령어 export
로 확인한 내용과 동일한 내용을 객체로 출력한다.
process.env
는 Node.js 환경에서 조회할 수 있다.- dotenv는 이어지는 콘텐츠 .env 파일을 환경변수로 사용할 수 있게 돕느다.
.env: Node.js에서 환경변수 영구 적용
명령어 export
로 적용한 환경변수는 현재 사용 중인 터미널에서만 임시로 사용이 가능하다. 환경변수를 Linux 운영ㅇ체제에 저장하는 방법은 여러 가지가 있지만 Node.js에서는 파일 .env를 만들어 저장하는 방법을 사용한다.
먼저 .env 파일을 생성하고, 사용하고자 하는 환경변수를 입력한 뒤 저장한다.
environment_variable nano .env
environment_variable cat . env
myname=sunryeo
모듈 dotenv를 이용하면 파일 .env에 저장한 환경변수를 조회할 수 있다. index.js를 다음과 같이 수정하고 저장한 후 실행하면 아래와 같은 결과를 얻을 수 있다.
const dotenv = require("dotenv");
dotenv.config();
console.log(process.env.myname);
결과
환경변수를 이용해 API key, DB, password와 같이 민감한 정보를 저장하고 관리할 수 있다. 그뿐만 아니라 서로 다른 PC 또는 여러 .env 파일에서 같은 변수 이름에 다른 값을 할당할 수 있다.
Author And Source
이 문제에 관하여(210719. Today I Learned(TIL) : Linux 심화(사용 권한, 환경변수)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@elma98/210719.-Today-I-LearnedTIL-Linux-심화사용-권한-환경변수저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)