[리눅스]Cli 심화

이영광·2021년 8월 23일
0

리눅스

목록 보기
2/2

리눅스에서 사용하는 폴더와 파일에는 권한이 있다 그 권한은 Read, Write,Execute로 나뉜다(읽기 쓰기 실행) 이 권한이 무엇을 뜻하는지 어떻게 권한을 변경할수 있는지 알아보고 권한의 소유자를 변경하는 방법과 리눅스 cli의 조금더 깊이 있는 내용을 알아보자

1.파일의 소유자와 파일에 적용된 사용 권한을 확인하고 이해할수 있다. --- $ls -l

2.파일에 적용된 사용 권한을 변경할 수 있다. --- $chmod

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

mkdir linux 리눅스폴더 만듬
nano helloworld.js 자바스크립트 파일만듬

helloworld.js 파일에 console.log(helloworld) 입력하고 저장하고끄기

ls -l 쳐봄

linux 파일은 === drwxr--xr-x 라고 뜨고
hellowworld.js 파일은 -rw-r--r-- 로 뜬다

맨앞의 - 는 not driectory
     d 는 directory
폴더이면 d 파일이면 - 로 나타낸다

r w x 로 이어지는것은 read permission, write permission, execute permission 으로 읽기 권한 쓰기권한 실행권한을 나타냄,

rw-r--r-- 는 소유자는 읽기와 쓰기가 가능하고 다른 사용자그룹은 읽기만 가능하다는 의미

폴더 rwxr--xr-x는 소유지는 읽기쓰기 실행가능하고 다른 사용자 그룹은 읽기와 실행만 가능!

user, groupt, and other

user : 파일의 소유자, 기본적으로파일을 만든사람,

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

other: 파일에 대한 액세스 권한이 있는 다른 user, 파일을 만들지 않은 모든사람, other권한을 설정하면 해당권한을 global권한 설정이라고 본다

chmod:권한을 변경하는 명령어

폴더나 파일의 읽기 ,쓰기 ,실행 권한을 변경할수있음
os에 로그인한 사용자와 폴더나 파일의 소유자가 같을 경우 chmod 로 폴더나 파일의 권한을 변경할수있다

os에 로그인한 사용자와 폴더나 파일의 소유자가 다를경우 관리자 권한을 획득하는 sudo명령으로 폴더나 파일의 권한 변경가능

chmod로 권한변경하는 방식은 2가지

1: +, - ,=(할당) 과 액세스 유형을 표기해서 변경하는 symbolic method

2: rwx를 3bit해석하여, 숫자3자리로 권한을 표기해서 변경하는 Absolute form방식

Access Class | Operator   |  AccessType

u(user).    |  +(add액세스) |   r(read)
g(group)    |  -(Remove)  |  w(write)
o(other)    |  =(할당)     |  x(실행)
a(all)

symbolic method구분

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

symbolic method 사용예시

ex helloworld.js파일에

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--
chomod a= helloworld.js === ----------
chmod u+rwx helloworld.js === -rwx------

등으로 바뀌게된다


Absolute form

Permission | Number

read(r) | 4
write(w) | 2
excute(x) | 1

users rwx를, group와 other은 r--로 권한을 변경하고위표에 나와있는 숫자의 합을 user,group, other순으로 입력하여 사용

chmod 744 helloworld.js === -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

환경변수

js에서는 변수는 스코프에 따라 지역변수와 전역변수로 나뉜다. 그러나 파일 a에서 전역변수로 선언해도 b파일에서 a의 전역변수에 접근할수없다
하지만 a의 전역변수를 export(내보내기)한다면, 파일 b에서 a의 전역변수에 접근할수있다 import export 생각하면된다

linux기반 운영체제는 pc에서 전역변수를 설정할수 있다. 그리고 시스템에 설정한 전역변수를 환경변수라고 한다 export를 이용해 환경변수를 설정할 수있다.

환경변수 사용법

현재 기록된 환경변수

export class='world'로통해 새로운 환경변수 설정

만든환경변수 $class 를 통해 조회

자바스크립트에서 환경변수 사용하기(dotenv)

mkdir environment_variable
cd environment_variable
npm init
npm i dotenv


node환경에서 조회

.env:node.js 에서 환경변수 영구적용

const dotenv = require("dotenv")
dotenv.config()
console.log(process.env.myname)

nano를 열어서 변수에 lee를 할당한후 출력

환경변수를 이용해 api key, DB password 같은 민감정보를 저장하고 관리할수있다. 그뿐만 아니라 pc또는 여려. env파일에서, 같은 변수 이름에 다른값을 할당할수 있다

실제로 제품을 개발하는 과정에는 개발 환경 과 테스트서버 환경 그리고 실제 제품을 제공하는 환경 이있는데

예를 들어 구글 api를 이용해 웹 애플리케이션을 만드는 경우 개발 환경에서는 개발자 개인의 api키를 이용할수 있다. 그러나 제품을 서비스할 때에 개인 api키를 사용한다면, 일일 요청량을 초과하는 경우 제품이 정상적 동작을 할수 없다. 이런경우를 방지하기 위해 실제 제품에서는 기업용 api키를 사용하며 이처럼 개발환경과 제품을 제공하는 환경에서 사용하는 api키가 다른경우ㅡ 환경변수를 이용해 환경을 구분하는 코드를 작성할수 있다

데이터베이서도 마찬가지로 개발, 테스트, 제품환경으로 구분할수있다

profile
《REACT》《JAVASCRIPT 》 만지고있어욤

0개의 댓글