web-dev-qa-db-ja.com

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

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

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

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

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

22

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

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

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

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

  2. Nautilusで、インストールされたUbuntuシステム内のetcディレクトリーを見つけます。 (これは、ライブCDのetcディレクトリと同じではありません。インストールされたUbuntuシステム内のetcディレクトリは、マウントしたばかりのパーティションにあります。)

  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
  • useraddadduserよりも下位レベル、通常は代わりにadduserを使用する必要があります)
  • userdeldeluserよりも下位レベル、通常は代わりにdeluserを使用する必要があります)
  • groupaddaddgroupよりも下位レベル、通常は代わりにaddgroupを使用する必要があります)
  • groupdeldelgroupよりも下位レベル、通常は代わりにdelgroupを使用する必要があります)
  • passwd
  • gpasswd
  • pwck
  • grpck

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

32
Eliah Kagan

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

4
psusi

この答えを読み続ける前に、最初のエリアカガンの答えを読んでください。彼は状況に対処する方法と、通常/ 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でシャドウファイルを編集して、ハッシュ化されたパスワードを再度追加できます。

2
lumbric

@EliahKaganの回答をフォローした後、lightdmからログインできず、アカウントがリストに表示されませんでした。 passwdファイルの許可が適切に設定されていないことを発見しました。 lightdmユーザーにはアクセスできませんでした。修正方法は次のとおりです。

Ttyにログインする Ctrl+Alt+F1

/etcディレクトリに移動します

cd /etc

次に、権限を644に変更します

Sudo chmod 644 passwd

次にls -laを実行します

許可文字列は次のようになります

-rw-r--r--
1
danidee