리눅스 사용 권한
-rw-r--r--
-
: 파일을 의미
rw
: 읽기 권한, 쓰기 권한
drwxr-xr-x
d
: 폴더를 의미
rwx
: 읽기 권한, 쓰기 권한, 실행 권한
- CLI에서 파일을 보거나, 수정하거나, 실행할 때에는 권한이 필요
- Linux에서 사용하는 폴더와 파일의 권한 : 읽기(Read), 쓰기(Write), 실행(Execute)
*r, w, x는 각각 read permission(읽기 권한), write permission(편집 권한), execute permission(실행 권한)
1. 폴더나 파일의 권한 정보
*없는 권한은 -
로 표시
owner (user)
- 파일의 소유자
group
- owner(파일의 소유자)에게 권한을 부여받은 user의 권한
- 여러 user가 포함될 수 있음
- 그룹에 속한 모든 user는 파일에 대한 동일한 group 액세스 권한 보유
other
- 초대받지 못한 손님의 권한
- 파일에 대한 액세스 권한이 있는 다른 user로, 파일을 만들지 않은 다른 모든 user를 의미
- other 권한 설정 : global 권한 설정
2. 권한을 변경하는 명령어
chmod
: 폴더나 파일의 읽기, 쓰기, 실행 권한 변경 가능- OS에 로그인한 사용자와 폴더나 파일의 소유자가 같을 경우 해당 명령어 사용 가능
*OS에 로그인한 사용자와 폴더나 파일의 소유자가 다를 경우 sudo를 이용해 관리자 권한을 획득하여 폴더나 파일의 권한을 변경 chmod
로 권한을 변경하는 방식 : Symbolic method, Absolute form
Symbolic method
chmod ug+r filename
: adds read permission to user and groupchmod o-wx filename
: removes write and execute permission from otherchmod u+x filename
: adds execute permission to userchmod a=rw filename
: sets read and write permission to allchmod u= filename
: sets nothing to user
- 더하기(
+
), 빼기(-
), 할당(=
)과 액세서 유형을 표기해서 변경하는 방식 - 액세스 클래스, 연산자, 액세스 타입으로 구분
- chmod 뒤에 변경할 권한을 입력 : 액세스 클래스의 u, g, o, a를 변경할 조건에 따라 조합하여 입력하고, 연산자와 액세스 타입을 순서대로 입력
Absolute form
user는 rwx 를, group과 other은 r-- 로 권한을 변경 : -rwxr--r--chmod 744 filename
: u=rwx (4 + 2 + 1 = 7), go=r (4 + 0 + 0 = 4)
- rwx를 3 bit로 해석하여, 숫자 3자리로 권한을 변경하는 방식으로 숫자 7까지 나타내는 3 bits의 합으로 표기
- 숫자의 합을 user, group, other 순으로 입력하여 사용
- user는 rwx 를, group과 other은 r-- 로 권한을 변경 : -rwxr--r--
- chmod 744 filename : u=rwx (4 + 2 + 1 = 7), go=r (4 + 0 + 0 = 4)
리눅스의 환경변수
- API key와 같이 공개할 수 없는 정보가 코드에 포함될 경우 네트워크를 통해 API key가 공개될 위험 존재하기에 이를 방지하기 위해 API key를 PC에 저장해두고 사용
*JavaScript에서 변수에 문자열을 할당하는 것처럼, API key를 PC에서 사용하는 변수에 할당하고 사용 - JavaScript에서 변수 : 스코프에 따라 전역변수와 지역변수로 구분
*파일 A에서 전역변수로 선언하더라도, 다른 파일 B에서 파일 A의 전역변수에 접근할 수 없으나, 파일 A의 전역변수를 export 한다면 파일 B에서 파일 A의 전역변수에 접근 가능 - Linux 기반의 운영체제의 PC는 시스템 자체에 전역변수 설정이 가능한데, 이 때 시스템에 설정한 전역변수를 환경변수라 함
환경변수 확인하기
- Linux 운영체제에는 이미 많은 환경변수가 설정되어 있음
- 터미널에 명령어
export
를 입력해 현재 설정된 환경변수 확인 - 대소문자를 구분하여 서로 다른 환경변수라고 인식
환경변수 임시 적용
export DesPair=Ukkikki
#export 환경변수명=값(파일경로)
#등호 표시(Equal sign, =) 앞뒤에는 반드시 공백이 없어야 함
echo $DesPair
#Ukkikki
#환경변수의 앞에 달러사인($)을 입력하여 변수라는 뜻을 터미널에 전달
- 임시 적용한 환경변수는 시스템을 재부팅하거나 재로그인하면 사라짐
*export
로 적용한 환경변수는 현재 사용 중인 터미널에서만 임시로 사용이 가능
환경변수 영구 적용
#/etc/bash.bashrc 파일수정 (모든 사용자 영구 적용)
/etc/bash.bashrc export DesPair=Ukkikki
#특정 사용자에게 적용
#/home/사용자명/.bashrc 파일수정
#/home/Banana/.bashrc export DesPair=Ukkikki
bash
: Bourne Ahain Shell의 축약어로 리눅스에서 가장 널리 사용되는 쉘~./bashrc
: 별칭(alias)과 수행될 때 실행되는 함수를 제어하는 지역적인 시스템 설정과 관련된 파일
이들 별칭과 함수들은 오직 해당 사용자에게만 한정되며, 다른 사용자에겐 영향을 미치지 않는다./etc/bashrc
:~/.bashrc
가 개인용 환경 설정이라면/etc/bashrc
는 모든 사용자에게 영향을 미치는 환경 설정 파일
환경변수 해제
#unset 환경변수명
unset Despair
자바스크립트에서 환경변수 사용
dotenv 설치
모듈을 설치할 폴더 만들기 : mkdir environment\\\_variable
해당 폴더로 이동 : cd environment\\\_variable
npm init으로 package.json 파일 작성 : npm init
dotenv 모듈을 설치 : npm i dotenv
- npm 모듈
dotenv
를 사용하면 자바스크립트에서 환경변수를 사용할 수 있음
dotenv를 이용해 환경변수에 접근하기
dotenv를 설치한 폴더에 새로운 파일 index.js를 생성 : nano index.js
nano 편집기로 열린 index.js에 console.log(process.env)
입력
Node.js 환경에서 process.env 조회 : node index.js
- process.env : Node.js의 내장 객체로, 이를 이용하면
export
로 확인한 내용과 동일한 내용을 객체로 출력 가능 - process.env는 Node.js 환경에서 조회할 수 있으며, dotenv는 이어지는 콘텐츠 .env 파일를 환경변수로 사용할 수 있게 도움
Node.js에서 환경변수 영구 적용
- .env 파일을 생성 :
nano .env
- nano 편집기로 열린 .env에 사용하고자 하는 환경변수를 입력한 뒤 저장
- index.js 파일에서 모듈 dotenv를 이용해 .env에 저장한 환경변수 조회 가능
- index.js 실행 :
node index.js
//index.js
const dotenv = require("dotenv");
dotenv.config();
// dotenv.config 메소드 : .env를 process.env에 적용
console.log(process.env.name);
- Node.js에선 .env파일을 만들어 저장하는 방법을 사용
Linux 운영체제에 환경변수를 저장하는 방법은 여러가지가 존재 export
로 적용한 환경변수는 현재 사용 중인 터미널에서만 임시로 사용이 가능- .env 파일 생성 후 사용할 환경변수를 입력한 뒤 저장하며, 저장한걸 불러오기 위해선 dotenv 모듈이 필요
환경변수의 기능
- 환경변수를 이용해 API key, DB password와 같이 민감한 정보를 저장하고 관리할 수 있음
- 서로 다른 PC 또는 여러 .env 파일에서 같은 변수 이름에 다른 값을 할당 가능
- 실제 제품(서비스)을 개발하는 과정에는 개발 환경(local 또는 development 등)과 테스트 서버의 환경(test), 그리고 실제 제품을 제공하는 환경(production)이 존재
*데이터베이스도 개발, 테스트, 제품 환경으로 구분 - 개발 환경과 제품을 제공하는 환경에서 사용하는 API 키가 다른 경우, 환경변수를 이용해 환경을 구분하여 코드를 작성할 수 있음
//shortly-mvc 스프린트 발췌
{
"development": { //개발용 데이터베이스
...
"database": "database_development",
...
},
"test": { //테스트용 데이터베이스
...
"database": "database_test",
...
},
"production": { //배포용 데이터베이스
...
"database": "database_production",
...
}
}
Reference
'Linux > Ubuntu' 카테고리의 다른 글
[Linux] Ubuntu 20.04 LTS MySQL 설치방법 (0) | 2022.04.07 |
---|---|
우분투 20.04 LTS 개발 환경 구축 (0) | 2022.01.18 |
우분투 Fcitx 한글입력 시 엑스트라 창(힌트창)이 뜨는 오류 수정 (2) | 2022.01.17 |
[Linux] CLI 기본 명령어 & node.js (0) | 2021.12.26 |
MSI GL72 7RD 노트북 포멧 후 드라이버 설정 (0) | 2021.12.01 |
댓글