모든 파일에는 사용자마다 접근할 수 있는 권한이 있다.
파일을 읽을 수 있어도 실행하지 못할 수도 있고, 디렉토리에 들어가도 파일을 읽을 수 없을 수도 있다.
리눅스에서는 파일마다 정교하게 권한을 설정할 수 있다.
보안상 접근 권한을 정확히 설정해주는 것이 좋다.
한 번 파일을 조회해보자.
폴더 내에 있는 파일을 조회하기 위해서는 ls -l
명령어를 사용하면 된다.
-l
은 파일에 대한 권한 정보를 보기 위해서 필요한 옵션이다.
아래와 같은 구조의 리스트를 확인할 수 있다.
명령어 chmod 뒤에 변경할 권한을 입력한다.
액세스 클래스의 u, g, o, a를 변경할 조건에 따라 조합하여 입력하고, 연산자와 액세스 타입을 순서대로 입력하면 된다.
chmod [a,u,g,o][+,-,=][r,w,x]
순으로 선택해서 조합할 수 있다.
a
: 전체. (all: u, g, and o).u
: 소유자. user. 기본적으로 파일을 만든 사람이 소유자.g
: 소유 그룹. group에는 여러 user가 포함될 수 있다.o
: others. 파일을 만들지 않은 다른 모든 user.+
: add access. 추가-
: remove access. 제거=
: set exact access. 업데이트(기존 권한 무시하고 새롭게)r
: read.w
: write.x
: execute.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 user
chmod go-w sample
chmod u=rwx, go-wx sample # 소유자에게는 읽기,쓰기,실행 권한을 부여하고 / 그룹과 기타 사용자에게는 쓰기,실행 권한 제거.
chmod a=rw helloworld.js # -rw-rw-rw-
chmod u= helloworld.js # ----rw-rw-
chmod a+rx helloworld.js # -r-xrwxrwx
chmod go-wx helloworld.js # -r-xr--r--
chmod a= helloworld.js # ----------
chmod u+rwx helloworld.js # -rwx------
rwx
문자가 아니라 각각의 자리값을 합친 값으로 권한을 부여할 수 있다.
숫자 7까지 나타내는 3 bits의 합으로 표기한다.
r=4, w=2, x=1이다. 예를 들어, rwx
권한은 4+2+1=7이 된다.
chmod 644 sample # 소유자에게는 읽기,쓰기(6) / 그룹 과 기타 사용자에게는 읽기(4)
chmod 777 sample # 모든 사용자에게 읽기,쓰기,실행(7) 권한을 부여
# u=rwx (4 + 2 + 1 = 7), go=r (4 + 0 + 0 = 4)
chmod 744 helloworld.js # -rwxr--r--
Sum | rwx | Permission |
---|---|---|
4(r) + 2(w) + 1(x) | rwx | read, write and execute |
4(r) + 2(w) + 0(-) | rw- | read and write |
4(r) + 0(-) + 1(x) | r-x | read and execute |
4(r) + 0(-) + 0(-) | r-- | read only |
0(-) + 2(w) + 1(x) | -wx | write and execute |
0(-) + 2(w) + 0(-) | -w- | write only |
0(-) + 0(-) + 1(x) | --x | execute only |
0(-) + 0(-) + 0(-) | --- | none |
아무런 인자없이 export
명령을 내리면 전체 환경 변수 목록을 확인할 수 있다.
export
명령에 환경 변수와 =
기호와 값을 표현해서 환경 변수의 값을 설정할 수 있다.
특정 환경 변수의 값을 확인할 때는 echo
명령을 사용한다.
명령어 echo
와 함께 환경변수를 입력하면, 환경변수의 값을 확인할 수 있다.
이때 환경변수의 앞에는 달러사인($
)을 입력하여, 변수라는 뜻을 터미널에 전달해준다.
export
export SHELL=/bin/bash
echo $SHELL
자세한 내용은 따로 포스트를 작성해야겠다
npm 모듈 dotenv를 사용하면, 자바스크립트에서 환경변수를 사용할 수 있다.
npm 모듈을 설치하고 사용하기 위해서, 새로운 폴더를 만들고 npm init
을 입력한다. 그리고 npm i dotenv
를 입력해 모듈을 설치한다.
이때 생성된 폴더는 설치할 모듈과 이름이 같아서는 안된다.
mkdir environment_variable
cd environment_variable
npm init # 엔터 키를 여러번 입력해 init 완료.
npm i dotenv # dotenv 모듈을 설치.