“/ etc / passwd”파일을 삭제했는데 로그인 할 수 없습니다


22

사용자 이름과 홈 디렉토리 ( /home/username) 를 변경하려고하는데 시스템이 다운되기 시작했습니다. passwd파일을 삭제 했지만라는 백업이있었습니다 passwd_bkp. 나는이 이름을 변경 시도 passwd_bkppasswd그것은 작동하지 않았다. 명령이 실행되지 않았습니다 ... 터미널 창에있었습니다.

시스템을 다시 시작했는데 로그인 할 수 없습니다. GRUB은 Linux와 복구 모드의 두 가지 옵션을 제공합니다.

루트로 세션을 열려고 시도했지만 파일 시스템이 손상되었다고 말합니다. 내가 할 수없는 내 파일에 액세스 할 수 있습니다.

모든 파일을 잃어 버렸습니까?


1
후속 질문 : 복구 기술을 사용하여 비밀번호를 바꾸십시오. 참조 : askubuntu.com/questions/24006/…
david6

1
@ david6 파일 이 없어서/etc/passwd 사용자가 로그인 할 수 없으면 비밀번호를 재설정 할 수도 없습니다. passwd파일 을 복원 (또는 다시 작성)해야 합니다. 그리고 일단 완료되면 일반적으로 비밀번호를 재설정 할 필요가 없습니다.
Eliah Kagan

@Eliah Kagan : 동의하지만 / etc / passwd 가 백업 사본에서 (아마도) 복원 된 후 후속 질문에 대답했습니다 .
david6

오류에 대해 더 구체적이어야합니다.
psusi

답변:


32

아니요, 설명이 주어지면 파일을 잃어 버리지 않았습니다 (제외하고 /etc/passwd백업했지만 백업 한 파일 제외 ).

Ubuntu 라이브 CD / DVD 또는 라이브 USB 플래시 드라이브를 부팅하십시오. 선택 Try Ubuntu(하지 Install Ubuntu). 데스크탑이로드되면 노틸러스 (파일 브라우저) 창을 엽니 다. Ubuntu 시스템의 파티션은 아래에서 찾을 수 있습니다 Devices. 그것을 클릭하여 마운트하십시오.

이제 백업을 복원 할 수 있습니다. 그러나 루트로해야합니다. 여기에 아주 쉬운 방법이 있습니다.

  1. 터미널 창을 엽니 다 ( Ctrl+ Alt+ T). 터미널 cd에서 Space키를 입력 하고 입력 하되 Enter아직 누르지 마십시오 .

  2. 노틸러스 etc에서 설치된 우분투 시스템 내부의 디렉토리를 찾으십시오 . (이것은 etc라이브 CD 의 디렉토리 와 다릅니다 . etc설치된 Ubuntu 시스템 의 디렉토리는 방금 마운트 한 파티션에 있습니다.)

  3. etc디렉토리를 터미널로 드래그 하면 터미널에 전체 경로가 붙여지고 cd ...명령이 완료 됩니다.

  4. Enter명령을 실행하려면 누릅니다 . 이제 passwd파일 이 들어있는 디렉토리에 있습니다. 백업 파일 passwd_bkp이 (가) 여기 있다고 가정합니다 .

  5. 이 명령을 실행하십시오 :

    sudo cp passwd_bkp passwd
    

그러면 passwd백업 에서 파일 이 복원 되므로 이제 재부팅하고 CD / DVD 또는 USB 플래시 드라이브를 제거한 다음 설치된 Ubuntu 시스템으로 다시 부팅 할 수 있습니다. 설치된 Ubuntu 시스템이 다시 작동해야합니다.


미래를 위해, 당신은 수동으로 편집하지 않는 것이 좋습니다 알고 있어야한다 /etc/passwd, /etc/group, /etc/shadow, 또는 /etc/gshadow. 대신 우분투의 일부로 제공된 유틸리티를 사용하여 시스템의 사용자 및 그룹에 필요한 변경을 수행해야합니다. 시스템 설정에서 또는을 사용하여이를 편집 할 수 있다는 것을 알고있을 것입니다 users-admin. 그러나이를 위해 매우 강력한 명령 줄 유틸리티도 있습니다.이 유틸리티는 구성 파일을 직접 편집하는 것보다 훨씬 안전하고 쉽습니다. 우분투에서 가장 관련성이 높은 유틸리티에 대한 문서는 다음과 같습니다.

이러한 유틸리티 중 일부를 사용하여 사용자 이름변경할 수 있습니다 . 이 답변은 한 가지 방법을 자세히 설명합니다. 그러나 일부 응용 프로그램은 사용자 이름이 동일하다고 가정합니다 (현재 의견에 언급 된 것처럼). 따라서 사용자 이름을 변경하면 문제가 발생할 수 있습니다.


정말 고맙습니다. 여기 브라질 남부의 아침 4시입니다. 나는 그것을 시도 할 것이다 ...
주앙 로드리고 레아 오

2
백업하지 않은 경우 /etc/passwd-또는을 사용해보십시오 /var/backups/passwd.bak. 올바른 권한을 설정하십시오. 예 :sudo install -m644 /etc/passwd- /etc/passwd
Lekensteyn

4

livecd를 부팅하는 대신 egrub 메뉴를 눌러 복구 모드 항목을 편집 init=/bin/sh하고 커널 인수를 추가 할 수 있습니다. 이렇게하면 파일 시스템을 읽기 / 쓰기로 다시 마운트 한 후 백업 파일을 원본으로 다시 복사 할 수있는 루트 셸로 바로 이동합니다 mount -o remount,rw /.


1
이것이 효과가 있습니까? 없이 /etc/passwd, 루트라는 한 사용자 및 UID = 0 가진 사용자가 없습니다 . 필요한 유틸리티가 이러한 비정상적인 조건에서 반드시 작동합니까?
Eliah Kagan

1
@EliahKagan, 커널이 첫 번째 프로세스를 시작하는 uid이므로 항상 uid = 0 인 사용자가 있습니다. cp또는 mv/ etc / passwd가 필요하지 않습니다.
psusi

이것은 나의 멍청한 엉덩이를 구했다! crontab에 관한 / etc / shadow의 수동 편집. 나는 하나의 'shadow'를 엉망으로 몰랐다. ... 나는 f ** ckd라고 생각했지만 @psusi에 대해 신께 감사드립니다 .... 그가 말한대로 복구를 위해 grub 메뉴를 추가했습니다. , 다음 자신의 마운트 방금 복사 shawdow에서의 / var / 등의 손상 한 / 이상 백업 ... 좋은 새로운 .. 감사합니다
rowntreerob

2

이 답변을 계속 읽기 전에 먼저 Eliah Kagan의 답변을 읽어야합니다. 상황을 처리하는 방법과 일반적으로 / etc / passwd를 수동으로 변경하지 않아도되는 이유를 설명합니다.

당신이 어쨌든 경우 정말 당신이 무엇을하는지 아는 당신이 편집 할 필요가 /etc/passwd수동으로 , 당신은 그것을 할 수 있습니다,하지만 여전히 당신은 단순히 좋아하는 편집기로 파일을 변경하지 마십시오. 대신 도구가 있습니다

vipw

매뉴얼 페이지에서 :

The vipw and vigr commands edits the files /etc/passwd and /etc/group,
respectively. With the -s flag, they will edit the shadow versions of those
files, /etc/shadow and /etc/gshadow, respectively. The programs will set
the appropriate locks to prevent file corruption.

예를 들어 내가 아는 한 사용자 UID를 변경하려는 경우 파일을 수동으로 편집하는 것이 유일한 방법입니다. 또한 사용자 비밀번호를 변경 한 후이를 모르면 이전 비밀번호로 되돌리려는 경우 방법이 없습니다 usermod. 그러나 섀도우 파일에서 해시 된 비밀번호를 저장 한 다음 사용자의 비밀번호를 변경하면 나중에으로 섀도 ​​파일을 편집하여 해시 된 비밀번호를 다시 추가 할 수 있습니다 vipw -s.


1

@EliahKagan의 답변을 따르면 로그인 할 수 없으며 lightdm계정이 표시되지 않았습니다. passwd파일 의 권한이 올바르게 설정되지 않았다는 것을 발견했습니다 . lightdm 사용자가 액세스 할 수 없었습니다. 내가 고친 방법은 다음과 같습니다.

tty Ctrl+ Alt+ 에 로그인F1

/etc디렉토리로 변경

cd /etc

그런 다음 권한을 다음으로 변경하십시오. 644

sudo chmod 644 passwd

그런 다음 ls -la

권한 문자열은 다음과 같아야합니다

-rw-r--r--

-1

로그인 할 수 있다면 터미널을 열고 이것을 시도하십시오 :

sudo cp /etc/passwd- /etc/passwd
sudo chmod 644 /etc/passwd

그밖에

복구 모드로 부팅하거나 Ubuntu live Cd에서 부팅하십시오. 그런 다음 이전 드라이브를 마운트하십시오.

mkdir /olddrive
mount /dev/hda5 /olddrive
assuming that your old drive is on /dev/hda5.
then, cd to /olddrive/etc
type:
echo "root::0:0:Superuser:/:/bin/bash" > passwd

그런 다음 재부팅하십시오. 루트에 암호를 설정하지 않습니다.

그런 다음 로그인하고 모든 계정을 다시 만들 수 있습니다.

당신은 또한 (나는 생각합니다)라는 백업을 사용할 수 있습니다 /etc/passwd-

편집 :( 나는 전에 시도하지 않은 또 다른 방법이지만 작동해야한다고 생각합니다)

  • 부팅시 GRUB을 시작합니다 ( Esc부팅하는 동안 누르십시오 )
  • e오버 프레스 (복구 모드)
  • e커널로 시작하는 줄을 누르 십시오
  • 누르고 Space입력init=/bin/bash
  • 프레스 Enter
  • 프레스 b
  • 명령 프롬프트에서 다음을 입력하십시오. cp /etc/passwd- /etc/passwd
  • GRUB으로 다시 부팅
  • e오버 프레스 (복구 모드)
  • e커널로 시작하는 줄을 누르 십시오
  • 누르고 Space입력init=/bin/bash
  • 프레스 Enter
  • 프레스 b
  • 명령 프롬프트에서 mount -o remount,rw /
  • 유형 passwd YOURUSERNAMEHERE( ls /home사용자 목록에 대한 사용자 이름 유형 (소문자 L 및 소문자 S)을 모르는 경우)
  • 프롬프트에서 새 비밀번호를 입력하십시오
  • 일반 부팅으로 재부팅하십시오.

출처

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.