본문 바로가기
카테고리 없음

[Linux] 특수 권한 ① sudo(+ 설정법), umask

by 떵해이 2020. 11. 24.
300x250

간단하게 기초 특수 권한에 대하여 알아보도록 하겠습니다. 

 

○ sudo

    ▷ superuser do 약자

    ▷ root 권한을 빌려서 명령어를 실행하게 해주는 명령어

    ▷ 관리자 권한을 얻는 것이므로 아무에게나 주면 보안상 굉장히 취약

    ▷ 윈도우 관리자 권한으로 실행 = 리눅스 sudo

    ▷ 일반 유저가 사용하려면 /etc/sudoers 설정 파일에 등록을 해야 명령어 사용 가능

 

 

● sudo 설정 파일

# vi /etc/sudoers 명령어로 파일 수정 모드로 들어가줍니다.

 

 

# :set nu 명령어로 보기 쉬게 줄 번호를 달아줍니다.

 

 

100번째 줄을 보시면 sudo 사용 시 root는 superuser의 권한 가진다.

107번째 줄을 보시면 wheel 그룹이 sudo 사용 시 superuser의 권한을 가진다.

 

이 2가지를 보고 일반 유저들이 sudo를 사용할 수 있게 끔 하려면 wheel 그룹에 가입시켜야 합니다.

 

# head /etc/group 명령어를 통해 11번째 줄을 보시면 wheel 그룹을 확인합니다.

 

 

● sudo 명령어를 사용할 수 있게 하는 방법

 

처음에 그냥 일반 유저가 사용하게 된다면 어떻게 될까요?

저는 일반 사용자인 user라는 계정으로 접속하여 sudo 명령어를 실행해보았습니다.

 

 

이렇게 sudoers 설정 파일에 없다고 실행되지 않습니다.

어떻게 해야 일반 유저가 sudo 명령어를 사용할 수 있는지 알아보도록 하겠습니다.

 

 

위에서 언급하였듯이 wheel 그룹은 특별 권한을 가질 수 있는 그룹입니다.

이제 유저를 한번 그룹에 포함시켜 sudo 명령어를 사용할 수 있는 확인해보도록 하겠습니다.

 

일단 먼저 root계정으로 # ll /home 명령어를 통해 다른 계정이 어떤 것이 있나 확인해봅니다.

(/etc/passwd에서 확인을 하셔도 됩니다.)

 

 

혹시 사용자 계정(일반 유저)을 만들지 않으신 분들은 간단하게 # useradd test 명령어를 통해

test라는 유저를 생성해줍니다. # passwd test 명령어를 통해 비밀번호도 설정해줍니다.

계정을 2개 만들어봅니다. test1, test2 이렇게 만드셔도 상관없습니다. (나중에 테스트를 위해)

 

 

그룹을 넣어줄 때는 root계정으로 추가를 해줍니다.

그룹에 계정을 추가하는 방법과 주그룹과 부그룹의 차이는 it-serial.tistory.com/25 참조하시면 됩니다.

방법은 여러가지입니다. 저는 usermod를 이용하도록 하겠습니다.

 

# usermod -G wheel test 명령어로 test계정을 wheel 그룹을 보조그룹을 설정하였습니다.

 

 

# head -12 /etc/group 명령어로 wheel 그룹에 잘 추가되었는지 확인해보도록 합니다.

 

 

# groupmems -g wheel -l 명령어로 wheel 그룹의 가입된 사용자를 확인 할 수 있습니다.

 

 

 

이제는 su(switch user)명령어를 통해 test계정으로 들어가봅니다.

# su - test 

 

 

위에서 계정을 2개 만들었습니다. 저는 user와 test계정 2개 입니다.

test계정으로 접속하여 관리자 권한을 이용해 user의 비밀번호를 바꿔보도록 하겠습니다.

 

# sudo passwd user 명령어로 관리자 권한 얻고 user계정 비밀번호 바꾸겠다.

test계정의 암호를 입력 후 user계정의 새로운 비밀번호를 입력하면 됩니다.

 

 

이렇게 해서 일반 계정(사용자)가 root 권한을 얻을 수 있는 것을 확인하였습니다.

sudo 명령어를 사용하기 위해서는 이렇게 사전에 등록하여야 가능합니다.

 

관리자 권한을 획득하는 것이므로 굉장이 관리를 철저히 해야합니다.

관리자 권한으로는 일반 유저가 볼 수 없는 파일들을 보고 계정도 삭제 해버릴 수 있습니다.

그냥 사용할 수 있게 되면 보안상 굉장히 취약해지기 때문에 매우 주의하여야 합니다.

 

 

○ UMASK

    ▷ 파일/디렉토리를 생성할 때 가지게 되는 기본 허가권을 결정하는데 기준이 되는 값

 

 

# umask 명령어를 치면 지금 로그인되어 있는 계정의 umask 값이 나옵니다. 보통 기본값은 022입니다.

 

 

맨 앞자리 0은 스페셜 모드를 설정하는 것, 일단 배제하고 진행합니다.

스페셜 모드는 아래에서 간단하게 설명하겠습니다.

 

022 새로운 파일을 생성할 때 저 숫자만큼의 권한을 빼고 생성하겠다는 기본 설정 값입니다.

ugo 앞에서부터 user group other 권한입니다.

 

파일 기본 허가권은 666

디렉토리 기본 허가권은 777

 

원래 계산 할 때 AND 연산자를 이용하여 계산합니다.

 

● 정석으로 UMASK AND연산자로 계산하는 법

 

일단 파일로 예를 들어 계산 해보겠습니다.

 

UMASK (022) -> 2진수 -> 000 010 010

UMASK -> 보수 (2진수 반대) -> 111 101 101

파일 허가권 (666) -> 2진수 -> 110 110 110

 

같이 '1'일 경우만 1, 나머지는 모두 '0' 입니다.

 

111 101 101 (UMASK 보수)

110 110 110 (파일 허가권)

-----------------------------------AND

110 100 100 값이 나옵니다. rw- r-- r-- (644) 이라는 결과가 나옵니다.

 

그래서 우리가 파일을 새로 만들게 되면 UMASK에 의해 기본 권한이 rw-r--r--로 나옵니다.

 

 

● 쉽게 UMASK 계산하는 법

 

022면 원래 파일 기본 허가권이 666이니까

666-022=644가 됩니다. 그냥 빼줘도 됩니다.

 

UMASK는 # umask [값] 명령어로 바꿀 수 있습니다.

그리고 # umask 명령어를 통해 바뀐 값을 확인 하실 수 있습니다.

 

 

디렉토리도 한번 만들어보고 계산한 결과와 일치하는지 시도해보시면 좋습니다.

 

 

※ 특수 케이스 umask 값입니다.

   001 인 경우 - sticky mode

   010 인 경우 - setGID mode

   100 인 경우 - setUID mode

 

 

● 특수 권한

 

    ▷ 우리는 권한을 줄 때 755 이렇게 3글자로 표현합니다.

        예시) # chmod 755 test 명령어로 test파일/디렉토리에 권한을 줍니다.

 

    ▷ 항상 우리가 앞에 '0'을 생략하고 붙여서 그렇습니다.

 

    ▷ 원래는 0755 입니다.

 

    ▷ 위에 언급했듯이 0자리에는 특수 권한이 들어갑니다.

 

 

특수 권한 자리에 들어가는 숫자

'4'    ->    setUID

'2'    ->    setGID

'1'    ->    sticky bit

위와 같이 권한을 부여할 때 숫자를 함께 입력하면 특수 권한이 부여됩니다.

예시) # chmod 4755 test 명령어로 test파일/디렉토리에 특수 권한을 부여합니다.

       755는 아시는 대로 작용됩니다. 권한을 모르신다면 it-serial.tistory.com/26 참조하시면 됩니다.

 

위에 관련된 권한은 다음 글에서 설명하도록 하겠습니다.

 

반응형

댓글