はじめに
**やってもうた!**そこのポンコツのあなた!
僕はこの記事を書く際にコマンドをテストしている時にやってしまいました.
以下のコマンドで追記できます.(-aを忘れると地獄を見ます!!!)
zsh実行してる端末でやらないとエラー出るかも.
% echo "${USER}:x:${UID}:${GID}:${USER}:${HOME}:$(which zsh)" | sudo tee -a /etc/passwd
ふむ.
(-aを忘れると地獄を見ます!!!)
(-aを忘れると地獄を見ます!!!)
(-aを忘れると地獄を見ます!!!)
やってもうた.
なんということでしょう.-a
を忘れただけで自分しかログインできないマシンの完成です.(しかも再起動したら二度と起き上がらない)
**そもそもこういうことを避けるために/etc/passwd
を直接編集することは避けるべきです.**が,そうせざるを得ない状況になることもあります.(まあtee
でやらかすアホは僕くらいだと信じたいですが.)
でも諦めるのはまだ早いです.なんとしても復旧させます.
その際に僕が行った内容を備忘録としてここに残します.
今回の最大の目標
- /etc/passwd を元の内容に戻す
ここを目指します.
まず/etc/passwd
に書かれたユーザが自分だけなので
- sudo 不可(rootなんて人はいないよって言われる)
- su - 不可(同上)
- ssh 不可
- なんかいろいろ不可
- ていうか再起動したらログインも不可(たぶん)
sudoが不可なのでバックアップがあっても/etc/passwd
を編集することができません.
まあ,詰みです.
手順
1. OSのディスクを用意
なんとかして用意しましょう.自分の場合は自分の所属場所に置いてあるのでここは無問題でした.
2. OSのディスクからUbuntuを起動
BIOSの画面からOS起動順位を変えるか,起動オプションを使ってOSのディスクから起動させましょう.
BIOSの画面はPCメーカーによって出現させる方法が違います.(僕はF2
でした)
ディスクの読み込みが終わったら
Try Ubuntu without installing
でEnterを押します.
OSの再インストールはしません.
3. sudo 権限でファイラーを起動
怖いのでGUIで操作をしていきます.
コマンドだと打ち間違えてバックアップすらさようならする危険がありますので......
端末を開きます.左上のアプリケーションを開くところにterminal
と打てば出ます.
以下のコマンドを実行.
sudo nautilus &
これでsudo権限を持ったファイラーが現れます.
4. バックアップを書き戻す
ファイラーからHDD/SSD等がマウントされていることを確認します.
マウントされているなら,そのHDDへアクセスします.
恐らく(HDD/SSDなど)/etc/passwd-
**(最後にハイフンがある)**というファイルが直前のバックアップになっています.
この中身をファイラーなり端末なりからsudo権限を持ったgeditなどを起動して確認しましょう.
書き戻す内容がそれで合っていれば,内容をコピーします.
その後,今度は(HDD/SSDなど)/etc/passwd
**(今度はハイフン無し!)**をgedit等で開きます.
sudo権限を持ったファイラーから現れたgeditはまたsudo権限を持ちます.
さっきコピーした内容を書き戻して保存.
エラーが出なければ大勝利!おめでとうございます.
5. シャットダウンと再起動
シャットダウンしてOSのディスクを抜き,再度起動します.
無事にログインができることを確認したらOSのディスクを元の場所に戻しましょう.
終わりに
やらかした誰かの役に立てば幸いです.
最後に,
そもそもこういうことを避けるために/etc/passwd
を直接編集することは避けるべきです.
そもそもこういうことを避けるために/etc/passwd
を直接編集することは避けるべきです.
そもそもこういうことを避けるために/etc/passwd
を直接編集することは避けるべきです.
大事なことなので3回言いました.おわり.