2011-02-07 9 views
1

私は今朝、カピストラーノでアプリケーションを展開する際に問題が発生しました。「展開するcap:setup」はBASHを破壊できますか?

# git push 
# cap deploy:setup 

奇妙な何かが起こったと私はもう私のホストへのSSHすることができませんでしたよりも。

技術スタッフが(イタリア語で)「あなたが実行したコマンドは、シェルバイナリを上書きしてシステムを使用できなくなった」と述べています。 2つの選択肢:私は愚かです、または間違っています。 キャップのシェル出力は以下の通りです:deployそしてsshのエラー。システム(VPS)がリブートされると、私はもはやsshできなくなりました。

アイデア?

[email protected]:/var/www/rails/my_application$ git push 
Counting objects: 239, done. 
Delta compression using up to 2 threads. 
Compressing objects: 100% (191/191), done. 
Writing objects: 100% (202/202), 379.77 KiB, done. 
Total 202 (delta 44), reused 0 (delta 0) 
To ssh://[email protected]_application.it/~/git/my_application.git 
    96c1f19..3cc9e1c master -> master 
[email protected]:/var/www/rails/my_application$ cap deploy:setup 
    * executing `deploy:setup' 
    * executing "mkdir -p /var/www/rails/my_application /var/www/rails/my_application/releases /var/www/rails/my_application/shared /var/www/rails/my_application/shared/system /var/www/rails/my_application/shared/log /var/www/rails/my_application/shared/pids && chmod g+w /var/www/rails/my_application /var/www/rails/my_application/releases /var/www/rails/my_application/shared /var/www/rails/my_application/shared/system /var/www/rails/my_application/shared/log /var/www/rails/my_application/shared/pids" 
    servers: ["beta.my_application.it"] 
    [beta.my_application.it] executing command 
** [out :: beta.my_application.it] 
** [out :: beta.my_application.it] malloc: ../bash/parse.y:2823: assertion botched 
** [out :: beta.my_application.it] nunits < 30 
** [out :: beta.my_application.it] Aborting... 
    command finished 
failed: "env PATH=/usr/local/bin:/usr/bin:/bin GEM_PATH=/var/lib/gems/1.9.1 sh -c 'mkdir -p /var/www/rails/my_application /var/www/rails/my_application/releases /var/www/rails/my_application/shared /var/www/rails/my_application/shared/system /var/www/rails/my_application/shared/log /var/www/rails/my_application/shared/pids && chmod g+w /var/www/rails/my_application /var/www/rails/my_application/releases /var/www/rails/my_application/shared /var/www/rails/my_application/shared/system /var/www/rails/my_application/shared/log /var/www/rails/my_application/shared/pids'" on beta.my_application.it 
[email protected]:/var/www/rails/my_application$ ssh beta.my_application.it 
Linux my_application 2.6.18-194.26.1.el5.028stab079.2ent #1 SMP Fri Dec 17 19:44:51 MSK 2010 i686 

The programs included with the Debian GNU/Linux system are free software; 
the exact distribution terms for each program are described in the 
individual files in /usr/share/doc/*/copyright. 

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent 
permitted by applicable law. 
Last login: Mon Feb 7 12:00:53 2011 from dynamic-adsl-xx-xx-xx-xx.------.------.it 

malloc: ../bash/subst.c:4494: assertion botched 
realloc: called with unallocated block argument 
Aborting...Connection to beta.my_application.it closed. 
+0

deploy.rbファイルを投稿できますか? – CalebHC

+0

Capistranoはbashの破損に責任を負いませんでした。私は愚かではないように見えます。私がサービスプロバイダに尋ねたときに、上記のコマンドがbashを上書きする方法を説明することができました。この問題は説明なしで修正され、すべてが完全に機能しました。ファイルシステムの破損やopenvzの設定ミスやファイルの破損などの問題があったと思います。 – user578477

+0

これらのシステム管理者からの知識が不足しているため、私は別のホスティングソリューションを探します。誰が誤って削除したり修正したりするかを知っているからです。 – christophercotton

答えて

2

標準ではない他のプラグインがあるか、誰かがあなたに壊れたGemを与えていない限り、短い答えはいいえです。 (ほとんど誰も宝石の署名を検証するのは苦労します。)標準のdeploy:setupは、2,3のシンボリックリンクとディレクトリだけを作成します。

それはrootとして実行さず、理論的にはあなたがそのようなset :deploy_to, '/bin/bash'として(未テスト)の値にあなたの変数を設定した場合、それバイナリに損傷を与える可能性がありますが、それをした場合を除き、私はそれ以外だと言うだろう-問題。

あなたがシェルに頼ることなく、これをデバッグすることができます - コマンドモードでSSHを使用して:があったかどうかをテストすることができますので、そのユーザの履歴ファイル(bashの)をダンプします

​​サーバー上の改ざんいずれかが、あなたはまた、ルートとしてそれを確認し、および/またはコマンド(あなたがすることもでき cat /var/log/messagesをログをお返しし、不審な活動を探しなど wholastおよび他のワンライナーを実行することができます。

Iをカピストラノがこの責任を負うチャンスは0であると言います(出典:私はメンテナーです)。 - 上記のように、SHSコマンドモードを使用してシステムを動作状態に戻すことができます(ssh [email protected] -c 'aptitude install bash --force'など)

これはどういうことかわからない場合は、サーバーを消去してくださいあなたのパスワードを変更してください...物事をバックアップして実行する方法としてこれを使用してください。それは非常に微妙な戦術ではありませんが、ハッキングされている場合、ハッカーは、代替シェルを使用するユーザーを作成して、あなたを破損させることによって簡単にあなたを捨てることができます。

/bin/bash - ファイルの内容がテキスト、迷惑メール、破損したバイナリなのか、それとも展開のものなのかを知ることができれば、あなたの管理者からの大きな助けとなるでしょう。

+0

上記の有益な情報ありがとう、大きなメンテナ!未知の問題は、説明のないシステムプロバイダーによって解決されました。**はCapistrano **とは関係ありませんでした。私はそれがどう起こったのか分かりません。私はサービスプロバイダの無能さのために言います。とにかく、私はチェッカールートの歴史と何も奇妙なものはなかった。 ** ssh -c **は決して必要ないと思っていますが、シン・オプションのドキュメントを見ていきたいと思います。再度、感謝します! – user578477

関連する問題