루트 비밀번호를 찾아주세요~

안녕하세요~

지금까지 루트 권한으로 많은것을 설치하고 그랬는데요,
몇일전에 제 계정(루트)을 /etc/group파일에 있는 cvs라는 그룹에 넣었습니다.
그 뒤부터는 sudo가 안먹히는데요…(비밀번호가 틀렸다고 나옵니다)
아마 루트 권한 가진 자가 어느 특정 그룹에 속하게 됨으로써 루트 권한을 잃어버린거 같습니다.

sudo 안먹히는지라 /etc/group에 있는 파일을 고칠수도 없게 되었습니다.

이거 난감하게 되었네요;;
재설치를 하고싶지만 다른 방법도 있을 거 같습니다.
해결할 방법이 없을까요?

고수님들의 의견 기다리겠습니다~^^;

1레벨 부팅해도 안 됩니까?

[quote="his363":30q83y0a]안녕하세요~

지금까지 루트 권한으로 많은것을 설치하고 그랬는데요,
몇일전에 제 계정(루트)을 /etc/group파일에 있는 cvs라는 그룹에 넣었습니다.
그 뒤부터는 sudo가 안먹히는데요…(비밀번호가 틀렸다고 나옵니다)
아마 루트 권한 가진 자가 어느 특정 그룹에 속하게 됨으로써 루트 권한을 잃어버린거 같습니다.

sudo 안먹히는지라 /etc/group에 있는 파일을 고칠수도 없게 되었습니다.

이거 난감하게 되었네요;;
재설치를 하고싶지만 다른 방법도 있을 거 같습니다.
해결할 방법이 없을까요?

고수님들의 의견 기다리겠습니다~^^;[/quote:30q83y0a]

[quote:hxo0xizw]몇일전에 제 계정(루트)을 /etc/group파일에 있는 cvs라는 그룹에 넣었습니다.
그 뒤부터는 sudo가 안먹히는데요…(비밀번호가 틀렸다고 나옵니다)[/quote:hxo0xizw]

ㅋ 아마도 cvs그룹에 자신을 넣기 위해

[b:hxo0xizw]sudo usermod -G cvs his363[/b:hxo0xizw]

하셨던 모양인데 흔히 하시는 오류입니다.

usermod명령을 사용하실땐 극히 주의하셔야 합니다.
-a (append 추가) 옵션 없이 -G 옵션만으로 저렇게 사용자를 그룹에 넣게 되면
이전에 속해 있던 그룹에서는 그 사용자를 제거해 버리게 됩니다.
예컨데 sudo를 사용하기 위해 이전에 admin그룹에 속해 있었을 텐데
-a 옵션 없이 사용한 결과 his363가 admin그룹에서 제거되고
더이상 sudo를 사용못하게 되죠.

정확한 사용법은

[b:hxo0xizw]sudo usermod -a -G cvs his363[/b:hxo0xizw]

입니다.

뭐 본래 주제로 돌아가서 이유야 어쨌든 일반계정 his363이 sudo를 사용못하게 됐다면
처하신 상황에 따라 두가지 해결방법이 있습니다.어떤분들은 부팅 늦는걸 못견뎌하셔서
Grub boot menu timeout을 0으로 설정하신분들 계시죠? 이런 분들은 grub부팅 메뉴 자체가
나타나지 않으니까 ( 0으로 설정하지 마세요. 라이브 시디가 없으면 빼도 박도 못하고
운영체제 재설치해야하니까요 ㅋ) 라이브시디를 사용하시고

[quote:hxo0xizw]### vulpes님의 지적으로 조금 고칩니다.
Grub boot menu timeout을 0으로 설정하신분들도 "순간을 잘잡아" Escape 키나 Shift 키를
쳐주면 메뉴가 뜬다고 합니다(저는 성공해보지 못했습니다).grub 이나 grub2 메뉴가 뜨자마자
방향키를 쳐서 무한대기 모드로 들어가면 타임아웃 적용을 받ㄴ지않고 리커버리 모드를 선택할수 있다고 합니다.[/quote:hxo0xizw]

아닌 분들은 재부팅하신 뒤 grub 부팅메뉴에서 recovery mode를 선택하시면 됩니다.

  1. 리커버리 모드의 경우

사용중인 컴퓨터에 우분투만 설치되어 있다면 부팅시에 Escape 키를 누르면 grub부팅 메뉴가 나타납니다.
다른 운영체제와 듀얼 부팅하고 있다면 Escape 키 안눌러도 grub부팅 메뉴가 나오구요.
Ubuntu 9.10 (Karmic)경우는 사용중인 컴퓨터에 우분투만 설치되어 있다면 Shift 키를 눌러야 부팅 메뉴가 나옵니다.
주의하세요.

이제 이 부팅메뉴에서 (여러 커널이 설치된 경우라면 원하는 커널의) recovery mode를 선택한뒤 부팅이 완료되면
나타나는 여러 옵션중에 Drop to root shell prompt 옵션으로 방향키를 써서 선택한뒤 엔터를 눌러줍니다.
이제 룻쉘에서 원하는 사용자를 admin그룹에 다시 넣어 줍니다. -a 옵션 꼭 넣으세요 ㅋ.

usermod -a -G admin his363

exit

해서 빠져나오면 다시 recovery 메뉴가 보일겁니다.
resume normal boot을 선택해서 정상부팅하면 이제 된겁니다.

  1. 라이브 시디의 경우

라이브시디로 부팅한뒤 부팅메뉴에서 "Try Ubuntu without any change to your computer" 를 선택
부팅이 끝나면 터미널을 열고

sudo fdisk -l

해서 나온 결과중에 자신의 리눅스의 /가 설치된 파티션(예컨대 /dev/sda1)을 찾아서
적당한 마운트 포인트를 만든뒤 마운트 해줍니다.
(라이브시디 디폴트 계정은 ubuntu,패스워드는 없습니다.
즉 패스워드 요구하면 그냥 엔터치면 된다는 의미)

$ sudo mkdir /media/mylinux
$ sudo mount /dev/sda1 /media/mylinux
$ sudo chroot /media/mylinux

이제 다음 명령으로 원하는 계정(예컨대 his363)을 admin그룹에 추가해줍니다.

usermod -a -G admin his363

reboot

!!!사족 1.
이런 과정을 거치고나면 이런 생각이 드실수도 있습니다
recovery mode는 바로 root계정이 되게 해주니 상당히 보안에 취약한것 아닌가?
recovery mode에 아무나 접근 못하게 하기 위해서는 grub 패스워드를 설정하면 됩니다.
아니 아예 BIOS 패스워드를 설정할수도 있습니다.

하지만 근본적으로 말해서 내 컴퓨터에 누군가 물리적으로 접근가능하면
사실상 어떤 방법으로도 접근을 막을 수가 없는게 사실입니다.
grub패스워드는 live cd 로 부팅하면 소용이 없게 되고
bios패스워드도 하드 디스크를 빼서 다른 컴퓨터에 연결해버리면 역시 무용지물이 되구요.

!!! 사족 2.

아 왜 룻 패스워드 안찾아 주고 admin어쩌고 하라는 거야?
하시는 분들릏 위해 sudo의 작동 원리에 대해 설명을 좀 드리자면

sudo 는
/etc/sudoers 파일에 있는

Members of the admin group may gain root privileges

%admin ALL=(ALL) ALL

란 부분과

/etc/group 파일의

admin:x:113:his363,aaabbb,cccddd

항목을 바탕으로 예컨대 룻계정없이도 his363 aaabbb cccddd 이들 세 사용자는
자신들의 패스워드만으로 룻권한 명령을 사용할수 있게 됩니다.
왜 admin그룹에 사용자를 추가하기만 하면 되는지 아시겠지요?

!!! 사족 3.

루트 패스워드는 기본적으로 설정되지 않으므로, 일부러 설정하지 않으셨다면 ‘찾아’ 드릴 방법은 없습니다. ;)

usermod 정확한 사용법을 숙지하지 못해 일어난 거 같습니다^^
위엣분들 답변 정말 감사드립니당~

usermod 에 -a 옵션을 추가하니 잘 되네욤~!!

[quote="reandr":19wrbuzf]어떤분들은 부팅 늦는걸 못견뎌하셔서
Grub boot menu timeout을 0으로 설정하신분들 계시죠? 이런 분들은 grub부팅 메뉴 자체가
나타나지 않으니까 ( 0으로 설정하지 마세요. 라이브 시디가 없으면 빼도 박도 못하고
운영체제 재설치해야하니까요 ㅋ)[/quote:19wrbuzf]

약간의 사족인데… 제가 전에 0으로 해놓고 썼었는데 그래도 Grub불러온다고 하는 그 순간 esc누르니까 부팅 메누로 진입했었던걸로 기억하는데요?

이론적으로 말해서 timeout은 키를 눌렀을때 메뉴가 나타나는 시간 뿐 아니라 메뉴가
나타난 이후 리커버리를 선택하고 엔터를 누르는 시간까지 다 포함해서 0입니다.

해보셨다니 할말은 없지만 "순간을 잘잡아 메뉴가 떴다" 해도
0초 이내에 선택이 될수 있었다니 놀랍군요.

[quote="reandr":164o7y7z]이론적으로 말해서 timeout은 키를 눌렀을때 메뉴가 나타나는 시간 뿐 아니라 메뉴가
나타난 이후 리커버리를 선택하고 엔터를 누르는 시간까지 다 포함해서 0입니다.[/quote:164o7y7z]

에? 이건 확실하게 아닙니다. 경험상 타임아웃은 부트 메뉴에 진입한 후 자동으로 선택된 옵션으로 부팅하기 전까지 인풋을 기다리는 시간으로, 키 입력을 받은 시점에서 타임아웃 카운트 다운은 종료되고 가만히 유저 인풋을 기다리는 상태가 됩니다. 그 상태에서 가만히 계속 놔둬본적은 없어서 영원히 대기가 되는건지는 모르곘지만 암튼 제가 체감할 수 있는 한 그대로 버티고 있게 되더군요.

[quote="Vulpes":1hl60txe][quote="reandr":1hl60txe]이론적으로 말해서 timeout은 키를 눌렀을때 메뉴가 나타나는 시간 뿐 아니라 메뉴가
나타난 이후 리커버리를 선택하고 엔터를 누르는 시간까지 다 포함해서 0입니다.[/quote:1hl60txe]

에? 이건 확실하게 아닙니다. 경험상 타임아웃은 부트 메뉴에 진입한 후 자동으로 선택된 옵션으로 부팅하기 전까지 인풋을 기다리는 시간으로, 키 입력을 받은 시점에서 타임아웃 카운트 다운은 종료되고 가만히 유저 인풋을 기다리는 상태가 됩니다. 그 상태에서 가만히 계속 놔둬본적은 없어서 영원히 대기가 되는건지는 모르곘지만 암튼 제가 체감할 수 있는 한 그대로 버티고 있게 되더군요.[/quote:1hl60txe]
잘못 아시는 겁니다. 바로 그 grub 메뉴가 가만히 유저 인풋을 기다리는 시간이 예를 들어 5초 또는 0초인겁니다
메뉴가 뜨고 아무것도 입력하지 않고 5초 기다리리면 첫째 줄 항목이 자동.선택되서 진행되지요. 일반적인 입력대기가 영원히 대기하는것과 다르죠 :) getchar해서 무한 입력 대기하는것을 연상하신듯합니다.

알기 쉽게 예를 들어 보죠.

timeout 값을 5초로 설정해 놓았다고 합시다.
리눅스밖에 설치안되어 있어서 esc키나 (shift 키 karmic)를 눌러서 뜨든 멀티부팅중이라 자동으로 뜨든
여하튼 grub이나 grub2 메뉴가 떴다고 할때

사용자의 입력(항목 이동을 위한 방향키나 선택완료를 위한 엔터키)을 기다립니다.

영원히? 아니면 vulpes님께서 연상하듯 또다른 매직값이
있어서 그 시간 만큼 기다리는 걸까요? 방향키로 왔다 갔다만 하고 엔터키를 안누르면
과연 무한 대기하거나 vulpes 님같은 고수만이 아는 알수없는 또다른 매직 시간값만큼 기다릴까요?

그렇지 않습니다.
방향키를 누르던 아무키도 안누르던 어떤 종류의 입력에도 상관없이
메뉴뜨고 5초 지나면 항목의 첫번째 내용이 자동선택되고 부팅됩니다.
그런데 그 값이 0초라면 어떨까요?
극히 드물게 "나는 0초 설정했지만 메뉴뜨더라" 하는 분이 계시지만
사실 메뉴를 띄우기도 어렵지만 0초내에 그 메뉴에서 방향키로
이동하고 엔터키를 쳐낸다는 건 하늘에서 별을 따는 일입니다.

[quote="reandr":6tydur2o]방향키로 왔다 갔다만 하고 엔터키를 안누르면
과연 무한 대기하거나 vulpes 님같은 고수만이 아는 알수없는 또다른 매직 시간값만큼 기다릴까요?[/quote:6tydur2o]

아뇨, 이건 reandr님이 잘못 알고 계신겁니다. 직접 해보세요. 그렇게 기다립니다.

굳이 대기시간을 바꿀것도 없습니다. 몇초로 세팅해 놓으셨던 간에 부팅메뉴에서 유저가 아무런 인풋이 없을 경우, 화면 하단에 그 시간만큼 카운트다운이 될겁니다. 방향키든 뭐든 그 시점에서 한번 눌러보세요. 그럼 그 카운트다운이 멈추는게 아니라 사라집니다. 그리고는 유저 인풋을 그냥 마냥 기다리는 상태가 됩니다. 사실 얼마나 기다리는지 궁금하기도 해서 한 5분정도 가만히 놔둬도 아무런 반응이 없더군요. 더 이상 기다리는건 무의미할거 같아 그냥 부팅했습니다만…

생각을 해 보세요. 유저 인풋이 있었다는건 그 시점에서 유저가 뭔가 하겠다는 겁니다. 그럼 그걸 기다려 줘야죠. 게다가 부팅 메뉴에서 선택만 하는것도 아니고 추가로 옵션을 줘서 부팅해야 하는 경우도 있는데 말씀하신 대로라면 기본 세팅일 경우, 10초안에 메뉴 띄우고 화다다닥 입력한 다음 부팅시켜야 한다는 말이 됩니다. 무슨 오락실 캐릭터 고르는것도 아니고 10초라고 세팅했다고 무슨 일이 있던간에 그 10초만 기다리는게 더 말이 안되잖습니까?

덧붙여서, grub부팅메뉴가 뜨기 전에 그 부팅메뉴를 로딩한다는 화면이 잠깐 뜹니다. 0으로 세팅했을 경우, esc를 누르는 타이밍은 바로 그게 뜰 때입니다. 그럼 대기시간 0을 무시하고 부팅 메뉴로 진입하게 되는걸로 압니다.

그렇군요 vulpes님께 사과드립니다. 방향키를 치는 순간 타임아웃은 멈추고 엔터키 칠때까지
무한대기하는게 맞습니다. 물론 timeout 0인 상태에서 메뉴를 띄울수 있는지는 여전히 의문이지만
여하튼 메뉴가 뜨면 재빨리 방향키를 쳐서 무한대기 모드로 들어가야 안전하겠네요.
그럼 본문을 조금 정정하겠습니다.

[quote="reandr" timeout 0인 상태에서 메뉴를 띄울수 있는지는 여전히 의문이지만
[/quote]
믿음이 부족하시군요~
불신지옥!!! 그러다 지옥 갑니다.ㅋㅋ

농담이구요. 윈도의 F8과 같은 방법이라고 보시면 될듯…