質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

Red Hat Enterprise

Red Hat Enterpriseは、レッドハット社により開発・サポートが行われている業務向けLinuxディストリビューションです。オープンソースで無償で利用することができ、バイナリ版の入手・サポートは有償です。商用ディストリビューションとして人気が高く、代表的なLinuxの選択肢の一つです。

Q&A

2回答

4821閲覧

suでルートにログインできない。共有ライブラリを一部削除したため

shimeru

総合スコア10

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

Red Hat Enterprise

Red Hat Enterpriseは、レッドハット社により開発・サポートが行われている業務向けLinuxディストリビューションです。オープンソースで無償で利用することができ、バイナリ版の入手・サポートは有償です。商用ディストリビューションとして人気が高く、代表的なLinuxの選択肢の一つです。

1グッド

1クリップ

投稿2016/02/27 12:40

編集2016/02/27 13:06

###前提・実現したいこと

  • suコマンドでルートにログインできるようにする方法を捜しています。
  • 直前に共有ライブラリを削除してしまっていました。
  • 気づかずにrootからログアウトしてしまいました。
  • 削除したのはたぶん/lib64/libc.so.6です。
  • ルートでログインしてしまえば、ldconfigコマンドで共有ライブラリの修正もできる認識です。

###発生している問題・エラーメッセージ

su -
su: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

###対応してみた内容

cp /lib64/libc-2.12.so /var/tmp/
cp /var/tmp/libc-2.12.so libc.so.6

export=LD_LIBRARY_PATH=/var/tmp/:/var/tmp/:/bin/:/lib64/:/usr/local/lib64/:/usr/lib64/:/usr/local/lib:/usr/lib:$LD_LIBRARY_PATH

export LD_PRELOAD=/var/tmp/libc.so.6:/lib64/libpam_misc.so.0:/lib64/ld-linux-x86-64.so.2:/lib64/libaudit.so.1:/lib64/libdl.so.2:/lib64/libcrypt.so.1:/lib64/libfreebl3.so:$LD_PRELOAD

※ これでlsコマンドやdirコマンドなどが復活しました。

※ しかし下記のように、問題は解決されませんでした。

su -
su: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

###補足情報(言語/FW/ツール等のバージョンなど)

  • CentOS 5
  • Red Hat 4.4.7-11

###追記事項(すみません書き漏れてました)

  • Google Compute Engineを利用しています。
  • sshの設定で、直接rootでログインできないように設定してあります。
ikuwow👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

su 出来ない事への回答ではありません。

>一つ目のVMのドライブにchroot
これはKVMなどの仮想環境で使われるテクニックで、
(何でも良いので)仮想イメージを作成し、起動しなくなったイメージファイルをマウントさせます。
その後、chrootでマウントさせたパスを/として動作させ復旧させる方法です。

chroot は(端折った説明をすれば)特定のパスを/として動作させるときなどに使用出来ます。

例えば、壊れたイメージが /mnt/broken_image などにマウントされれているとします。
このとき
$ chroot /mnt/broken_image
とすれば、/mnt/broken_image のパスが / として表示され、
その後の編集が楽になります。
(例えば壊れたイメージの /etc/sysconfig/network-scripts/ifcfg-eth0を編集したい場合、
本来であれば /mnt/broken_image/etc/sysconfig/network-scripts/ifcfg-eth0 ですが
chroot すれば、そのまま/etc/sysconfig/network-scripts/ifcfg-eth0を編集すればいいのです)

ところで、sudo も駄目なのでしょうか?
sudo bash
ですとか。

投稿2016/03/01 13:57

TANAKAKazuyoshi

総合スコア96

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

シングルユーザーモードで起動できないんでしょうか?

手元の32bit版CentOS 5だと、/lib/libc.so.6 は /lib/libc-2.5.so のシンボリックリンクです。


追記です。
ググって見ましたが、こんなのが出てました。

If you ever mess up your VM and you can't access the machine anymore you would
create a second VM and attach the drives of your first VM to the second
and chroot into the drives of your first VM.

(意訳)
もし、VMを台無しにしてどこからもアクセスできなくなったら、二つ目のVMを作って、一つ目のVMのドライブを二つ目にアタッチし、一つ目のVMのドライブにchrootすればいい。

これは、ネットワークが起動しなくなっちゃった人へのアドバイスとして書かれてましたが、同じような状況ではないでしょうか。

投稿2016/02/27 12:43

編集2016/02/27 13:12
shi_ue

総合スコア4437

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shimeru

2016/02/27 12:55

すみません、記載するべきだったのですが、 Google Compute Engineを使っているため、 シングルユーザモードでは起動できないのではないかと思います。
shimeru

2016/02/27 14:35

すみません >一つ目のVMのドライブにchroot というのは、どういうことでしょうか?
shi_ue

2016/02/28 03:28

原文にそう書いてある、というだけで、どういう意味だかは… cd、って意味ですかね?
mint.cherry

2016/02/29 02:01 編集

かなり自信はないですm(__)m汗 > 手元の32bit版CentOS 5だと、/lib/libc.so.6 は /lib/libc-2.5.so のシンボリックリンクです。 シンボリックリンクならシンボリックリンクでそのまま作ってあげればいいと思いますが… googleさんのクラウドですよね。 VMを私はgoogleさんの仮想インスタンスと捉えます。 shi_ueさんの投稿してくれた英文を見ました。 英語文は得意ではないですが私からしてみると以下のように解釈します。 VM(インスタンス(以降、新VMと呼びます))をもう一台契約して、もとからあるインスタンス(以降、旧VMと呼びます。)を新VMに加える。(新VMのどこかのディレクトリが旧VMのrootディレクトリ以下すべてまんまコピーされる状態です。) chrootとは特定のディレクトリをrootディレクトリとして扱えるようにできる機能です。簡単に言うと新VMと旧VMを合体させて、旧VMのほうをchrootとして扱えばいいということです。たぶんもう一つインスタンスを立てるにはお金が必須になってきます。googleさんの仕様によりますが… お金もかかるし、そんなことしなくても、まだいい方法があると思います。 スナップショットとかとっていないのでしょうか? 追記=============== ` 簡単に言うと新VMと旧VMを合体させて、旧VMのほうをchrootとして扱えばいいということです。 ` と言いましたが、chrootの仕様を少し詳しく知る必要があります。私はあまり知りませんm(__)m汗 /lib/libc.so.6 など新VMではなく旧VMのほうを参照されてしまったらまた同じエラーが出てきて変わりません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問