読者です 読者をやめる 読者になる 読者になる

パスワード変更時に「/usr/share/cracklib/pw_dict: error reading header」エラーが出たときの対処メモ

普段作業用に使っているVMのパスワードがなぜか変更できなくなったので、
そのとき調査したことと、復旧で行ったことをメモしておきます。


環境はCentOS6.6の64ビット版です。

起きたこと


passwd コマンドを使って、パスワードを変更しようとしたところ、以下のようなメッセージが出ました。

# passwd
ユーザー root のパスワードを変更。
新しいパスワード:
/usr/share/cracklib/pw_dict: error reading header
PWOpen: 成功です

調べた


参考リンクを元に環境を調べたところ、cracklibの辞書ファイルが0バイトになっていたため、辞書ファイルが壊れてしまったと推測。

# cd /usr/share/cracklib/
# ls -la
合計 264
drwxr-xr-x.  2 root root   4096  7月 21 12:13 2014 .
drwxr-xr-x. 78 root root   4096  5月 31 16:24 2016 ..
-rw-r--r--.  1 root root   1024  6月 25 15:39 2011 cracklib-small.hwm
-rw-r--r--.  1 root root 235109  6月 25 15:39 2011 cracklib-small.pwd
-rw-r--r--.  1 root root  12416  6月 25 15:39 2011 cracklib-small.pwi
-rw-r--r--.  1 root root    360  6月 25 15:39 2011 cracklib.magic
-rw-r--r--.  1 root root      0  1月 27 16:55 2015 pw_dict.hwm
-rw-r--r--.  1 root root      0  1月 27 16:55 2015 pw_dict.pwd
-rw-r--r--.  1 root root      0  1月 27 16:55 2015 pw_dict.pwi

直す


該当するファイルが含まれるRPMパッケージを確認すると「cracklib-dicts」であることが分かったので、これをインストールしなおすことにしました。

# rpm -qf /usr/share/cracklib/pw_dict.hwm 
cracklib-dicts-2.8.16-4.el6.x86_64


パッケージの依存関係に「pam」があったので、強制再インストールにすることにしました。

# rpm -q --whatrequires cracklib-dicts                                                                             
pam-1.1.1-20.el6.x86_64

# yumdownloader cracklib-dicts
# rpm -Uvh --force cracklib-dicts-2.8.16-4.el6.x86_64.rpm 


cracklib-dictsパッケージの再インストールを行った結果、パスワード変更ができるようになりました。

# passwd
ユーザー root のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: 全ての認証トークンが正しく更新できました。


今日はこんなところで。

awscliでWindowsインスタンスのパスワードを取得する

自分用のメモとしてWindowインスタンスのパスワードを取得する方法を。


通常だとマネジメントコンソール上で秘密鍵ファイルからAdministratorユーザーのパスワードを取得しますが、
結構面倒くさいので、コマンドラインからパスワードを取得する方法を試しました。


awscliでコマンドが用意されています。

$ aws ec2 get-password-data --instance-id i-xxxxxxxx
{
    "InstanceId": "i-xxxxxxxx",
    "Timestamp": "2016-08-27T07:58:22.000Z",
    "PasswordData": "\r\nAuEqrqN9xg7SrLgheizv0Y9jGVLzgVj+SxStcNzduNRjiOZzOzkFpqTiJeCQOgsXlhVTaytOqBiK3l05UDcvPXQL51i5wXB/RFy1DJlTQkBPaP4O6n28xBvDCUBS5VXhApNJgrZUUDkNfMXm4ZO1vktJzdXB0zkMe1mOi1zwJC9J5VwcKPD4YqADhH3z7FutNhDyJvjPsxlcUiTbZo0Sv54caeY1GQMhMChP9gj8QeC9+d0aKzuNXCHmbygt0mcv9s1iq+8/a+C+P9aA18h8NkeAGIwMt9RdsojjaRZLtNtJMg0mAJmJ2EfsoSnO8fEiAwjEd4eJ9RqIYHO7YLpXpA==\r\n"


そのままだと暗号化された状態のパスワードが戻ってくるので、復号するには秘密鍵ファイルを指定します。

$ aws ec2 get-password-data --instance-id i-xxxxxxxx --priv-launch-key /home/myuser/.ssh/id_rsa                                                                                       
{
    "InstanceId": "i-xxxxxxxx",
    "Timestamp": "2016-08-27T07:58:22.000Z",
    "PasswordData": "XXXXXXXXXX"
}


これで少し作業が楽になりそうです。
今日はこんなところで。

Windows Server 2012R2でIE Enhanced Security Configurationの設定を変更する

自分メモです。

Windows Server 2012R2では、初期状態で、「IE Enhanced Security Configuration」が有効になっています。
これを無効にする方法のメモ。

サーバーマネージャーから「IE Enhanced Security Configuration」を無効にすることで対応してみます。

サーバーマネージャーを起動


f:id:think-t:20160827151125p:plain


Local Serverを選択後、「IE Enhanced Security Configuration」を選択


f:id:think-t:20160827151145p:plain


Administrator, 一般ユーザのうち、解除が必要なものを選択して実行


f:id:think-t:20160827151217p:plain



今日はこんなところで。

ChefDKバージョンアップ時に"No live threads left. Deadlock? (fatal)"

今回は、普段、作業環境に使っているVMのChefDK環境をバージョンアップしたときの話です。
ちょっとはまったのでメモ。

  • バージョンアップ前:chefdk-0.6.2-1.el6.x86_64
  • バージョンアップ後:chefdk-0.12.0-1.el6.x86_64


バージョンアップ後に、実行してみるとこんなエラーが。(Driverはkitchen-sshをgemでインストールして実行)

# kitchen converge                                                                                                                                                           
-----> Starting Kitchen (v1.6.0)
-----> Converging <*********>...
$$$$$$ Running legacy converge for 'Ssh' Driver
        Preparing files for transfer
        Preparing dna.json
        Resolving cookbook dependencies with Berkshelf 4.3.0...
 /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.6.0/lib/kitchen/command.rb:181:in `join': No live threads left. Deadlock? (fatal)
         from /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.6.0/lib/kitchen/command.rb:181:in `map'
         from /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.6.0/lib/kitchen/command.rb:181:in `run_action'
         from /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.6.0/lib/kitchen/command/action.rb:39:in `block in call'
         from /opt/chefdk/embedded/lib/ruby/2.1.0/benchmark.rb:279:in `measure'
         from /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.6.0/lib/kitchen/command/action.rb:37:in `call'
         from /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.6.0/lib/kitchen/cli.rb:56:in `perform'
         from /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.6.0/lib/kitchen/cli.rb:180:in `block (2 levels) in <class:CLI>'
         from /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/thor-0.19.1/lib/thor/command.rb:27:in `run'
         from /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/thor-0.19.1/lib/thor/invocation.rb:126:in `invoke_command'
         from /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.6.0/lib/kitchen/cli.rb:321:in `invoke_task'
         from /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/thor-0.19.1/lib/thor.rb:359:in `dispatch'
         from /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/thor-0.19.1/lib/thor/base.rb:440:in `start'
         from /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.6.0/bin/kitchen:13:in `block in <top (required)>'
         from /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.6.0/lib/kitchen/errors.rb:154:in `with_friendly_errors'
         from /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.6.0/bin/kitchen:13:in `<top (required)>'
         from /usr/bin/kitchen:15:in `load'
         from /usr/bin/kitchen:15:in `<main>'


調べたところ、~/.chefdk 以下のgemを削除後、再度インストールしてみると良い、とのことでしたので、ディレクトリ内のgemを削除後、
再度、kitchen-sshをインストール。


以降は問題なく実行できました。



今日はこんなところで。

firewalld.service operation time out

CentOS7でfirewalldに慣れようと思ってちょっと使っていたのですが、
そのときに直面したちょっとしたトラブルのメモ。


ゾーンに特定のIPアドレスを追加した後、設定が適用されたかどうかの確認のため、
firewalld.serviceをsystemctlでstop/startしようとしたときに、発生したのが以下の事象

# systemctl start firewalld                                          
Job for firewalld.service failed because a timeout was exceeded. See "systemctl status firewalld.service" and "journalctl -xe" for details.


journalctlでログを見てみると、こんなメッセージが。

# journalctl -xe
-- Subject: Unit firewalld.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit firewalld.service has failed.
-- 
-- The result is failed.
Mar 23 08:31:02 myhost systemd[1]: Unit firewalld.service entered failed state.
Mar 23 08:31:02 myhost systemd[1]: firewalld.service failed.


参考リンクの情報に基づき、サーバーの状態を調べてみたら、
firewalldのプロセスがまだ残っていました。どうやらこれが原因のようでした。
残っていたプロセスをkillして再度起動したら、問題なく起動しました。


今日はこんなところで。