システムを起動せずに、bashスクリプトを使用してLinuxシステムのrootユーザーのパスワードを変更する方法を探しています。私がこれまでに見つけたのは、パスワードを削除するか、使用したくないchrootを使用することだけです。
ルートパスワードを空にする方法は知っていますが、スクリプトの前半で定義した別のパスワードに変更する必要があります。
ファイルシステム全体にrootアクセスできます。
システムはシャドウパスワードを使用していますが、ログイン/ chrootせずに暗号化されたシャドウパスワードを生成する方法はありますか?
スクリプトからルートパスワードを変更する他の方法はありますか?
2 に答える
パスワードハッシュはにあり/etc/shadow
ます。生成された(ソルトされた)ハッシュに置き換えるだけです。パスワードハッシュの形式は、crypt(3)で説明されています。デフォルトはDESですが、glibc2システムでは、いくつかの異なる暗号化方式のいずれかを含めることができます。
ID | Method
---------------------------------------------------------
1 | MD5
2a | Blowfish (not in mainline glibc; added in some
| Linux distributions)
5 | SHA-256 (since glibc 2.7)
6 | SHA-512 (since glibc 2.7)
したがって、シャドウパスワード文字列は次のようになります。$5$saltysalt$KhboodWTnuXJ5siXvWx5mxYXbnuNJOxROfD1inCILfD
この場合、最初の$ 5 $の部分は、それがSHA-256ハッシュであることを示し、中央の部分はソルトであり、残りは実際のハッシュです。
1つを生成するには、システムのcrypt(3)関数を使用するのが最適です。たとえば、最小限のCプログラムを使用します。
#include <stdio.h>
#include <crypt.h>
int main(int argc, char *argv[]) {
printf("%s\n", crypt(argv[1], argv[2]));
}
プレーンテキストのパスワードとソルト文字列を使用してコンパイルしcc mkpass.c -o mkpass -lcrypt
て実行し、次の場所に入力できる文字列を生成します/etc/shadow
。
./mkpass yourpassword yoursalt # DES (default)
./mkpass yourpassword '$6$yoursalt$encrypted' # SHA-512 (quote your $)
2番目の形式は、古いLinuxシステムではサポートされていない可能性があります。シャドウファイル内の既存の文字列をよく見て、同じハッシュタイプを使用してください(上部の$ id $リストから)。
e
OS選択メニュー画面のUbuntuタブを押します。次のようにコマンドを更新します
rw init=/bin/bash
Linuxルートシェルがドロップされます。passwd rootという名前のコマンドを入力するだけで、rootパスワードを変更できます。