태그 보관물: sudoers

sudo가 안 될 때

우분투 12.10을 막 설치하고 신나게 이런 저런 패키지를 설치하고, 설정 파일을 뚝딱 거리는데 어느샌가 sudo가 안 된다. 내가 sudoer가 아니란다.

sangkle@nohyung:$ sudo apt-get update
[sudo] password for sangkle:
sangkle is not in the sudoers file. This incident will be reported.

흠…… root 계정이 따로 있는 것도 아니고 sudoer도 달랑 나(sangkle) 하나인데, 당황했다. 첫경험이란 이런 것이다. 구글링을 열심히 했다. sudoer에서 쫓겨나는 이유는 대략 세가지다.

  1. /etc/sudoers 파일이 없어지거나 고장난 경우
  2. /etc/sudoers 파일 권한이 0440이 아닌 경우
  3. sudo(또는 admin) 그룹이 아닌 경우 (쫓겨난 경우)

결론은 /etc/sudoers 파일을 수정하거나 sudo 그룹에 나를 넣으라는 것이다. 이쯤이야

sangkle@nohyung:$ sudo usermod -aG sudo sangkle
[sudo] password for sangkle:
sangkle is not in the sudoers file. This incident will be reported.
sangkle@nohyung:$ sudo vi /etc/sudoers
[sudo] password for sangkle:
sangkle is not in the sudoers file. This incident will be reported

헉…… 설치한지 한 시간도 안 됐는데 망했다. 다시 구글링. 복구 모드로 가서 하란다. 아~ 복구…. 리붓

복구모드는 부팅할 때 Grub에서
두번째 메뉴 “Advanced options for Ubuntu”를 선택하고
또 두번째 메뉴인 “Ubuntu, with Linuxx 3.5.0-18-generic (복구모드)”로 들어간다.

복구모드로 들어가면 복구 메뉴(Recovery Menu)가 나온다. 여기서는 밑에서 두번째인
“root      Drop to root shell prompt”를 선택하면 루트로 로그인 된다.  그런데 복구모드에서는 파일 시스템이 읽기 전용으로 돼 있다. 그래서 다시 마운트를 해 줘야 한다.

root@nohyung:# mount -o rw,remount /

이제 고장 난 것을 고치자.

root@nohyung:# usermod -aG sudo sangkle
root@nohyung:# vi /etc/sudoers
root@nohyung:# chmod 0440 /etc/sudoers

sudoers 파일의 내용은 다음과 같다
[snippet]#
# This file MUST be edited with the ‘visudo’ command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults secure_path=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin”
# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root ALL=(ALL:ALL) ALL

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

# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on “#include” directives:

#includedir /etc/sudoers.d[/snippet]
exit로 쉘에서 나오면 다시 복구 메뉴가 나오는데 첫번째인 “resume  Resume normal boot”를 선택하면 일반 모드(?)로 돌아와서 부팅이 된다.