関連Linux Mintのrootパスワードはなぜ私のユーザーパスワードですか?
私のMint 17.3ボックスにはrootパスワードが設定されているようです。パスワードハッシュ/etc/shadow
(で始まる$6$...
)が表示されます。このパスワードハッシュを私の(既知の)ユーザーパスワードと比較したいと思います。
su -
何らかの理由で(接続された質問で)あなたが使用しないと信じていません私のものパスワード、根パスワード。
既知のハッシュと既知のパスワードを比較して一致することを確認する簡単な方法(bashなど)はありますか?
答え1
/etc/shadow
2番目と3番目の文字の間に使用された塩を見つけます。$
通常8つあります。
mkpasswd -m sha-512 -S <salt>
リクエストに応じて使用する必要があると思われるパスワードを使用して入力してください。$6$<salt>$
接頭辞付きのハッシュ値を出力します。
答え2
crypt(3)
最後に、最初の引数としてパスワードを使用し、2番目の引数としてハッシュ()を使用して(GNU libcを含むLinux MintなどのGNUシステムで)関数を呼び出す必要があります。libcrypt
$6$...
python
この機能を公開して次のことができるツールです。
HASH='$6$...' python2 -c 'import crypt, os, getpass
print(crypt.crypt(getpass.getpass(), os.environ["HASH"]))'
出力がハッシュと一致する場合、パスワードは正しいです。
$HASH
上記は、完全なハッシュ(たとえば$6$rounds=1234$somesalt$6eFBNhSgwEwdfZBHueBedpcqaVKGcV2DJy/tQMFd3JL88hwvgTkISJShnOUrbtP1fRs8I9rGIdsgWCoiujxD2/
)、または一番右の部分$
(たとえば、ソルトとオプションのラウンド数($6$rounds=1234$somesalt$
)を含む)です。
または、以下で確認できますpython
。
HASH='$6$...' python2 -c '
import crypt, os, getpass
hash = os.environ["HASH"]
if crypt.crypt(getpass.getpass(), hash) == hash:
print "OK"
else:
print "Wrong password"'
(もちろん、$HASH
完全なハッシュを含める必要があります)。
python
このモジュールを使用して、ctypes
すべてのライブラリから関数を呼び出すこともできます。したがって、システム関数を呼び出すもう1つの方法は次のとおりですcrypt()
(標準モジュールの1つのように実行する必要はなく、モジュールに独自の別々の実装があるというcrypt
印象を受けました)。crypt
crypt()
HASH='$6$...' python2 -c '
from ctypes import *
import os, getpass
l = CDLL("libcrypt.so.1")
l.crypt.restype = c_char_p
print l.crypt(getpass.getpass(), os.environ["HASH"])'
答え3
ssh root@localhost
ただし、念頭に置いておくべきことは、ディストリビューションがルートへのパスワードベースのログインを完全に無効にしたか、キーペアをインストールしたこと、または一般的なグラフィカルログイン画面を使用してユーザーとしてログインした可能性があることですroot
。 (自動ログインを有効にしてもダイアログボックスを閉じると、他のユーザーとしてログインするように求められます。)