「/ etc / passwd」ファイルを削除してログインできません


22

ユーザー名とホームディレクトリ(/home/username)を変更しようとして、システムがクラッシュし始めました。passwdファイルを削除しましたが、という名前のバックアップがありましたpasswd_bkp。この名前を変更しようとしpasswd_bkpましたがpasswd、うまくいきませんでした。コマンドは実行されていませんでした...私はターミナルウィンドウにいました。

システムを再起動しましたが、ログインできません。GRUBには、Linuxとリカバリモードの2つのオプションがあります。

ルートとしてセッションを開こうとしましたが、ファイルシステムが破損しています。私がすることはできません、私のファイルにアクセスします。

すべてのファイルを失いましたか?


1
フォローアップの質問:回復技術を使用してパスワードを置き換えます。参照:askubuntu.com/questions/24006/...
david6

1
@ david6 ファイルがないために/etc/passwdユーザーがログインできない場合、パスワードをリセットすることもできません。passwdファイルを復元(または再作成)する必要があります。そして、それが完了すると、一般的にパスワードをリセットする必要はありません。
エリアケイガン

@Eliah Kagan:同意しましたが、/ etc / passwdが(おそらく)バックアップコピーから復元された後、フォローアップの質問に答えていました。
-david6

エラーについてより具体的にする必要があります。
psusi

回答:


32

いいえ、説明があれば、ファイルは失われません(/etc/passwd削除したが、バックアップしたファイルを除く)。

UbuntuライブCD / DVDまたはライブUSBフラッシュドライブを起動します。Try Ubuntu(ではなくInstall Ubuntu)を選択します。デスクトップがロードされたら、Nautilus(ファイルブラウザ)ウィンドウを開きます。Ubuntuシステムのパーティションはの下にありDevicesます。それをクリックしてマウントします。

これで、バックアップを復元できます。ただし、rootとして実行する必要があります。簡単な方法を1つ紹介します。

  1. ターミナルウィンドウを開きます(Ctrl+ Alt+ T)。ターミナルでcdSpaceキーを入力して入力しますが、Enterまだ押しないでください。

  2. Nautilusでetc、インストールされたUbuntuシステム内のディレクトリを見つけます。(これは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。代わりに、Ubuntuの一部として提供されるユーティリティを使用して、システム上のユーザーとグループに必要な変更を加える必要があります。システム設定またはでこれを編集できることをご存知でしょうusers-admin。しかし、このための非常に強力なコマンドラインユーティリティもあります。これは、構成ファイルを手動で手動で編集するよりもはるかに安全で簡単です。Ubuntuで最も関連性の高いこのようなユーティリティに関するドキュメントは次のとおりです。

  • adduser / addgroup
  • deluser / delgroup
  • usermod
  • groupmod
  • useradd(より低いレベル、adduser通常はadduser代わりに使用する必要があります)
  • userdel(より低いレベル、deluser通常はdeluser代わりに使用する必要があります)
  • groupadd(より低いレベル、addgroup通常はaddgroup代わりに使用する必要があります)
  • groupdel(より低いレベル、delgroup通常はdelgroup代わりに使用する必要があります)
  • passwd
  • gpasswd
  • pwck
  • grpck

これらのユーティリティのいくつかでユーザー名変更できます。この回答では、1つの方法を詳細に説明しています。ただし、一部のアプリケーションではユーザー名が同じままであると想定していることに注意する必要があります(現在、そこにコメントが記載されています)。そのため、ユーザー名を変更すると問題が発生する可能性があります。


どうもありがとうございます。ここブラジル南部の朝の4時です...私はとても心配で眠れませんでした。私はそれをしようと...
ジョアンロドリーゴ・レオン

2
バックアップを作成していない場合は、/etc/passwd-またはを使用してみてください/var/backups/passwd.bak。必ず正しい許可を設定してください。例:sudo install -m644 /etc/passwd- /etc/passwd
レーケンシュタイン

4

livecdを起動する代わりにe、grubメニューでを押してレスキューモードエントリを編集init=/bin/shし、カーネル引数に追加できます。これにより、ファイルシステムを読み書き可能に再マウントした後、バックアップファイルをコピーして元の場所に戻すことができるルートシェルに移動しますmount -o remount,rw /


1
これは機能しますか?なし/etc/passwdは、ルートと呼ばれるユーザーは存在せず、uid = 0を持つユーザーも存在しません。必要なユーティリティは、これらの異常な条件下で必ず機能しますか?
エリアケイガン

1
@EliahKagan、カーネルが最初のプロセスを開始するuidであるため、uid = 0のユーザーが常に存在します。 cpまたはmv/ etc / passwdは必要ありません。
psusi

これは私の愚かな尻を救った!/ etc / shadowのcrontabの内容に関する手動編集。「シャドー」を台無しにしないことは知りませんでした....私はf ** ckdだと思っていましたが、@ psusiに神に感謝します。 、彼のマウントに続いて、/ var / backupsからshawdowを/ etcの破損したものにコピーしただけです。新品同様..ありがとう
rowntreerob 14年

2

この答えを読み続ける前に、最初のエリアカガンの答えを読んでください。彼は、状況に対処する方法と、通常/ 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

その後再起動します。これにより、rootのパスワードは設定されません。

その後、ログインしたり、すべてのアカウントを再度作成したりできます。

呼ばれるバックアップを使用することもできます(私は思う) /etc/passwd-

編集 :(私が試したことのない別の方法ですが、それも動作するはずです)

  • ブート時にGRUBを開始します(ブートEsc中に押します)
  • 押すe(回復モード)
  • ekernelで始まる行を押します
  • 押しSpaceて入力init=/bin/bash
  • 押す Enter
  • 押す b
  • コマンドプロンプトで次を入力します。 cp /etc/passwd- /etc/passwd
  • GRUBを再起動します
  • 押すe(回復モード)
  • ekernelで始まる行を押します
  • 押し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.