- PR -

●binやetcが消えました。。。助けて下さい。

投稿者投稿内容
takepon
ベテラン
会議室デビュー日: 2005/11/28
投稿数: 55
お住まい・勤務地: 千葉県・東京都
投稿日時: 2006-01-26 15:13
こんにちは!

引用:

jkさんの書き込み (2006-01-26 13:41) より:

で、ManPageを眺めていたらこんなのを見つけました。
[ld.so]

もしかしたら、こんな風にしたら実行できませんか?
${WorkDir}/tmp/lib/ld-linux.so.2 --library-path ${WorkDir}/tmp/lib/ ${WorkDir}/tmp/bin/ls -l

共有ライブラリのリンクを間接的に指定できると書いてありました。




確かに書いてありますね。

わたしはあまり詳しくないですが、
ldconfig 自体は静的リンクされてるんだったと記憶しているので、
今回の環境でも動かせるはず?
ld.so.conf が編集出来ないなら、仮のものを作ればいいかも。

# echo '${WorkDir}/tmp/lib' > /ld.so.conf
# /${WorkDir}/tmp/sbin/ldconfig -v -n -f /ld.so.conf

いや、いま手元に環境ないし、
あっても実際試せないのでなんともいえませんが。

ちょっとぐぐって見たら、

http://www.linux.or.jp/JF/JFdocs/archive/ELF-HOWTO.html

こちらにその辺のことが書いてあったので、よかったらご参考に。

[ メッセージ編集済み 編集者: takepon 編集日時 2006-01-26 15:24 ]
jk
ベテラン
会議室デビュー日: 2005/08/19
投稿数: 94
投稿日時: 2006-01-26 15:35
こんちは。

引用:

takeponさんの書き込み (2006-01-26 15:13) より:
こんにちは!

ldconfig 自体は静的リンクされてるんだったと記憶しているので、
今回の環境でも動かせるはず?
ld.so.conf が編集出来ないなら、仮のものを作ればいいかも。

# echo '${WorkDir}/tmp/lib' > /ld.so.conf
# /${WorkDir}/tmp/sbin/ldconfig -v -n -f /ld.so.conf



いや、私もld.so.confをなんとかしてやればと思ったんですけど
echo 自体が使えるかわからないし...
ld.so.confを最終的に戻すのを忘れて再起動をかけちゃった場合は?

あまり複雑なことをやりすぎても、混乱の元ですし、返って傷を深くしかねない。

なんてのを一応考えてみたわけです。


以上、駄レスですた....
cn009
ベテラン
会議室デビュー日: 2004/05/13
投稿数: 72
投稿日時: 2006-01-26 16:05
引用:

jkさんの書き込み (2006-01-26 13:41) より:

で、ManPageを眺めていたらこんなのを見つけました。
[ld.so]

もしかしたら、こんな風にしたら実行できませんか?
${WorkDir}/tmp/lib/ld-linux.so.2 --library-path ${WorkDir}/tmp/lib/ ${WorkDir}/tmp/bin/ls -l

共有ライブラリのリンクを間接的に指定できると書いてありました。



ld-linux.so.2 って、動的リンクの共有ライブラリだとしか思っていませんでしたが、
動的リンカ・ローダであり、実行することも出来たのですね。

私が思いついたのは、sash や BusyBox の組み込みコマンドを利用する方法でした。
もちろんこの方法は、これらが既にインストールされてないとダメですが。
りかっち
常連さん
会議室デビュー日: 2004/07/15
投稿数: 22
投稿日時: 2006-01-26 16:59
takeponさん、jkさん、cn009さん。
ありがとうございます。
復旧できました!!。ホントにありがとうございます。

jkさんの、
***************************
もしかしたら、こんな風にしたら実行できませんか?
${WorkDir}/tmp/lib/ld-linux.so.2 --library-path ${WorkDir}/tmp/lib/ ${WorkDir}/tmp/bin/ls -l
共有ライブラリのリンクを間接的に指定できると書いてありました。
***************************

難しくて完全には理解できなかったのですが、
http://www.linux.or.jp/JM/html/LDP_man-pages/man8/ld.so.8.html
も見てみました。ありがとうございます。

実行できました!。

lsが実行できたので、一番影響の少なそうなディレクトリを
${WorkDir}/tmp/lib/ld-linux.so.2 --library-path ${WorkDir}/tmp/lib/ ${WorkDir}/tmp/bin/mv ${WorkDir}/aaaディレクトリ /
を実行したところ、aaaディレクトリが見事/直下に移動されました。
mvが使え、移動も出来ることもわかったので、同じように、
${WorkDir}/tmp/lib/ld-linux.so.2 --library-path ${WorkDir}/tmp/lib/ ${WorkDir}/tmp/bin/mv ${WorkDir}/tmp/* /
と実行し、全てのディレクトリを元の場所に移動できました!。

その後、lsやcatなど通常にコマンドが使えることを確認し、また、
httpやdns、sshが動作することも確認しました。
多分、問題なく復旧できたと思います。
皆様のおかげです。ほんとにありがとうございました。

今後同じことを繰り返さないよう、これからは、まず、
rootでの操作は必要最低限とします。
また、同時にコマンドの実行には最新の注意を払おうと思います。
まだまだ未熟な私ですが、皆様のようになれるよう
これからも頑張りたいと思います。
ホントにありがとうございました。
takepon
ベテラン
会議室デビュー日: 2005/11/28
投稿数: 55
お住まい・勤務地: 千葉県・東京都
投稿日時: 2006-01-26 17:17
引用:

りかっちさんの書き込み (2006-01-26 16:59) より:

ありがとうございます。
復旧できました!!。ホントにありがとうございます。




よかったッスね。

最後になりましたが、「バックアップ」も検討されては如何でしょうか?
今回は mv だったから良かったけど・・・。

ではでは。
_________________
takepon
てんてこダンス
jk
ベテラン
会議室デビュー日: 2005/08/19
投稿数: 94
投稿日時: 2006-01-26 17:30
よかった、よかった。

ただ安心するのは、まだですよ。
再起動する前に、バックアップを取ったほうがよいと思います。
起動して来ないかもしれないですし...


実は私もrootユーザでは失敗したことがあります。
それからというもの、流れでつい押してしまいがちなEnterをrootでの作業時は
押す前に、必ずコマンドを指差しで見直してから実行するようにしてます。

lsやcdなんかの時はしませんが...

また、自分の居場所が解からなくなったり少しでも不安に思ったら、一度取りやめて
pwd で場所を確認してます。
面倒でも、万が一のことがあった場合にはもっと面倒なことになりますからね。



[ メッセージ編集済み 編集者: jk 編集日時 2006-01-26 17:31 ]
りかっち
常連さん
会議室デビュー日: 2004/07/15
投稿数: 22
投稿日時: 2006-01-28 09:01
皆さん遅くなりました。
アドバイスありがとうございます。

rootでの操作については、jkさんのおっしゃる通り、
確認しながらEnterを押すくらいの慎重さを
これからは、忘れずに心がけたいと思います。
ありがとうございます。

バックアップも上司に提案してみました。
今は更新があった時だけ、主導でリモートでバックアップを
しています。これを、夜間に自動でバックアップする仕組みに
できるようにしたいと思います。

バックアップの仕方もLinuxはよくわからないので
、また別スレッドをたてて質問させていただくかもしれませんが、
その時はまたご教授&アドバイス、よろしくお願いいたします。
まだまだヒヨコですがよろしくお願いいたします。

本当にありがとうございました。



DS
会議室デビュー日: 2006/02/05
投稿数: 14
投稿日時: 2006-02-06 00:03
lsコマンドが使えない件ですが、確かコマンド自体は/usr/sbin/内にあった気がします
OS カーネルによって違うかもしれませんが…
仮に/etcもワークディレクトリに移動してしまったとするとワークディレクトリ/etc/sbinにlsというコマンドというかファイルがあるかもしれません
ただそうなるとcdコマンドもpwd使えないということにはなるのでなんとも言えませんが

とりあえず解決したみたいで何よりです

スキルアップ/キャリアアップ(JOB@IT)