08. 특수 권한 - 이론

prana·2023년 2월 11일
0

Linux

목록 보기
7/28

따라하면서 배우는 IT - 리눅스 기초

특수권한이란?

SetUID, SetGID, StickyBit

  • 일반적인 권한과는 조금 다른 특수한 권한
  • 종류는 3가지
  • SetUID : 나머지 사용자가 파일을 실행할 때 소유자의 권한으로 접근할 수 있게 해주는 권한
  • SetGID : 나머지 사용자가 파일을 실행할 때 관리 그룹의 권한으로 접근할 수 있게 해주는 권한

  • StickyBit : 디렉토리에 부여하는 권한, 디렉토리를 마치 자유 게시판처럼 사용할 수 있게 해주는 권한
    - 일반적으로 /tmp 디렉토리에 부여

SetUID, SetGID

SetUID : 일반 사용자의 권한을 소유자의 권한으로

실행

  • ls-l 명령어를 이용해서 확인했을 때 특수 권한이 부여된 파일은 소유자의 권한 부분 중 실행 권한 부분이 x가 아닌 s로 나타난다.
  • chmod 4xxx [파일이름] 또는 chmod u+s [파일이름] 명령어로 설정할 수 있다.

SetGID : 일반 사용자의 권한을 관리 그룹의 권한으로

  • ls -l 명령어를 이용해서 확인했을 때, 특수 권한이 부여된 파일은 관리 그룹의 권한 부분 중 실행 권한 부분이 x가 아닌 s로 나타난다.
  • chmod 2xxx [파일이름] 또는 chmod g+s [파일이름] 명령어로 실행할 수 있다.

StickyBit (디렉토리에)

디렉토리를 자유 게시판으로

  • ls -l 명령어를 이용해서 확인했을 때 특수 권한이 부여된 파일은 나머지 사용자의 권한 부분 중 실행 권한 부분이 x가 아닌 t로 나타난다.

  • chmod 1xxx [파일이름] 또는 chmod o+t [파일이름] 명령어로 설정할 수 있다.

  • StickyBit 는 디렉토리에 부여한다.

  • 대표적인 예로 /tmp 디렉토리가 있다.

  • StickyBit가 부여된 디렉토리 내에서는 누구나 자신의 파일을 생성하거나 수정, 삭제가 가능하다.

  • 하지만 다른 사용자의 파일을 수정하거나 삭제할 수는 없다.

  • 해당 디렉토리는 마치 인터넷의 자유게시판처럼 사용된다.


  1. 특수 권한 설정해보기
  • 특수 권한을 설정해보고 그에 따른 결과 확인해보기
  1. 특수 권한이 설정된 파일 찾아보기
  • find 명령어와 -perm 옵션을 이용하여 특수 권한이 설정된 파일 찾아보기

실습

#1 특수 권한 - 특수 권한 설정 실습

1) touch file 빈 파일을 만든다.
2) chmod 4755 file로 setuid 를 부여하고,
3) find / -perm -4000 으로 확인하면, 아래에 /root/bsj/file 파일이 목록에 추가된 것을 알 수 있다.
-perm 은 권한, -4000은 4000이라고만 적으면 딱 setuid만 있는 파일들만을 찾는데, - 옵션이 있으면 포함된 것을 찾아준다.
4) find / -perm -4000 > /root/bsj/setuid_file_list로 찾아본다.
>는 해당 내용을 다른 곳으로 옮길 수 있게 해주는 것을 말한다.

cat setuid_file_list로 확인하면 해당 목록들을 볼 수 있다.

5) touch file2 빈 파일을 만든다.
6) file2에도 똑같이 부여해주고,
7) 파일명을 check_file_list 로 4) 명령어처럼 실행한다.
8) diff check_file_list setuid_file_list을 통해 비교한다.!!!

이렇게 내용 비교를 통해 확인할 수 있게 된다.


#2 특수 권한 - Stickybit 실습

  • 터미널 화면 나누기(GUI환경에서) : window + 화살표(좌우)

앞에 내용 다 삭제하고

권한을 각각 chmod 777(dir1)과 1777(dir2)로 각각 다르게 주었다.

자유게시판처럼. 이 사용자가 생성한 파일이나 디렉토리는
이 사용자가 얼마든지 수정 삭제가 가능하지만, 남이 생성한건 수정삭제가 불가능

사용자 추가 생성하기

  • 1) 오른쪽에 useradd test 만들고, exit하여 일반 사용자로 남겨놓고,
    2) 왼쪽 터미널 창을 추가하여 root 로 들어온 다음, test로 바로 옮긴다. root에서 사용자를 변경할 경우 비밀번호가 따로 필요없다.

양쪽에서 빈 파일을 test_file / prana_file로 만들어준다.
rm -rf /home/bsj/dir1/prana_file 로 왼쪽 터미널에서 삭제해준다.

삭제가 가능한 이유는, dir1 디렉토리 안에서는 삭제 가능하니까!
(변경시킬 수 있게 쓰기 권한이 있음)

  • 여러 명의 사용자가 동시에 이용 가능

그다음 dir2 디렉토리로 넘어와서

왼쪽 터미널에는 test_file 생성, 오른쪽 터미널에는 prana_file을 생성,
왼쪽 터미널에서 prana_file을 삭제하려고하면, stickybit가 있어서 삭제할 수 없다.

  • 그러면 읽기는 가능할까?
    오른쪽 터미널에서 vi prana_file 해서 hihihi 를 vi편집기로 수정하고,
    왼쪽 터미널에서 cat prana_file을 실행해봤더니 잘 나오는 것을 확인할 수 있다. (조회는 가능, 수정 삭제가 안됨!)

보통은 특정 디렉토리에 stickybit 부여
-> 대표적: /tmp 디렉토리

  • 여러가지 프로그램/시스템 동작하면서, 필요한 파일들을 잠깐동안 저장해두는 곳
  • 윈도우에도 있음 tmp 디렉토리가

그래서 stickybit는 directory에 보통 쓰이며, 실습 내용처럼 사용한다는 것을 알 수 있다.

0개의 댓글