관리 메뉴

평행우주 : world 1

[CLI] 사용권한 본문

텃밭 3 : BE/Linux

[CLI] 사용권한

parallelworlds 2022. 2. 24. 16:36

Read, Write, Execute 권한

 

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

폴더와 파일을 생성하기 위해 명령어 mkdir 과 nano  이용

 

linux 폴더를 생성하고, helloworld.js 파일을 생성

mkdir linux
nano helloworld.js
 

 

코드를 작성한 다음 Ctrl + X, Y, Enter 를 순서대로 입력하면, 새로운 파일을 저장할 수 있다.
폴더 하나와 파일 하나를 각각 생성
문자열을 출력하는 함수를 작성하고 저장

 

 

 

명령어 ls -l 을 프롬프트에 입력하고 Enter(엔터 키)

  • 파일 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의 권한은 rw-r--r-- 으로, 소유자는 읽기와 쓰기가 가능하고, 다른 사용자 그룹은 읽기만 가능
  • 폴더 linux의 권한은 rwxr-xr-x 으로, 소유자는 읽기와 쓰기, 실행이 가능하고, 다른 사용자 그룹은 읽기와 실행만 가능
ls -l을 입력하면 터미널에 나타나는 출력. username은 사용자 이름

 

 

폴더나 파일의 권한 정보

 

 

 



user, group, and other

user

  • user는 파일의 소유자
  • 기본적으로 파일을 만든 사람이 소유자
  • 따라서 user를 소유자라고 보기도 한다

 

group:

  • group에는 여러 user가 포함될 수 있다.
  • 그룹에 속한 모든 user는 파일에 대한 동일한 group 액세스 권한을 갖는다.

 

other:

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

 



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

  • 명령어 chmod 폴더나 파일의 읽기, 쓰기, 실행 권한을 변경할 수 있다.
  • OS에 로그인한 사용자와, 폴더나 파일의 소유자가 같을 경우에 명령어 chmod 로 폴더나 파일의 권한을 변경할 수 있다.
  • 만약 OS에 로그인한 사용자와, 폴더나 파일의 소유자가 다를 경우에는 관리자 권한을 획득하는 명령어 sudo 를 이용해 폴더나 파일의 권한 변경

 

 

명령어 chmod 로 권한을 변경하는 방식

  • 첫 번째는 더하기(+), 빼기(-), 할당(=)과 액세서 유형을 표기해서 변경하는 Symbolic method.
  • 두 번째는 rwx를 3 bit로 해석하여, 숫자 3자리로 권한을 표기해서 변경하는 Absolute form

 


 

Symbolic method는 액세스 클래스, 연산자, 액세스 타입으로 구분


Access class Operator Access 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 뒤에 변경할 권한 입력.
  • 액세스 클래스의 u, g, o, a를 변경할 조건에 따라 조합하여 입력하고,
  • 연산자와 액세스 타입을 순서대로 입력
  • 액세스 클래스와 연산자, 액세스 타입을 모두 기억해야만 Symbolic method를 이용해 권한 변경 가능

 

다음은 명령어 chmod 를 입력한 예시와 결과

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 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은 숫자 7까지 나타내는 3 bits의 합으로 표기

  • 사용자, 그룹, 또는 다른 사용자나 그룹마다 rwx 가 나타나고, 각 영역의 boolean 값으로 표기
  • 만약, user는 rwx 를, group과 other은 r-- 로 권한을 변경하려고 한다면,
  • 위 표에 나와있는 숫자의 합을 user, group, other 순으로 입력하여 사용
  • chmod 명령어와 Absolute form으로 helloworld.js 파일의 권한을 변경

Permission Number
Read (r) 4
Write (w) 2
Execute (x) 1

 

# u=rwx (4 + 2 + 1 = 7), go=r (4 + 0 + 0 = 4)
chmod 744 helloworld.js # -rwxr--r--

 

 

Absolute form 의 숫자별 권한

# 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

 

Comments