리눅스 환경변수와 권한

Numberbeen·2022년 12월 12일
0

DevOps Bootcamp

목록 보기
14/30

환경변수

리눅스는 CLI 로 환경변수를 설정할 수 있습니다. 다음의 명령어을 입력해서 환경변수 확인 가능

$env

몇가지 중요한 환경 변수들만 설명하자면

  • SHELL : 어떤 종류의 쉘(대화형 인터페이스)를 사용할지 선택하는 환경 변수
  • HOME : 홈 디렉토리가 무엇인지 알려주는 환경 변수
  • PATH : 어디서든 해당 디렉토리에 있는 실행 파일을 실행할 수 있게 만들어주는 환경 변수

export 환경 변수를 임시로 적용하기

명령어 export 를 이용하면, 새로운 환경변수를 추가할 수 있다.
❗️새로운 환경 변수를 설정할때 등호 표시 앞뒤에는 반드시 공백이 없어야 한다.

export urclass="is good"

잘 적용됬는지 확인하려면 echo $urclass 입력하면 "is good"이 화면에 출력되는걸 볼 수 있다.

export 명령으로 설정해놓은 환경 변수는 지금 열려있는 터미널에 한정되어 적용된다. 따라서, 새로운 터미널 창을 열면 초기화 된다.

환경 변수가 필요한 이유

대표적인 예로는 서비스를 운영하는 상황이 달라질 때 사용한다. 서비스가 개발 환경일때와, 테스트 환경일때, 실제 운영될 때를 환경 변수로 분리할 수 있다. 이를 환경 변수로 처리하지 않는다면, 개발 환경과 실제 운영 환경에서 소스 코드가 달라야만 할 것이다. 소스 코드가 다르면 완벽하게 동일한 프로그램이라고 볼 수 없다.

Read, Write, Excute

폴더인지 파일인지 확인하기

먼저, 폴더와 파일을 생성하기 위해 명령어 mkdir 과 nano 를 이용해 디렉토리와 js 파일을 생성 후 ls -l 명령어로 확인하면 아래와 같이 출력된다.

터미널에 출력된 결과 중에서 파일 helloworld.js 는 -rw-r--r-- 이라고 출력되었거, linux 디렉토리는 drwxr-xr-x로 출력된 것을 볼 수 있다. 이 표현의 첫 시작인 - 와 d는 각각 not directory 와 directory 를 나타낸다. 폴더이면 d로, 파일이면 -로 나타낸다.

이어지는 r,w,x 는 각각 read permission, write permission, execute permission 으로 읽기 권한, 쓰기 권한, 실행 권한을 나타내는데 3번에 걸쳐 나타나는 이유는 사용자, 그룹, 나머지 에 대한 권한을 표시하기 때문이다.

위의 내용을 토대로
helloworld.js 에 대해 설명하자면 파일이고 소유자는 읽기와 쓰기만 가능하고, 그룹과 나머지 사용자는 읽기 권한만 가능하다.

linux 는 폴더이고 소유자는 읽기, 쓰기, 실행 이 가능하고 다른 사용자 그룹은 읽기와 쓰기만 가능하다.

user, group, and other

user

  • user는 파일의 소유자(owner)입니다. 기본적으로 파일을 만든 사람이 소유자가 됩니다. 따라서 user를 소유자라고 하기도 합니다.

group

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

other

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

chmod 권한을 변경하는 명령어
명령어 chmod 폴더나 파일의 읽기, 쓰기, 실행 권한을 변경할 수 있다. OS에 로그인한 사용자와 폴더나 파일의 소유자가 같을 경우 명령어 chmod 로 폴더나 파일의 권한을 변경할 수 있다.

만약 로그인한 사용자와 폴더 파일의 소유자가 다를 경우에는 sudo 명령어를 이용 관리자 권한을 획득하여 변경할 수 있다.

chmod 명령어로 권한을 변경하는 방식은 두 가지가 있다.

  • 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, and o)
chmod g-r filename # 그룹에 읽기 권한을 제거
chmod g+r filename # 그룹에 읽기 권한을 부여
chmod g-w filename # 그룹에 쓰기 권환을 제거
chmod g+w filename # 그룹에 쓰기 권환을 부여
chmod g-x filename # 그룹에 실행 권한을 제거
chmod g+x filename # 그룹에 실행 권한을 부여
chmod o-r filename # 다른 유저의 읽기 권한을 제거
chmod o+r filename # 다른 유저의 읽기 권한을 부여
chmod o-w filename # 다른 유저의 쓰기 권한을 제거
chmod o+w filename # 다른 유저의 쓰기 권한을 부여
chmod o-x filename # 다른 유저의 실행 권한을 제거
chmod o+x filename # 다른 유저의 실행 권한을 부여
chmod u+x filename # 파일의 소유자에게 실행 권한을 부여


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------
  • Absolute form

사용자, 그룹, 다른 사용자 를 rwx 가 나타나고, 각 영역의 boolean 값으로 표기할 수 있다.

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

만약 user는 rwx 를 group과 other 은 r-- 권한으로 변경하려고 한다면 아래와 같이 입력하면 된다.

chmod 744 helloworld.js # -rwx-r--r--
# u=rwx (4+2+1 =7), go=r(4+0+0=4)
profile
내기 이해한 것을 보관하는 곳

0개의 댓글