ルートシェルが誤って変更されました。有効なシェルに戻すにはどうすればよいですか?

ルートシェルが誤って変更されました。有効なシェルに戻すにはどうすればよいですか?

間違って入力しました。

chsh -s /usr/bin 

変える

chsh -s /bin/bash 

これでルートシェルにログインできなくなりました。 rootでbashシェルを手動で起動するにはどうすればよいですか?

答え1

ルートにはアクセス権はありませんが、sudoグループのユーザーは依然として特権コマンドを実行できます。エラーはsudoではなくコマンドの他の場所にあるようですsudo chsh(例:chshエラー)。

だからあなたのsudoは明らかに動作しています。

passwdファイルは、次のコマンドを使用して編集できます。

sudo vipw

ルートシェルを手動で変更します。

(通常最初の行/etc/passwd

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

ファーマンVIPルーム

vipw および vigr コマンドは、それぞれ /etc/passwd および /etc/group ファイルを編集します。 -sフラグを使用すると、/etc/shadowファイルと/etc/gshadowファイルのシャドウバージョンをそれぞれ編集します。プログラムは、ファイルの破損を防ぐために適切なロックを設定します。

答え2

別のアカウントへのアクセス権があると仮定すると、別のオプションは、次のコマンドを使用してデフォルトのシェルを手動で上書きすることですsu --shell=/bin/bash

-s、--shell = SHELL
/etc/shellsが許可する場合はSHELLを実行します。

これの最大の利点は、他のアカウントではなく他のアカウントにのみアクセスできることです。特権一つ。

答え3

セキュリティ上の理由から、テキストやグラフィカルログインとは異なるsuユーザーsudoとしてコマンドを実行できるユーティリティ(および)は、ターゲットユーザーのシェルを介してこれらのコマンドを実行します。ターゲットユーザーのシェルが機能しない場合は、すでに結果を見ています:-(

まだ機能しているルートシェル、setuid-rootバイナリ、またはこの問題を回避するために何かを実行しない限り、回復システムまたはライブイメージを使用して再起動して問題を解決することはおそらく最善の方法です。 。

リカバリシステムを起動し、物理マシンのルートファイルシステムをどこかにマウントし、編集して/mnt/fooシェル/mnt/foo/etc/passwdを修復します。保存して削除すると完了です。

答え4

sudo usermod -s /bin/bash jdoe

シェルを変更します制度到着するbash。これでsudo egrep jdoe /etc/passwd確認できます。

関連情報