Linux - 권한(permission)(1)

2021. 7. 31. 02:46Linux

퍄 이번시간에는 권한에 대해 알아보겠습니다. 우선 파일 하나를 조회해보겠습니다.

 

 

-rw-rw-r-- 이 부분이 파일의 권한 부분입니다. 맨 앞 - 은 일반 파일을 나타내는 기호이기 때문에 정확한 권한 부분은

rw-rw-r--입니다. 이게 정확히 무슨 의미를 가진것일까요?

왜 이러한 권한을 사용하는지 부터 말하자면 리눅스는 여러 사람이 동시에 사용하는 시스템, 멀티유저시스템이기 때문입니다. 내가 사용하는 파일에 다른 사람이 허락없이 접근할 수 있다면 문제가 생길 것입니다. 이러한 문제를 막기 위해서 파일에 접근 할 수 있는 권한을 설정하는 것입니다.

 

다시 권한 부분으로 돌아가겠습니다. rw-rw-r-- 이 부분은 3부분으로 나눌수 있습니다.

rw-     rw-     r-- : 첫번째는 owner, 가운데는 group, 마지막은 other에 대한 권한입니다.

owner : 소유자즉 파일을 생성한 사람에 대한 권한입니다.

group : 그룹에 속해 있는 사용자에 대한 권한입니다

other : 소유자도 그룹 멤버도 아닌 제 3의 기타 사용자에 대한 권한입니다.

 

일반 파일 권한

r : 파일 열기와 읽기를 허용하는 권한입니다. 

예) cat, vi (읽기 전용으로 열수 있습니다)

w : 파일 수정을 허용하는 권한입니다.

파일 생성, 삭제, 이름변경, 이동등 파일 변경은 파일이 아니라 디렉터리 권한에 의해 결정됩니다.

x : 파일이 프로그램으로 처리되고 실행파일로 취급됩니다.실행 파일은 스크립트로 작성되어 있어야 실행이 됩니다.

 

디렉터리 권한

r : 디렉터리 내용물들의 조회를 허용하는 권한입니다. 

예) ls -l, ll

w : 디렉터리 내부의 파일들의 변경을 허용하는 권한입니다(삭제, 생성, 이름 변경, 복사)

예) rm, mkdir, mv

x :  디렉터리로의 이동을 허용하는 권한입니다. 이 권한이 있어야 디렉터리 내부의 파일(디렉터리)들의 권한이 허용됩니다. /keum/chang에서 keum에 x에 대한 권한이 없을 경우 사용자는 chang에 어떤 권한이 잇있던 상관 없이 접근 자체를 할 수가 없습니다. 

chang 파일일 경우 읽거나 열 수 없으며 디렉터리일 경우 내부 조회하거나 디렉터리 내부로 이동 할 수 없습니다.

예) cd

 

다시 한번 파일을 조회 해 보겠습니다.

 

keum keum 이 있는 것을 볼 수 있습니다. 

처음 keum은 이 파일의 소유자, 두번째 keum은 그룹명을 의미합니다.

이는 사용자의 이름과 그룹명에 비슷한 것을 볼 수 있습니다.

 

그럼 파일에 접근하는 사용자의 uid(사용자명)와 gid(그룹명)은 어떻게 알 수 있을까요?

id 명령어를 사용하면 사용자명과 그룹명을 확인해 볼 수 있습니다.

 

사용자명과 uid에 부여된 이름은 같습니다. 사용자명이 변경되면 uid에 부여된 명도 변경되기 때문입니다.

그렇기 때문에 uid에 부여된 이름은 사용자명이라고 생각하시면 됩니다. 

gid에 부여된 이름과 groups에 부여된 이름이 같은 것을 볼 수 있습니다. groups의 맨 앞에 있는 그룹명이 주 그룹이며 이 주 그룹명이 변경되면 gid에 부여된 이름도 변경 됩니다. groups의 두번째 부터 등록된 그룹들이 보조 그룹입니다.

 

사용자가 파일이랑 디렉터리를 생성할때 사용자의 uid명과 gid명으로 파일과 디렉터리의 소유자명과 그룹명이 정해집니다. 그룹명은 보조 그룹이 아닌 주 그룹명으로 부여합니다

예) keum 사용자의 uid명 gid명이 keum keum일 경우 파일과 디렉터리의 소유자명과 그룹명은 keum keum 이 됩니다.

keum 사용자의 그룹에서 주 그룹이 keum이고 보조 그룹이 chang, jin 이여도 파일과 디렉터리에는 keum, 주 그룹명을 부여합니다

 

 

파일에 접근 할 수 있는 권한은 파일의 소유자명과 그룹명, 사용자의 이름과 그룹명의  다음과 같은 경우에 따라 달라집니다.

 

1. 사용자명과 파일의 소유자명이 같을 경우

사용자의 그룹명과 파일의 그룹명이 같아도 되고 달라도 상관이 없이 owner에 대한 권한, 첫번째 권한을 확인하면 됩니다. 조회한 파일 같은 경우 rw-rw-r-- 에서 첫번째 rw-를 확인 하면 되는 것입니다.

파일을 열고 읽을 수 있으며 파일의 내용을 수정 할 수 있습니다.

 

2. 사용자명과 파일의 소유자명이 다르지만 그룹명이 같을 경우

group에 대한 권한, 두번째 권한을 확인 하면 됩니다. 조회한 파일 같은 경우 rw-rw-r--에서 두번째 rw-를 확인 하면 되는 것입니다. 

 

3. 사용자명과 그룹명 둘다 파일과 다른 경우

other에 대한 권한, 마지막 권한을 확인 하면 됩니다. 조회한 파일 같은 경우 rw-rw-r--에서 마지막 r--를 확인 하면 됩니다.

 

이제 여러 사용자들로 파일과 디렉터리에 대한 권한을 연습해보겠습니다.

본격적인 연습을 하기 전에 좀더 효과적으로 권한에 대해 연습할 수 있도록 파일(디렉터리 포함) 접근 권한 변경 명령어와 파일 소유자, 그룹 소유자 변경 명령어를 배워보겠습니다.

 

chmod : 접근 권한 변경을 두가지 방식으로 할 수 있습니다. (자신이 생성한 파일(디렉터리)은 접근 권한 변경을 할 수 있습니다 다른 사용자를 소유자로 가지고 있는 파일(디렉터리)은 변경 할 수 없습니다.

keum 사용자가 chang이 생성한 파일(디렉터리)은 변경 못한다는 말입니다.

 

1. 숫자 : rwx는 2진수로 바꾸면 r : 2^2(4), w : 2^1(2), x : 2^0(1) 입니다. 즉 rwx는 7인 것입니다.

chmod 777 파일(디렉터리)명 : rwx rwx rwx 

chmod 245 파일(디렉터리)명 : -w- r--  r-x

chmod 621 파일(디렉터리)명 : rw- -w- --x

 

 

2. 기호 : owner는 u, group은 g, other은 o, 이세가지 전부는 a 인것입니다.

여기에 +, -, = 를 사용해서 권한을 부여 하는 것입니다.

+, - 는 현재 권한에서 더하거나 뺴는 것입니다. = 은 현재 어떤 권한을 가졌는지와 상관 없이 = 다음의 권한으로 바뀌는 것입니다.

chmod u+r,o+x 파일(디렉터리)명 : 현재 상태에서 owner에 r 권한을 더하고 other에 x 권한을 더하겠다는 의미입니다. ( ',' 로 구분을 하며 사이띄기를 하면 안됩니다.)

chmod u-w,g+r,o-x 파일(디렉터리)명 : 현재 상태에서 owner에 w 권한을 빼고 group에 r 권한을 더하고 other에 x 권한을 빼겠다는 의미입니다.chmd u=rwx,g=x,o=r 파일(디렉터리)명 : 현재 상태가 어떠든 상관 없이 owner는 rwx, group은 --x, other은 r-- 권한을 부여하겠다는 의미입니다.

 

 

chown : 파일(디렉터리) 소유자와 그룹 소유자(그룹명)을 변경 할 수 있습니다. root 권한으로만 변경 할 수 있습니다.

chown 소유자 파일(디렉터리)명 : 소유자만 변경 하는 의미입니다.

 

 

chown 소유자.그룹명 파일(디렉터리)명 : 소유자와 그룹명 동시에 변경 한다는 의미입니다.

 

chgrp : 그룹명만 변경할 수 있는 명령어입니다. root 권한으로만 변경 할 수 있습니다.

chgrp 그룹명 파일(디렉터리)명

 

 

이제 본격적으로 권한에 대한 연습을 할 수 있습니다. 이 연습은 다음 시간에 하도록 하겠습니다.

 

 

 

다음 시간 

Linux - 권한(permission)(2) 

'Linux' 카테고리의 다른 글

Linux - 권한(permission)(3)  (0) 2021.08.01
Linux - 권한(permission)(2)  (0) 2021.08.01
Linux - 사용자 & 그룹 생성 및 제거  (0) 2021.07.29
리눅스 - 리다이렉션(redirection)  (0) 2021.07.28
리눅스 - MAC Time  (0) 2021.07.25