間違って入力しました。
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
確認できます。