리눅스 - 권한

김민재·2021년 7월 21일
0

Gotcha Linux!

목록 보기
14/22

권한을 변경하는 방법 - chmod


위 사진처럼 세 개로 삼등분하면

  • 첫 번째 구간은 자기 자신, 이 파일의 소유자, owner의 권한을 의미한다
  • 두 번째는 group의 권한을 의미한다.
  • 세 번째는 other, 이 시스템에 있는 모든 사용자가 저 파일에 대해서 갖는 권한을 의미한다.

여기에서 rw는 이 파일의 소유자가 쓰기, 읽기 기능이 있지만 실행이 없다는 뜻이다.
r만 있는 것은 이 시스템에 있는 모든 사용자가 저 파일에 대해서 읽기 기능은 있지만, 쓰기가 없고, 실행이 없다는 뜻이다.

현재 'perm.txt' 파일이 'r'로 되다는 건 시스템에 있는 모든 사용자가 읽을 수 있다는 뜻인데 이 파일이 다른 사람에게 절대로 노출되면 안 되는 정보라고 한다면 여기 있는 'r'을 없애야한다. 그렇게 하면 이 파일을 누구도, 나를 제외하고는 보도록 하는 것을 하려면?

이 세 구간은 'access mode'이다. 'r', 'w' 이런 것들은 'access mode'의 값이다.
'r'을 없애기 위해선 'mode'를 바꿔야 한다.

이때 사용하는 명령어가 'CHMOD' 즉 'change mode'라는 뜻의 명령어이다.
이 파일의 access mode, r을 없기 위해 chmod, other의 read 권한을 빼고 싶다면 o-r을 넣어주고 해당 파일명 perm.txt을 적어준다.

반대로, 'perm.txt'를 모든, 시스템의 사용자들이 읽을 수 있게 하고 싶으면 chmod other의 read권한을 추가 o+을 적고 파일명을'perm.txt'라고 앞에처럼 적어 명령을 실행하면 된다.

중요한 것은 'change mode'라는 굉장히 중요한 명령이며 'change mode'는 중간에 어떻게 모드를 바꿀 것인가가에 대한 내용이 들어가고 mode를 바꾸고자 하는 파일의 이름이 들어온다.

이 시스템에 있는 모든 사용자가 파일을 수정할 수 있게 하고싶다면 chomd o+w, other 더하기 w 그리고 파일명을 적어준다.

파일의 소유자는 파일의 내용을 읽을 수 없게 한다면 chmod, u-r 소유자'u, user'
user의 read 권한을 빼고 파일명 perm.txt을 적어준다.

소유자가 읽을 수 있게 한다면, chmod u+r 파일명을 적으면 유저의 소유자가 해당 파일을 읽을 수 있게된다.

실행의 개념과 권한 설정 - execute

여기에서 r은 read, w는 write 마지막 부분x는 execute, 실행이란 뜻이다.
즉, 어떤 파일에 대해서 실행 가능한 파일로 할 것인지 실행을 막을 것인지를 정하는 것이 실행 액세스 모드이다.

이 프로그램을 실행할 때에는 무엇을 가지고 실행을 하는 지를 알려주기 위해서 이렇게
#!bin/bash라고 적으면 bin/bash라고 하는 프로그램을 통해서 코드를 해석해서 실행된다.

./hi-machine.sh라고 하고 엔터를 치면 permission denied라고 에러가 뜨지만 반대로
bin/bash라고 우리가 직접 bash라는 프로그램을 실행시켜서 그 프로그램에게 hi-machine.sh를 해석해서 실행해라 하면 실행이 된다.

어떤 특정 프로그램을 통해서 bin/bash와 같은 해석기, 파서를 통해 특정한 프로그래밍 언어를 실행시키는 것은 아무런 제약이 없다.
하지만 특정 프로그래밍 언어를 마치 컴퓨터에 설치되어 있는 명령어인 것처럼
실행하고 싶다면 파일에게 실행권한을 줘야한다.

이때 사용하는 것이 바로 엑시큐트(execute)인데 chmod, user에게 엑시큐트(x) 모드를 주고 어떤 파일에 대해서 줄 것인지 명시하면 실행 가능한 프로그램이 된다.

directory의 권한


r이라고 하는 액세스 모드는 디렉터리에 대해서는 그것은, 그 디렉터리 안에 소속되어 있는 파일이나 디렉터리를 열람할 수 있느냐 없느냐와 관련된 기능이다.


디렉터리에 권한 중에 w라고 하는 액세스 모드가 없다면 우리는 그 뒤에 디렉터리 안에다가 파일을 생성할 수 없다.

즉, 디렉터리에 있어서 read는 그 디렉터리 안에 있는 파일의 내용을 보는 것이고
write는, 그 디렉터리 안에 파일을 생성하고 삭제하고 이름을 바꾸는 것들을 할 수 있느냐 없느냐와 관련되어 있다.

즉 x, execute(엑시큐트) 실행이라고 하는 것은 그 디렉터리에 cd 명령을 통해서 들어갈 수 있느냐 없느냐 라는 것과 관련되어 있는 기능이다.

한 가지 더
chmod -R o+w 파일명을 적어주면 -R이라는 건 리커시브(recursive) , 재귀적으로 이 디렉터리 안에 디렉터리가 있다면 모두 수정한다는 옵션이다.

chmod 사용법 정리 및 class & operation

change mode 다음에 옵션이 그 액세스 모드가 오고, 그리고 지정하고자 하는, 그 모드를 바꾸고자 하는 파일이 나오게 된다. 파일이 여러 개면 한 칸 띄어서 쓰면 된다.

Octal, 8진수 모드
전부다 x x x로 하고 싶다면 execute only인 숫자 chmod 111 perm.txt
라고 하면 perm.txt는 x x x가 된다
이러한식으로 숫자를 조합해서 쓸 수 있다.

클래스(class)라고 하는 종류가 있고 u는 owner g는 group o는 others죠. a는 all이며.
그리고 operation은 +, -, =이 있다.

이런 식으로 연산자와 이러한 것을 클래스라고 한다. 클래스를 잘 조합하면 효율적으로 퍼미션을 지정할 수 있다.

profile
자기 신뢰의 힘을 믿고 실천하는 개발자가 되고자합니다.

0개의 댓글