우분투에서 수도 (sudo) 사용자 추가방법, sudoers

|
우분투의 경우 설치시 기본적으로 root로긴을 허락치 않는다. 이를 대체할 sudo 명령을 주로 사용하며 root 권한으로 모든 것을 실행할 수 있으므로 필요치 않기 때문이다. 우분투 설치시에 계정을 추가하는 부분이 있는데 그때 넣어준 계정은 실제적으로 sudo 명령을 실행할 수 있는 권한을 자동적으로 부여받게 되어 있다. 이때 소속그룹admin 으로 되어 있다.

그러면 리눅스 박스를 2사람 이상이 공동으로 관리하고자 할 때 sudo  사용자를 추가해 줄 수 있는 방법은 무엇이 있을까? 리눅스 박스에서 일반사용자들의 경우 su 명령이나 sudo 명령을 거의 사용하지 않을 것이다. 따라서 이런 이유에서 수도사용자를 추가하는 방법이 몇가지 존재한다. 모로 가도 서울만 가면 된다는 말이 있듯이 해결방법은 다양한 듯 하다.

첫째, 우분투에서 사용자 추가시 새로 발급하는 계정(account)을 admin 그룹으로 넣어주는 것이다.

# sudo useradd -n -d /home/user1 -G admin user1
# sudo passwd user1
passwd:

위의 과정을 설명하면
-n : 새로운 계정을 추가하는 옵션
-d : 해당계정의 디렉토리를 만들어 주는 옵션
-G : 해당 그룹에 속하도록 하는 옵션
user1 : 발급하고자 하는 계정(account)

이렇게 하면 user1 계정은 sudo 명령을 root 권한으로 사용할 수 있게 된다.

둘째, 일반사용자를 추가한 후 /etc/group 파일을 편집하여 해당 계정 사용자의 구룹을 admin에 추가해 준다.

# sudo useradd -n -d /home/user1  user1
# sudo passwd user1
passwd :

# sudo vi /etc/group
...
(중략)
admin:x:115:isjang,user1
(중략)
....

:wq

admin 그룹의 id 는 115번이며 isjang은 우분투 설치시 생성해서 root 권한을 실행할 수 있는 이미 발급되어진 계정이다. user1 은 isjang옆에 코마(,) 로 추가해 준다.

그리고 나서 user1 으로 로긴하면 sudo 명령을 사용할 수 있게 된다.

셋째, 우분투 이외의 일반적인 리눅스 시스템에서 su 나 sudo 의 경우는 관리자 외의 일반계정 사용자들이 사용할 필요가 없는 것들이다. 그런데 그룹사용자 외에는 위 명령 자체를 실행하지 못하도록 하려면 해당 화일의 그룹을 wheel 로 변경한 다음 wheel 그룹에 사용자들을 넣어주고 그 외의 계정 사용자들은 명령어 접근 자체를 제한 시켜 시스템 보안을 높일 수 있다.

이것은 wheel 그룹을 생성하여 추가해 주는 방법인데 이때는 역시 해당되는 그룹을 추가해 넣기 위하여 visudo 명령어를 이용하여 /etc/sudoers 파일을 직접 편집하는 것이다. 이때 주의할 점은 편집시 조심해야 한다는 것이다. 잘못 편집하여 내용이 조금이라도 틀릴 경우가 발생하면 sudo를 아예 사용할 수 없는 불상사가 발생할 수 있을지도 모르기 때문이다. ^^;;

# su root
# visudo  하여 편집모드로 들어간 다음
맨 하단 부분에
%wheel ALL=(ALL) ALL 를 추가한 다음 빠져나온다.
# whoami
root
# chgrp wheel /bin/su /usr/bin/sudo  // 만일 우분투에서 sudo 를 이용하여 이 행을 실행하면 setuid 가 사라지므로 root 비밀번호를 주지 않았을 경우에는 실행하면 안된다.
# chmod o-rwx /bin/su /usr/bin/sudo
# vi /etc/group
...
wheel:x:1001:user2,user3
...

:wq


# /etc/sudoers
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults    env_reset

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL) ALL

# Uncomment to allow members of group sudo to not need a password
# (Note that later entries override this, so you might need to move
# it further down)
# %sudo ALL=NOPASSWD: ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
%wheel ALL=(ALL) ALL

혹시 우분투에서 위와 같이 세번 방법으로 구지 따라하다가 낭패를 보신 분들은 싱글모드로 부팅하여 root 비밀번호를 획득해야 하거나 root 비밀번호를 잃어버렸을 경우 최악의 경우 시스템을 재설치해야 할 수도 있다.

우분투 또는 리눅스에서 Grub 을 이용하여 멀티부팅을 할 경우 해당 리눅스라벨을 선택한 후 싱글모드로 부팅하기 위해서는
GRUB 메뉴에서 e 를 누르고

kernel 을 커서에 맞추고 다시 e 를 한번 더 누른다음
맨 끝줄에 single 을 타이핑 한 후 엔터키를 친다. 그리고 마지막으로
b 를 누르면 되는데 b 는 booting 의 약어다.


wheel 그룹에 대한 간단한 설명
출처 - http://www.kernel-panic.org/wiki/GroupWheel

그룹 (Wheel)

휠그룹은 무엇을 위한 것인가? 대부분 오랫동안 사용되어오면서 모호한 표현이라 생각한다. 이것은 사용자 권한을 나누기 위해 사용된다. root, 휠그룹, 그밖의 사용자로 3개의 계층으로 분류되어 있다.

보통 휠그룹은 그에 속한 그룹 사용자들만 su root 를 사용할 수 있도록 하는 기능이다. FSF(자유소프트웨어 재단) 그룹은 이 원칙에 별로 따르지 않는데 왜냐하면 그것이 수학적 알고리즘이 아니기 때문이다.

사용자를 최소로 구분하는 것은 sudo 에 의한다. 가장 많은 sudo 권한을 위한 자격으로 휠그룹 멤버쉽이라 불리는 것이 있다.

역사적으로 말하면 그것은 초기 BSD중의 하나에서 시작되었다 생각한다.

휠그룹을 만들므로써 휠의 기능을 쉽게 다시 만들 수 있으며 그리고 su 와 sudo (둘다 setuid 프로그램이다.)를 wheel 그룹으로 만들고 나서 다른 사용자에 대해서는 사용권한을 제거한다.

  # chgrp wheel /bin/su /bin/sudo
  # chown o-rwx /bin/su /bin/sudo

물론 이것은 실제적으로 정상적인 사용자들에게 su와 sudo 를 사용할 수 없게 만든다. 문제는 서버에 어떤 정상적인 사용자들이 있는가이다.

And