【Ubuntu 11.04】パスワードに関して:パスワードを忘れた場合の対処、sudo をパスワード無しにする、パスワードの生成について [ubuntu]
つい先日、下記の記事にsudoでパスワードを問い合わせ無しにする方法が載っていました。
http://unixmen.com/linux-commands/1771-how-to-avoid-sudo-password-prompt-
ただし、上記記事の通りにやるとUbuntu 11.04(Natty)では、ほぼトラブルになります。それと、sudoを使う時に楽ですが、セキュリティは甘くなります。Ubuntuマシンを自分しか触れない状況以外は、やらない方が良いです。(やらないで下さい。と言ってもいいくらい)
※一応、手順を一番最後の所に記述しておきます。
上記の方法をやってsudoが出来なくなったり、パスワードを忘れた時の為などに、パスワードに関する事を書いておきます。
<<sudoresをいじってsudo出来なくなった場合 >>
始めに示したURLの方法でsudoの時にパスワードを問い合わせないようにしようとすると、/etc/sudoersのパーミッションを変更するので、その後sudoをしても下記のようなエラーが出ます。(下記はsudo apt-get updateをした例)
natty@narwhal:~$ sudo apt-get update
sudo: /etc/sudoers is mode 0740, should be 0440
sudo: no valid sudoers sources found, quitting
ところで、Ubuntuはsuはデフォルトでは出来ないようになってます。なので sudoもできないしsuも出来ないので/etc/sudoersのバーミッションを戻せないと言う事になります。
そこで、 シングルユーザーモードでパーミッションを変更します。
1) Grubメニューを出す
他のOSがある場合は自動的に出ますが、出ない場合はShiftキーを押しながらパソコンを起動します。すると下図のメニューが出ます。
そしたら、(recoverey mode)と書いてあるのを選んで起動します。
2) rootでログイン
起動プロセスが進むと、最後の方で下図が出ます。
「root Drop to root shell prompt」を選んでエンターキーを押します。すると、下図のようにrootのプロンプトが出るはずです。
※ubuntu1104の部分はホスト名なので、各自が設定したものが出ます。それとrootにパスワードを付けた方は、このようにはなりません。後で説明します。
3) パーミッションの変更
/etc/sudoersの記述に誤りがある方は、
root@ubuntu11.04:~# vi /etc/sudoers
で記述を直して下さい。
そしたら、下記でパーミッションを戻します。
root@ubuntu11.04:~# chmod 440 /etc/sudoers
後は rebootコマンド(リブート)shutdown -h nowコマンド(シャットダウン)で終了して下さい。次回からsudoが出来るはずです。
<< パスワードを忘れた時の対処 >>
★デフォルトのままの方★
rootにパスワードを付けていない方が対象です。
1) シングルユーザモードで立ち上げる
前述の <<sudoresをいじってsudo出来なくなった場合 >>の「1) Grubメニューを出す」と「2)rootでログイン」の手順を行って、rootのシェルプロンプトを出して下さい。
2) passwdファイルの確認
下記のコマンドを入力して下さい。
root@ubuntu11.04:~# less /etc/passwd
すると最初の行が下図のはずです。
root:x:0:0:root:/root:/bin/bash
このファイルの構造は「:」で区切られていて、
ユーザ名:パスワード:ユーザーID:グループID:説明:ホームディレクトリ:ログインシェル
となっています。 ただし、パスワードの欄が「x」だとシャドーパスワードが使われます。Ubuntu11.04ではシャドーパスワードがデフォルトなので、全てxが付いています。
上記を踏まえて、自分のID(下記の例ではnatty)もパスワード欄「x」が付いているか調べて下さい。
natty:x:1000:1000:natty,,,:/home/natty:/bin/bash
3) パスワードを一時的に削除
シャドーパスワードファイルを編集してパスワードを一時的に削除します。
下記のコマンドでシャドーパスワードファイルを開きます。
vi /etc/shadow
自分のID(パスワードを忘れたID)を探して(下記の例ではnatty)、赤色を付けたコロンに挟まれた青色の文字を削除します。
natty:$6$Uk9Sabb7$f0GgNbsjy/KpjW45t8D.LTaJCSzx3.svsw3K55C
JyWfPGFrReN7dm99SFWXHQqaSkkIb2RsN1dG09EF04kvLs0:15154:
0:99999:7:::
すると下記のようになります。
natty::15154:0:99999:7:::
そしたらセーブします。これでパスワードが削除されます。
4) マルチユーザーに移行
rootプロンプトが出た状態でctrl+d を押すと、下図になります。
そうしたら、今度は「resume Resume normal boot」を選んで起動します。
そして、ログインプロンプトが出たら、自分のID(先ほどパスワードを削除したID)を入力してエンターキーを押します。するとパスワードが聞かれることなくプロンプトが出るはずです。
※今までのスクリーンショットとホスト名が変わっているのは気にしないでください。
5) 新しいパスワードを付ける。
下記を入力してパスワードを設定して下さい。※LANG=Cを設定したのは文字化けするからです。
natty@ubuntu11.04:~$ LANG=C
natty@ubuntu11.04:~$ passwd
successfullyと出れば成功です。今度からここで設定したパスワードが使われます。
※sudo less /etc/shadow で見ると今度は自分のIDの所にまだ文字列が入っているはずです。
あとは sudo reboot なり sudo shutdown -h now なりして下さい。
★rootにパスワードを付けた方★
sudo passwdとかやって、rootにパスワードを付けた方は、シングルユーザモード で立ち上げても下図になります。つまり、rootパスワードを聞かれます。
rootパスワードも忘れてしまった場合は、まだ試していません。
ただ、理屈上、下記の方法でできるのではと思っています。
1)Live CD(ext4がマウントできてLinuxならなんでもよい)で起動して、マウントします。(ここでマウントポイントを/mntとします。)
2) /mnt/etc/shadowのrootと自分のIDのパスワードを★デフォルトのままの方★の「3) パスワードを一時的に削除」と同じ方法でパスワードを一時的に削除します。
3) Live CDを抜いて、リカバリーモードで再起動します。そして自分のIDで入ります。
4) ★デフォルトのままの方★の「5) 新しいパスワードを付ける。」を行います。
5) sudo passwd root -l と入力して、rootに直接入れない様に(デフォルトに戻す作業)します。
ただ、2)のマウントしてパスワードを削除した時に、/etc/shadowファイルのパーミッション、ユーザ、グループがどうなるかが、ちょっと不安ですが・・・それさえ何とかなれば大丈夫だと思うのですが。。。。
その他、パスワードの生成の仕組みやsudo時にパスワードを入力しないで済むようにする方法が知りたい方は、広告の下の「続きを読む」を押してください。(既に開いている方もいると思います。)
←指紋認証USBメモリ
指紋認証USBメモリって意外と高い。
でも、高くてもデータの紛失のリスクを考えると
買う人いるんだろうな~
私には縁の無い物かも・・・