터미널에서 ls -l
명령어를 치면 파일들이 나오게 되는데
여기서 왼쪽의 drwxrwxr-x 혹은 -rw-rw-r-- 같은 문자열을 확인 할 수 있다.
이것은 4 부분으로 나누어 볼 수 있다.
d / rwx / rwx /r-x
- / rw- / rw- / r--
1 / 2 / 3 / 4
1.d -
디렉토리 여부(디렉토리일 경우(폴더일 경우) 'd', 파일일 경우'-')
2.rwx rw-
소유 사용자에 대한 read, write, execute 권한
3.rwx rw-
소유 그룹에 대한 read, write, execute 권한
4.r-x r--
기타 사용자에 대한 read, write, execute 권한
user는 파일의 소유자
기본적으로 파일을 만든 사람이 소유자가 되기에 user를 소유자라고 하기도 함
group에는 여러 user가 포함될 수 있다.
그룹에 속한 모든 user는 파일에 대한 동일한 group 액세스 권한을 갖는다.
많은 사람이 파일에 액세스해야 하는 프로젝트가 있다고 가정할 때, 각 user에게 일일이 권한을 할당하는 대신에 모든 user를 group에 추가하고, 파일에 group 권한을 할당할 수 있다.
파일에 대한 액세스 권한이 있는 다른 user
파일을 만들지 않은 다른 모든 user를 의미, 따라서 other 권한을 설정하면, 해당 권한을 global 권한 설정이라고 볼 수도 있다.
유형 | r | w | x |
---|---|---|---|
d | 이 권한이 없으면 디렉토리 목록을 볼 수 없음 | 이 권한이 없으면 해당 디렉토리에 파일을 추가할 수 없음 | 디렉토리에 접근하는 권한, 이 권한이 없으면 rw권한이 모두 있어도 접근 불가능함 |
- | 이 권한이 없으면 파일을 열 수 없음 | 이 권한이 없으면 파일을 수정할 수 없음 | 이 권한이 있으면 실행파일, 없으면 문서파일임 |
drwxrwxr-x
이것을 해석해보자면 읽기,쓰기,실행권한이 사용자와 그룹에 있고 기타 사용자는 읽기,실행권한을 가지고 있는 폴더다 라는 뜻
파일에 적용된 사용 권한을 변경할 수 있다. chmod
chmod: 권한을 변경하는 명령어
명령어 chmod 폴더나 파일의 읽기, 쓰기, 실행 권한을 변경할 수 있다. OS에 로그인한 사용자와, 폴더나 파일의 소유자가 같을 경우에 명령어 chmod 로 폴더나 파일의 권한을 변경할 수 있다. 만약 OS에 로그인한 사용자와, 폴더나 파일의 소유자가 다를 경우에는 관리자 권한을 획득하는 명령어 sudo 를 이용해 폴더나 파일의 권한을 변경할 수 있다.
chmod 이용하는 방식 2가지
+ - =
이용하기(추가, 배제, 할당)대상선택 : 가장 먼저 변경하고 싶은 대상을 선택한다. 사용자 ( u ) / 그룹 ( g ) / 기타 ( o ) / 전부 ( a )
연산자 이용 : +
기존 권한에 새로운 권한 추가 / -
기존 권한 삭제 / =
새로운 권한 할당
권한선택 : 원하는 권한을 선택
예시 ) -rw-rw-r--
chmod a+x // => -rwxrwxr-x
chmod a-r // => --wx-wx--x
chmod u=r // => -r---wx--x
chmod u= // => -----wx--x
chmod u+rwx // => -rwx-wx--x
이런 형식으로 권한을 지정할 수 있다.
r : 4, w: 2, x : 1 으로 지정하면 경우의 수가 8가지가 생김
7 rwx
6 rw-
5 r-x
4 r--
3 -wx
2 -w-
1 --x
0 ---
chmod 747 filename
=> -rwxr--rwx
chmod 365 filename
=> --wxrw-r-x
터미널에 export 명령어를 작성하면 이런 결과를 받을 수 있다.
새로운 환경변수를 추가하려면 export urclass="is good"
이렇게 설정이 가능한데 등호 표시 앞뒤에는 공백이 없어야함
echo
를 통해 환경변수의 값을 확인 할 수 있음
npm 모듈 dotenv를 사용하면, 자바스크립트에서 환경변수를 사용할 수 있다.
npm을 이용하여 dotenv 를 설치했다고 가정하고 index.js 에 console.log(process.env);
라고 작성한 뒤 노드를 실행시키면
명령어 export 로 확인한 내용과 동일한 내용을 객체로 출력
명령어 export 로 적용한 환경변수는 현재 사용 중인 터미널에서만 임시로 사용이 가능
Node.js에서는 파일 .env를 만들어 저장하는 방법을 사용하여 저장
.env 파일을 생성하고, 사용하고자 하는 환경변수를 입력한 뒤 저장
vim .env
cat .env
codestates=Hard training
// 이후 index.js 를 수정
const dotenv = require("dotenv");
dotenv.config();
console.log(process.env.myname);
이후 node index.js 실행 시
이렇게 작성 할 수 있음
환경변수를 이용해 API key, DB password와 같이 민감한 정보를 저장하고 관리할 수 있고 서로 다른 PC 또는 여러 .env 파일에서, 같은 변수 이름에 다른 값을 할당할 수 있다.
실제 제품(서비스)을 개발하는 과정에는 개발 환경(local 또는 development 등)과 테스트 서버의 환경(test), 그리고 실제 제품을 제공하는 환경(production)이 있다. 예를 들어 구글 API를 이용해 웹 애플리케이션을 만드는 경우, 개발 환경에서는 개발자 개인의 API 키를 이용할 수 있다. 그러나 제품을 서비스할 때에 개인 API 키를 사용하면, 일일 요청량을 초과하는 경우 제품이 정상적인 동작을 할 수 없고 이런 경우를 방지하기 위해 실제 제품에서는 기업용 API 키를 사용.
이처럼 개발 환경과 제품을 제공하는 환경에서 사용하는 API 키가 다른 경우, 환경변수를 이용해 환경을 구분하여 코드를 작성할 수 있다.