/etc/passwdでルートシェルを手動で編集しましたが、タイプミスがありました。雪だるまとして、私のボックスにはsudoユーザーがいません。
だから私は次のことを試み、次のような結果を得ました。
$ su -s '/bin/bash chsh root' root
Password:
Cannot execute /usr/bin/scrrn: No such file or directory
(私がしたことを見ましたか?)。
私はマンページでこれがまさにこれだと思います。
If the target user has a restricted shell (i.e. the shell field of
this user's entry in /etc/passwd is not listed in /etc/shells),
then the --shell option or the $SHELL environment variable won't be
taken into account, unless su is called by root.
たぶん私の質問はsu -sに関するものではないはずですが、ここから始めることができます。
答え1
1つの可能性は、シングルユーザーモードでシステムを起動するか、リカバリブートUSBフラッシュドライブ(ディストリビューションによって異なります)を使用して誤字を修正することです。/etc/passwd
多くのLinuxシステムでは、パラメータ化されたカーネルを実行するようにGRUBブートローダに指示できますinit=/bin/bash
。これを行うと、もう一度編集できます。注意深いあなたの/etc/passwd
ところで、正しいことはシェルを変更することですが、実際にはそうしたくありchsh
ません。chsh
/usr/bin/screen
root
(他のuid 0とシェルアカウントを作成できます/usr/bin/screen
。それが賢明かどうかはわかりません...)
最後によく読んでください数(1):
-s
、--shell=
殻Run the specified shell instead of the default.
したがって、以下を実行する必要があります/bin/su -s /bin/bash
。/bin/bash chsh root
いいえ実行可能ファイルのパス(次のようにすることができます)実行(2)-d をシェルとして使用)、シェルがリストにない場合、ルートには影響しません。/etc/shells
また試すことができます/usr/bin/sudo SHELL=/bin/bash -s
答え2
@Basile Starynkevitchに50%のクレジットを渡すか、彼が別の答えを書いたことを願っています。彼の提案の一つが私を正しい道に導いてくれたからです。
1 - @Basile Starynkevitchが言ったように、マシンを起動でき、GRUBで「e」を押して起動オプションを編集しました。 "linux"で始まる行にパラメータを追加しました。
init=/bin/bash
ルートbashシェルで起動します。進展!
2 - ファイルシステムが読み取り専用でマウントされているため、ファイルシステムのルートとしてまだ何も編集できません(GRUBからそのオプションを削除しましたが、理由は調査していません)。したがって、次のように入力する必要があります。
# mount -o remount,rw /
その後、次の手順に進むことができます。
3 - /etc/passwdファイルの編集
@Basile Starynkevitchが言ったように:
しかし、シェルを変更する正しい方法はchshです。
彼は正しい。しかし、私は今しました。
# vi /etc/passwd
なぜなら私は通常同じ愚かなことを二度はしないからだ。