- ベストアンサー
su できません
/etc/passwd内のrootのログインシェルを書き間違えてしまい,su時に su: No shellといわれてしまいます. 一般ユーザで ln コマンドを使用し,書き間違えたファイル名にして実行しようととしました. しかし,/sbin/ 内のファイルのため,一般ユーザでは書き込めません. また,su -s /sbin/sh としてもできませんでした. どのようにすれば su することができるのでしょうか. 使用しているOSはsoraris7です. なにとぞよろしくお願いします.
- jpir
- お礼率40% (15/37)
- Solaris系OS
- 回答数6
- ありがとう数5
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは 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 を書き換えることができましたので、システムの再起動を行ないます。 以上です。 それでは、ガンバッテ復旧してください。
その他の回答 (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ブートからの書き換え手順を教えていただけないでしょうか?
- qaaq
- ベストアンサー率36% (146/404)
>使用しているOSはsoraris7です. とっても古いですね。 >電源を切らずに何とかする方法は,やはりないのでしょうか? 一般ユーザでこれが出来たら、「重大なセキュリティホール」でしょ。 >電源を切るとして,シングルユーザモードで起動しての/etc/passwd 変更は可能なのでしょうか? root のログインシェルが全うに動かない事象は変わらないので、ダメでしょう。 基本的には、#1さんの 手段しかないと思います。 古いsorarisには、shutdown というユーザが設定されていたような記憶があります。 もしこのユーザが存在するなら、安全にshutdown出来るかも知れません。
- agharta
- ベストアンサー率52% (54/103)
uidが0のログインユーザがroot以外に存在するのならば別ですが、 電源を落とさずにということは難しいと思います。 シングルユーザでログインできるのならば、可能性はありますね。 実行する価値はあると思います。 しかし、よくよく考えれば、シャットダウンもできない状態なのですね? sync;sync;sync; stop + A でokプロンプトにするしかないのではないでしょうか。 この辺になると、あまり自信がなくなってきました。 他の方の回答も見た方が良いと思います。
jpir様 回答NO.1のagharta様の対応で良いかと思います。 /etc/passwdファイルのrootの記述の変更は最新の注意をして下さいね。 OSのCDROMからブートして/領域をマウントして/etcに移動し、passwdファイルを修正して下さい。 以上、agharta様の補足です
- agharta
- ベストアンサー率52% (54/103)
すこし、重傷かも知れませんね。 最終手段としては、インストールCD-ROMからミニルートになって、 /etcが入っているディスクをマウントをし、passwdファイルを書き直す 方法があると思います。
補足
回答ありがとうございます. 電源を切らずに何とかする方法は,やはりないのでしょうか? また,電源を切るとして,シングルユーザモードで起動しての/etc/passwd 変更は可能なのでしょうか?
関連するQ&A
- ログインシェルについて
linuxにて/etc/passwdを閲覧すると、 /sbin/nologinというログインシェルがございります。 これは、ログインができないユーザとして割り当てられていると認識します。 1つ質問ですが、一般ユーザから例えば/sbin/nologinシェルの、 su - shutdownでスイッチするとpassword:とパスワードプロンプトが表示されます。 ということは、ログインが可能ということですか? よろしくお願いします。
- ベストアンサー
- Linux系OS
- suアカウント
android2.2端末でadb shell中からsuコマンドを実行すると su: unknown id: root と表示されます。 rootアカウントがないわけは無いと思い、/etc/passwdを見ようと思いましたがファイル自体が存在しません。 タスクマネージャ上では「スーパーユーザーv3.0.7)」が動作している状況です。 root権限が必要なTitanium Backupを起動すると「root権限を取得できませんでした」と出ます。 (root権限を与えていいかのダイアログがでない) rootという名称でないアカウントがrootなのでしょうか? 何か確認方法があったら教えて下さい。
- 締切済み
- Android
- 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になれると思うのですが、、、 見当違いなのか、また他に原因が考えられるのか、ご教授頂けないでしょうか?
- 締切済み
- ハードウェア・サーバー
- OS がインストールされているディスクのパーティションはどこ?
【質問の内容】 OS がインストールされているディスクのパーティションを知りたいのですが、どうすればいいのでしょうか? 使っているOSは、Solaris8です。 【質問の背景】 /etc/passwd内のrootのログインシェルを書き間違えてしまい,su時に su: No shellといわれて、ログインできない状態になっています。 そういった場合の復旧方法が、 QNo.2284706:http://oshiete1.goo.ne.jp/qa2284706.html に示されており、その方法で復旧を試みました。 しかし、OS がインストールされているディスクのパーティションが分からずに、復旧作業がストップしているところです。
- 締切済み
- Solaris系OS
- suと一般ユーザの判別
こんにちは、よろしくお願いします! 一連の処理をシェルで記述しているのですが、 本シェルを"su"の権限である場合のみ実行させたいと考えています。 (つまり一般ユーザ権限では実行できないようにしたいのです) シェル内で、なにかしらの判定を行い、 suなら処理続行、一般ユーザなら処理中断・・・ のようにしていきたいのですが、 何か良い方法はありませんでしょうか? なお、シェル内で"su"を実行し、 強制的にsuにする方法も検討しましたが、 su状態においても、さらにsuがきいてしまうようで、 失敗しました。 よろしくお願いします。
- ベストアンサー
- Linux系OS
- sudoの設定方法について
こちらで質問させて頂きながらシェルスクリプトの勉強をしています。 sudoの記載について、いろいろと試したのですがうまくいきません。 アドバイスお願いいたします。 ◆やりたい事 ・非ルートでログイン時、Shell.shをroot権限で実行したい ・Shell.shからは、他シェルスクリプトが呼ばれる ※他シェルスクリプトもroot権限が必要 ◆現状 ・sudoers ファイルに user1 ALL=(ALL) ALL と記載するとうまくいくが、 user1 ALL=(ALL) /フルパス/Shell.sh とすると権限がないと言われる ◆質問 Shell.shがroot権限で実行できれば、Shell.shから呼ばれるシェルスクリプトも root権限になる認識なのですが、間違っているのでしょうか?
- ベストアンサー
- Linux系OS
- UNIXシェルの設定ファイルについて
solaris8使用してるのですが2つほど質問があります。 1. rootのシェルの設定ファイル(.cshrcとか.profileにあたるもの?) ってどこにあるのでしょうか? su でroot になったときや、rootでcshと打ち込んだときなど はどこのファイルの設定を読むのでしょうか? 2. 一般ユーザを新規に追加した場合にその新規ユーザの シェルの設定ファイルってどこからもってきたものなんでしょうか? デフォルトのファイルのようなものをコピーしてくる感じなのでしょうか? ご存知の方よろしくお願いします。
- 締切済み
- その他(OS)
- rootでSSHできないように設定しても他のユーザーからsuできてしまう
Fedora Core 6 で /etc/ssh/sshd_conig 内のデフォルト値 #PermitRootLogin yes を PermitRootLogin no にして案の定外部からSSHでのルートでのログインはできないようにしたのですが、Puttyなどで、他のユーザーでログインした後、su を使うとパスワードを入れればrootに切り替えられます。 これは正常なのでしょうか?リモートの場合はrootにsuできないようにしたいのですが特別な設定が必要になるのでしょうか? ご存知の方どうぞよろしくお願いいたします。
- ベストアンサー
- Linux系OS
お礼
遅くなって 申し訳ありません. 回答ありがとうございます. 質問なのですが. ok boot cdrom とやるとsolarisにログインした後のような画面となるのでしょうか? そのときに別なコンソールを立ち上げろということですか?
補足
すいません 自己解決しました. 上記のとおりにやった結果無事suすることができました. ありがとうございました.