Linuxでroot権限でログインできず困っています。



リモートで/etc/passwdファイルを誤ってFTPで更新をかけたところ設定されているユーザー全てでログインができなくなった。(root含む)
サーバ自体はログイン済みのためサーバー本体にてrootのパスワード変更を試みるも変更できなかった。新規ユーザーの作成は問題なく実行できた。
rootでログインできない為、シングルユーザーモードでログインしてパスワード変更を試みるも変更できない。(AuthenticationFailureが表示)いろいろ試したところ、
サーバ本体にログインを試みたところ/bin/bashが見当たらないような表示
root権限でログインするにはどうしたらよいでしょうか

別ユーザでログイン後suでroot権限にしようとすると
「そのようなファイルやディレクトリはありません」
と表示されます

ちなみにまったく別のパスワードを入力すると
「パスワードが違います」
と表示されるので判別は出来ているようです。

どなたかお願いします!

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2007/09/06 14:15:44
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答5件)

id:withgod No.1

回答回数32ベストアンサー獲得回数1

ポイント20pt

>/bin/bashが見当たらないような表示

ではなく、loginシェルが解ってないのではないかと思います。

ftpで消した(書き換えた)のは /etc/passwd だけですよね?


文面から察するに、シングルユーザモードでログインは出来るのなら、試しに次のようなファイルを作成してから再度、rootでログインを試みてください。

/ここから /etc/passwd として保存、改行コードはLFで、パーミッションは一応644で。

root:x:0:0:root:/root:/bin/bash

/ここまで

上手く行くかは解りませんが・・・


どのように書き換えたのかは解りませんが、一応今の /etc/passwd もちゃんとバックアップとってからにして下さいね。


>判別は出来ているようです

蛇足ですが、パスワードを実際に格納してるのは、 /etc/shadowです。

id:technote7

少し前にtelnetで/etc/passwdファイルを確認したところ、改行コードの^Mが全行に入っていました

これが原因でシェル判別できずログインできないのが原因でしょうか?

これだけ直せば解決するのか・・・現在直接サーバを使える場所にいないので対応は明日になりそうですが

この場合shadowファイルへの対応は何か必要なのでしょうか?

それとvipwというのがあるのを知りました

これを使わなければいけなかったのでしょうか

2007/09/05 18:34:19
id:daichan330 No.2

回答回数565ベストアンサー獲得回数106

ポイント20pt

少し前にtelnetで/etc/passwdファイルを確認したところ、

改行コードの^Mが全行に入っていました

CR+LF改行を行っている場合、vi等でそのファイルを見ると各行の末尾に「^M」が入ります。この改行タイプはWindowsの場合かと思われます。蛇足ですが、Mac等だとCR改行のみのはず。

/etc/passwd へのFTP転送は、Windowsマシン等からバイナリ形式等で行われたのでしょうか?その場合はwithgodさんも書かれているとおり、LF形式(UNIX系の改行形式)で転送する必要があります。


この場合shadowファイルへの対応は何か必要なのでしょうか?

shadowファイルは影響を受けてないと思いますので、対応は必要ないと思われます。(マシンの再起動等は行っていませんよね?)


それとvipwというのがあるのを知りました

これを使わなければいけなかったのでしょうか

vipwは/etc/passwdを多人数で編集しないようにロックをかけるコマンドです。編集機能自体はviと同じです。誰も他者が触らないのであれば、viコマンドで問題ないと思います。

id:technote7

なるほど良くわかりました。

/etc/passwdファイルをFTPでアップロード後、シングルユーザモードで所有者の変更を行い一度サーバーを落としています

現在は唯一新規作成したユーザー(root権限ではない)でのみログインできる状態です

2007/09/05 23:19:04
id:naruenosekai No.3

回答回数140ベストアンサー獲得回数12

ポイント20pt

>少し前にtelnetで/etc/passwdファイルを確認したところ、改行コードの^Mが全行に入っていました

>これが原因でシェル判別できずログインできないのが原因でしょうか?


そうですね。これが原因だと思われます。

passwdファイルの最後のshellを指定に^Mが入ってしまい、

^M付きのファイルを探しに行ってないと言われているのでしょう。

/etc/passwdファイルしか更新してないのであれば、

shadowは変更しないで大丈夫です。


passwdを更新するときは、vipwで更新した方が安全です。

vipwはviエディタのpasswdファイル更新用のコマンドで、

これで開くと同時に他からの更新をされないようファイルをロックします。

操作方法はviエディタそのままです。


どうしてもpasswdファイルの編集をWindowsなどで行うときは、

Terapadなど改行コードを選択して保存できるテキストエディタを使いましょう。

またFTPで戻すときも、同時にloginしてmoreやlessなどで、改行コードやパーミッションが正しいか必ず確認しましょう。

id:technote7

調べてみるとshadowファイルとのパスワードの食い違いの問題が良くかかれてますが、これはshadowファイルを変更した場合に起こることで今回は当てはまらないという見解でよいでしょうか

今回のトラブルでシステムファイルは絶対にviということがよーくわかりました

2007/09/05 23:21:08
id:naruenosekai No.4

回答回数140ベストアンサー獲得回数12

ポイント20pt

>調べてみるとshadowファイルとのパスワードの食い違いの問題が良くかかれてますが、

>これはshadowファイルを変更した場合に起こることで今回は当てはまらないという見解でよいでしょうか


そのとおりです。

shadowファイルはpasswdファイルのコピーで、パスワードを符号化してshadowファイルへ記録しています。

passwdファイルはアカウントを持っていれば誰でも見えるため、

パスワードが解析されないよう別のパーミッションのかかったファイルであるshadowファイルに保存しています。

passwdファイルをベースにpasswdを書きこんでいるため、片保方だけUserIDやGroupIDなどが変ってしまうときちんと一致が取れなくなってしまうので、どちらかの内容を変えたときは、もう一方も同じように更新してあげましよう。


userを追加・削除するだけならuseradd/userdelコマンドがお手軽です。

id:withgod No.5

回答回数32ベストアンサー獲得回数1

ポイント20pt

何度も答えてみて良いのかな?人力検索はてなは始めたばかりで、マナーとか良く解ってないのでマナー違反ならすいません(。。;


ファイルを誤ってFTPで更新をかけたところ

との事ですが、具体的に何を更新したんでしょうか?

ローカルに落としたのを、アップロードしただけの場合だと、それで

改行コードの^Mが全行に入っていました

というのはイマイチ考えにくいのですが、予想で考えると次のどちらかと思います。

#恐らく /bin/bash^M を起動シェルとして起動しようとしてこけてるんだと思います。

  1. 元の改行コードを保持しないエディタで変更を加えた
  2. FTPクライアントで転送時に改行コードを変換するようになってる

/etc/passwdの各エントリが正常であり、改行コードだけおかしい場合はWin上で直して転送したりするとまた同じ現象が起こるかもしれないので、Unix上で次のようにして直しましょう。

テキストファイルの行末に^Mが表示される


UnixとWinなど、複数のOS間でファイルのやり取りする場合は適切に改行コードを扱えるエディタと、FTPクライアントを使ったほうが良いですよ。

id:technote7

解決しました!

ありがとうございます

2007/09/06 14:14:38

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません