• ベストアンサー
  • すぐに回答を!

su できません

/etc/passwd内のrootのログインシェルを書き間違えてしまい,su時に su: No shellといわれてしまいます. 一般ユーザで ln コマンドを使用し,書き間違えたファイル名にして実行しようととしました. しかし,/sbin/ 内のファイルのため,一般ユーザでは書き込めません. また,su -s /sbin/sh としてもできませんでした. どのようにすれば su することができるのでしょうか. 使用しているOSはsoraris7です. なにとぞよろしくお願いします.

共感・応援の気持ちを伝えよう!

  • 回答数6
  • 閲覧数405
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.6
  • tera80
  • ベストアンサー率50% (2/4)

こんばんは okプロンプトからの説明です。 ok boot cdrom (OSのCDROMからminirootを起動します。) installwindowが出ますが、それは無視してworkspaceにコマンドツールを起動させる。(マウスの右ボタンより選択します。) # # mkdir /tmp/a # mount -F ufs /dev/dsk/c0t3d0s0 /tmp/a          ※^^^^^^^^^^^^^^^ ※/dev/dsk/c0t3d0s0の部分は、OS がインストールされているディスクの/パーティションをマウントして下さい。 # cd /tmp/a/etc # vi passwd 書き間違えた部分を修正します。(/sbin/shへ) :wq! # # cd / # umount /tmp/a これで、/etc/passwd を書き換えることができましたので、システムの再起動を行ないます。 以上です。 それでは、ガンバッテ復旧してください。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

遅くなって 申し訳ありません. 回答ありがとうございます. 質問なのですが. ok boot cdrom とやるとsolarisにログインした後のような画面となるのでしょうか? そのときに別なコンソールを立ち上げろということですか?

質問者からの補足

すいません 自己解決しました. 上記のとおりにやった結果無事suすることができました. ありがとうございました.

その他の回答 (5)

  • 回答No.5
  • tera80
  • ベストアンサー率50% (2/4)

困りましたね。 私も色々調べて見ましたが、Solaris7では皆様の回答の通り、rootのパスワードがわからなくなった場合などと同様にCD-ROMから起動し、/(root)パーティションをmountし/etc/passwdを変更するしかないようです。 余談になってしまいますが、Solaris9より新規機能として、rootユーザのみ代替えシェルが使用できる機能が追加されたみたいです。 つまり、Solaris9以上ではご質問のようにシェルを書き間違えた場合に自動で/sbin/shが選択され、CD-ROMからの起動を必要としなくなりました。 [solaris9での使用例です] % su Password: su: シェル/sbin/cshがありません。 代替シェル/sbin/shを使用します。 参考にならなくて、すみません。 もし、CDブートから/etc/passwdの書換手順の詳細が必要なら言ってください。 それではガンバッテ復旧してください。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答ありがとうございます. 申し訳ありませんがCDブートからの書き換え手順を教えていただけないでしょうか?

  • 回答No.4
  • qaaq
  • ベストアンサー率36% (146/404)

>使用しているOSはsoraris7です. とっても古いですね。 >電源を切らずに何とかする方法は,やはりないのでしょうか? 一般ユーザでこれが出来たら、「重大なセキュリティホール」でしょ。 >電源を切るとして,シングルユーザモードで起動しての/etc/passwd 変更は可能なのでしょうか? root のログインシェルが全うに動かない事象は変わらないので、ダメでしょう。 基本的には、#1さんの 手段しかないと思います。 古いsorarisには、shutdown というユーザが設定されていたような記憶があります。 もしこのユーザが存在するなら、安全にshutdown出来るかも知れません。

共感・感謝の気持ちを伝えよう!

  • 回答No.3
  • agharta
  • ベストアンサー率52% (54/103)

uidが0のログインユーザがroot以外に存在するのならば別ですが、 電源を落とさずにということは難しいと思います。 シングルユーザでログインできるのならば、可能性はありますね。 実行する価値はあると思います。 しかし、よくよく考えれば、シャットダウンもできない状態なのですね? sync;sync;sync; stop + A でokプロンプトにするしかないのではないでしょうか。 この辺になると、あまり自信がなくなってきました。 他の方の回答も見た方が良いと思います。

共感・感謝の気持ちを伝えよう!

  • 回答No.2
noname#20112
noname#20112

jpir様 回答NO.1のagharta様の対応で良いかと思います。 /etc/passwdファイルのrootの記述の変更は最新の注意をして下さいね。 OSのCDROMからブートして/領域をマウントして/etcに移動し、passwdファイルを修正して下さい。 以上、agharta様の補足です

共感・感謝の気持ちを伝えよう!

  • 回答No.1
  • agharta
  • ベストアンサー率52% (54/103)

すこし、重傷かも知れませんね。 最終手段としては、インストールCD-ROMからミニルートになって、 /etcが入っているディスクをマウントをし、passwdファイルを書き直す 方法があると思います。

共感・感謝の気持ちを伝えよう!

質問者からの補足

回答ありがとうございます. 電源を切らずに何とかする方法は,やはりないのでしょうか? また,電源を切るとして,シングルユーザモードで起動しての/etc/passwd 変更は可能なのでしょうか?

関連するQ&A

  • ログインシェルについて

    linuxにて/etc/passwdを閲覧すると、 /sbin/nologinというログインシェルがございります。 これは、ログインができないユーザとして割り当てられていると認識します。 1つ質問ですが、一般ユーザから例えば/sbin/nologinシェルの、 su - shutdownでスイッチするとpassword:とパスワードプロンプトが表示されます。 ということは、ログインが可能ということですか? よろしくお願いします。

  • SSHでログイン後にsuできない。

    WindowsからPuTTYを使ってサーバ(FreeBSD7.0)に接続し、rootになろうとしています。 PuTTYを使って、一般ユーザでログインすることはできるのですが、その後、rootになろうとsuコマンドを打つと、以下のようになり、rootになれません。 【PuTTYのコンソール】 $ su Password:(rootのパスワードを入力) su: Sorry $ サーバ側でsshdのログを見ると以下のようになっております。 # /usr/sbin/sshd -ddd : Bind to port 22 on 0.0.0.0 failed: Address already in use. Cannot bind any address. 22番ポートがすでに使用されているかと思い、以下のコマンドを打ってみました。 # sockstat | grep 22 (一般ユーザ) sshd 772 3 tcp4 (サーバのアドレス):22 (クライアントのアドレス):51401 root sshd 769 3 tcp4 (サーバのアドレス):22 (クライアントのアドレス):51401 root sshd 686 3 tcp4 *:22 *:* 上記の2番目で、すでにクライアントからrootで接続しているように見えます。クライアントからは一般ユーザを使用して接続しているのみです。なぜこうなるのか全くわかりません。 この一般ユーザはwheelグループに入れてあり、通常はsuでrootになれると思うのですが、、、 見当違いなのか、また他に原因が考えられるのか、ご教授頂けないでしょうか?

  • suアカウント

    android2.2端末でadb shell中からsuコマンドを実行すると  su: unknown id: root と表示されます。 rootアカウントがないわけは無いと思い、/etc/passwdを見ようと思いましたがファイル自体が存在しません。 タスクマネージャ上では「スーパーユーザーv3.0.7)」が動作している状況です。 root権限が必要なTitanium Backupを起動すると「root権限を取得できませんでした」と出ます。 (root権限を与えていいかのダイアログがでない) rootという名称でないアカウントがrootなのでしょうか? 何か確認方法があったら教えて下さい。

  • はじめてSolarisを使って

    いるのですが LANG=ja LOGNAME=root MAIL=/var/mail/root MAILCHECK=600 OPTIND=1 PATH=/usr/sbin:/usr/bin PS1=# PS2=> SHELL=/sbin/sh TERM=vt100 TZ=Japan # set |grep shell # set | grep -i shell SHELL=/sbin/sh となりましたがこれはB-Shellと解釈していいでしょうか?

  • ユーザー権限でログインするとsuでもフルパスコマンド?

    root権限でifconfigとすると実行されますが、普通のユーザー権限で一旦suでroot権限になっても、ifconfigとすると -bash: ifconfig: command not foundとなります。 いちいち/sbin/ifconfigとしなければいけないので不便です。 コマンドごとにどのディレクトリにあるか知っていないと使えないし、whichコマンドも効かないので困っています。 何か良い方法はありますか? suにしてroot権限

  • suと一般ユーザの判別

    こんにちは、よろしくお願いします! 一連の処理をシェルで記述しているのですが、 本シェルを"su"の権限である場合のみ実行させたいと考えています。 (つまり一般ユーザ権限では実行できないようにしたいのです) シェル内で、なにかしらの判定を行い、 suなら処理続行、一般ユーザなら処理中断・・・ のようにしていきたいのですが、 何か良い方法はありませんでしょうか? なお、シェル内で"su"を実行し、 強制的にsuにする方法も検討しましたが、 su状態においても、さらにsuがきいてしまうようで、 失敗しました。 よろしくお願いします。

  • sshでリモートログインした後、su-でrootになれない

    CentOS5でサーバの構築をしています。 sshの設定をした後、一般ユーザで公開鍵方式でログインし、 su-でrootになろうとすると、"パスワードが間違っています"と表示され、rootになれません。 コンソールで行うと可能でしたので、パスワードが違うことはないと思います。 logを確認すると、下記のようなエラーが出ていました。 ================================================== server su: PAM adding faulty module: /lib/security/following server su: PAM (su-l) illegal module type: Uncomment server su: PAM pam_parse: expecting return value; [...the] ================================================== この問題をどう解決すればよいでしょうか? よろしくお願いします。

  • OS がインストールされているディスクのパーティションはどこ?

    【質問の内容】 OS がインストールされているディスクのパーティションを知りたいのですが、どうすればいいのでしょうか? 使っているOSは、Solaris8です。 【質問の背景】 /etc/passwd内のrootのログインシェルを書き間違えてしまい,su時に su: No shellといわれて、ログインできない状態になっています。 そういった場合の復旧方法が、 QNo.2284706:http://oshiete1.goo.ne.jp/qa2284706.html に示されており、その方法で復旧を試みました。 しかし、OS がインストールされているディスクのパーティションが分からずに、復旧作業がストップしているところです。

  • シェルがありません

    このたび、シェルを /usr/sbin/bashに変更しようとしたところ、 /user/sbin/bashと誤って入力してしまったため、 root権限になることができなくなって(シェルがありません)しまいました。 解決方法はありますでしょうか? よろしくお願いします。

  • UNIXシェルの設定ファイルについて

    solaris8使用してるのですが2つほど質問があります。 1. rootのシェルの設定ファイル(.cshrcとか.profileにあたるもの?) ってどこにあるのでしょうか? su でroot になったときや、rootでcshと打ち込んだときなど はどこのファイルの設定を読むのでしょうか? 2. 一般ユーザを新規に追加した場合にその新規ユーザの シェルの設定ファイルってどこからもってきたものなんでしょうか? デフォルトのファイルのようなものをコピーしてくる感じなのでしょうか? ご存知の方よろしくお願いします。