Linux - 권한(permission)(3)

2021. 8. 1. 23:00Linux

이번 시간에는 전 시간에 이어서 

1. 파일의 x 권한

2. 파일과 디렉터리의 소유자인 keum 사용자가 아닌 다른 사용자가 접근 했을 경우에 대한 권한

3. umask

에 대해 공부 해보겠습니다

 

전 내용을 안보신 분들은 보고 와주시길 바랍니다. Linux - 권한(permission)(2)

 

파일이 x 권한을 가지고 있다는 것은 해당 파일이 실행 파일이라는 것입니다.

실행 파일은 무엇이며 사용은 어떻게 하는지에 대해 알아보겠습니다.

우선 전 시간에 만든 testfile를 사용해 실행파일을 만들어 보겠습니다.

 

실행 파일로 만들기 위해 x 권한을 부여하겠습니다.

 

이제 실행파일을 실행해보겠습니다.

실행 하는 방법은 3가지 있습니다.

 

1. ./testfile

2. sh testfile

3. bash testfile

 

파일에 x 권한을 부여해서 실행 파일로 만들었다고 해서 무조건 실행이 되는 것이 아닌것을 알 수 있습니다.

실행 파일은 리눅스 명령어를 저장한뒤 실행시키면 저장된 명령어대로 실행이 되는 파일입니다.

예를 들어 실행 파일에 rm -rf * 를 저장한뒤 실행하면 입력한 명령어가 실행 되는 것입니다.

 

vi testfile

이 실행파일을 실행 시키는 위치의 모든 파일과 디렉터리를 제거한뒤 디렉터리 3개와 파일 3개를 생성하고 생성한 파일들과 디렉터리들이 정상적으로 생성 되었는지 조회 하라는 명령어입니다.

 

 

이 위치에 실행 파일을 실행해 보겠습니다.

 

 

기존에 있던 파일과 디렉터리들이 전부 삭제되고 새로운 파일과 디렉터리들이 생성된것을 확인 할 수 있었습니다.

 

이로써 파일의 r, w, x 권한과 디렉터리의 r, w, x 권한에 대해 모두 알아보았습니다.

지금까지 파일과 디렉터리 소유자가 자신이 생성한 파일과 디렉터리에 접근하는 경우에 대해 연습 했습니다.

이번에는 다른 사용자가 접근 하는 경우에 대해 연습 해보겠습니다.

chang 사용자로 로그인을 하겠습니다.

 

 

chang 사용자의 uid명은 chang gid명도 chang이지만 보조 그룹으로 keum 그룹에 등록되어 있는것을 확인 할 수 있습니다.

 

chang 사용자가 keum 사용자가 만든 파일(디렉터리)에 접근 할때 파일(디렉터리)의 소유자명과 사용자의 uid명이 다르지만 파일(디렉터리)의 그룹에 chang 사용자도 등록이 되어 있습니다.

파일(디렉터리) 그룹명 : keum

chang 사용자가 등록한 그룹 : chang, keum

사용자의 주 그룹이든 보조 그룹이 파일(디렉터리)의 그룹명과 겹치는 그룹이 있다면 사용자가 파일(디렉터리)에 접근할 때 그룹에 대한 권한 부분을 확인 하면 됩니다.

 

 

현재 keum 홈디렉터리는 그룹에 대한 권한이 --- 없기 때문에 keum 디렉터리에 아무런 접근을 할 수 없는 상태입니다.

 

 

keum 디렉터리에 rwx 권한을 부여해주겠습니다.

chmod 명령어는 접근 권한을 변경하려는 파일(디렉터리)의 소유자여야만 한다. 그외에는 사용할 수 없습니다.

물론 root (최고 관리자)는 가능합니다.

 

 

디렉터리들은 group에 대한 권한이 rwx이고 파일들은 group에 대한 권한이 --- 입니다.

즉 chang 사용자는 디렉터리로의 이동(cd) 조회(ls -l) 내용물 변경(mkdir, touch, rm, mv, cp)이 가능하지만 

파일에는 아무런 권한이 없기때문에 읽기(cat)나 열기(vi)를 할 수 없으며 실행 파일일 경우 실행(./, sh, bash)도 할 수 없습니다. 하지만 keum 홈 디렉터리의 그룹에 대한 권한에 w 권한을 부여 했기 때문에 keum 디렉터리에 있는 모든 내용물(디렉터리와 파일들)의 변경(mkdir, touch, rm, mv, cp)은 가능합니다.

 

chang 사용자와 같이 파일(디렉터리)의 소유자는 아니지만 같은 그룹에 등록되어 있을 경우가 아닌 

소유자도 아니고 같은 그룹에 등록되어 있는것도 아닌 사용자가 접근 할때 파일(디렉터리)의 other에 대한 권한 부분을 확인 하면 됩니다.

 

마지막으로 umask에 대해 알아보겠습니다.

 

umask : 파일과 디렉터리가 생성될 때 기본적으로 권한이 설정되어 있습니다. 이는 umask에 의해 정해지는 것입니다.

 

파일과 디렉터리를 생성해보겠습니다.

 

파일에는 rw-rw-r--

디렉터리에는 rwxrwxr-x 

가 생성되면서 자동으로 설정된 권한입니다.

 

어떤 원리로 이러한 권한을 주는 것일까요?

umask를 치면 현재 설정 되어 있는 umask 번호가 나옵니다. 현재 0002로 나와 있습니다.

저희가 현재 알아야 할것은 낸 앞자리 0을 제외한 002입니다.

지금부터 xor 계산을 할 것입니다.

xor : 서로 같으면 0 다르면 1을 출력합니다.

 

파일은 실행파일이 아니면 x를 가질 수 없기 떄문에 최대로 가질 수 있는 권한은 rw-rw-rw-를 2진수로 바꾸면 110 110 110 입니다.

umask가 002 일경우 2진수로 바꾸면 000 000 010 입니다. 앞의 0들은 자릿수를 맞추기 위한 것입니다.

이 둘을 xor 계산 하는 것입니다.

110 110 110

000 000 010

110 110 100 = rw-rw-r-- 입니다. 이것은 파일이 생성시 부여받는 권한입니다.

 

디렉터리이 최대로 가질 수 있는 권한은 rwxrwxrwx입니다. 이를 2진수로 바꾸면 111 111 111 입니다.

umask는 아까와 같이 002이면 2진수로 바꿀시 000 000 010이였습니다.

이둘을 아까와 같이 xor 계산을 하는 것입니다.

111 111 111

000 000 010

111 111 101 = rwxrwxr-x 입니다. 이것은 디렉터리가 생성시 부여받는 권한입니다.

 

자세히 살펴보면 xor 계산을 할 필요 없이 단순히 뺄셈(-)을 하면 된다는 것을 알 수 있습니다.

umask : 002

파일 최대 권한 : rw-rw-rw = 110 110 110 = 666

디렉터리 최대 권한 : rwxrwxrwx = 111 111 111 = 777

파일 생성시 받는 권한 : 666 - 002 = 664 = rw-rw-r--

디렉터리 생성시 받는 권한 : 777 - 002 = 775 = rwxrwxr-x

 

umask가 최대권한보다 더 클 경우에는 예외입니다. 즉 단순 뺄셈으로 구할 수 없습니다.

예) umask = 077

파일 생성시 받는 권한 : 666 - 077 뺄수가 없습니다.

이런 경우에는 umask 진리표에 따라 0으로 만듭니다.

즉 6 - 7은 할 수 없으니 이런경우는 0이 되는 것입니다.

666 - 077 = 600인 것입니다.

666 - 067 = 600

 

umask 숫자 명령어를 통해 umask를 변경 할 수 있습니다. umask의 범위는 000부터 077까지 입니다.

 

최대권한이 umask보다 클 경우 xor 계산(단순 뺄셈)을 하면 되고

최대권한보다 umask가 클 경우에는 진리표에 의해 0으로 계산하면 됩니다.

 

이상으로 권한에 대한 공부를 마치겠습니다.

다음시간에 공부할 내용은 rpm와 yum에 대해 공부 해보도록 하겠습니다.

 

 

 

다음 내용

Linux - rpm & yum

 

 

 

 

 

 

 

 

'Linux' 카테고리의 다른 글

Linux - 마운트  (0) 2021.08.07
Linux - 패키지 관리 도구 rpm & yum  (0) 2021.08.02
Linux - 권한(permission)(2)  (0) 2021.08.01
Linux - 권한(permission)(1)  (0) 2021.07.31
Linux - 사용자 & 그룹 생성 및 제거  (0) 2021.07.29