サイトアイコン puti se blog

Linuxでrootのパスワードなし(未設定)にする方法

Linuxで、

「rootユーザーにパスワードを設定しない
=rootで直接ログインさせない」

方法があります。

AWSのLinuxとかでは実装います。

環境・前提条件

AWS上の

環境でこちらの記事は確認しています。

結論、rootユーザーのパスワードを未設定(ロックする)コマンドは

前置きが長くなりましたが、rootユーザーのパスワード未設定(ロック)するコマンドは、

passwd -l root

で、出来ます。「パスワード設定無し」というよりもパスワード「ロック」という表現ですね。

man 1 passwd

Linuxでrootのパスワードなし(パスワード未設定状態)とは

AWS上のLinuxはデフォルトでrootユーザーはパスワード未設定(ロックされた状態)で提供されます。
なので、rootユーザーのパスワード未設定は意外と普通にあります。

以下、AWS上のLinuxのデフォルトで提供されたrootユーザーパスワード状態です。

/etc/shadow ファイル内のrootパスワードフィールドが、「!」もしくは「*」で記載されています。
これは、rootユーザーに(他のデーモンユーザーと同じく)パスワードを未設定状態にしているということを意味します。

※ 通常は暗号化(crypt)されたパスワードが入る箇所です。

shadowファイルのパスワードフィールドが「!」または「*」記載の意味

man 5 shadow

上記画面は、shadowファイルのman(マニュアル)です。

shadowsファイルのパスワードフィードの箇所に、

If the password field contains some string that is not a valid result of crypt(3), for instance ! or *, the user will not be able to use a unix password to log in (but the user may log in thesystem by other means).

日本語に訳しますと、

「パスワードフィールドに無効な文字列が含まれている場合
たとえば、crypt(3)の結果!または*、
ユーザーはUNIXパスワードを使用してログインすることはできません(ただし、ユーザーは他の方法でシステムにログインできます)。」

ということです。

実は、

cryptのハッシュでは使用されない文字があります。

ハッシュ化されたパスフレーズは、空白や文字「:」、「;」、「*」、「!」、または「\」は含まれないんです。

パスワード未設定状態ではrootユーザーでsshログイン出来ないの?(キーペア)

ちなみに、

AWS Redhat8ではキーペアでsshログイン出来るようになっていましたが、ログインしてもメッセージを表示させプロンプトが閉じる(exit)ようになっていました。

上の画面を見ますと、

echo 'Please login as the user \"ec2-user\" rather than the user \"root\".';
echo;
sleep 10;
exit 142


と書かれていることがわかりますね。

rootユーザーのパスワードを未設定(ロックする)を解除するコマンドは

passwd root

コマンドで再度パスワードを設定してあげる事も出来ます。

また、この状態で、

passwd -l root

コマンドでrootユーザーのパスワードをロックして、

passwd -u root

コマンドでrootユーザーのパスワードを復活(ロック解除だけ)することも出来ます。

モバイルバージョンを終了