Bashからzshに切り替えた後、ルートにアクセスできないのは非常に奇妙です。
通常は「su」を使用して、権限の少ない通常のユーザー(ユーザー名はnormalusername
)としてログインした後、rootとしてログインします。そして、それはいつもニースでした。しかし、ルートシェルをbashからzshに切り替えた後、su経由でログインしようとすると、次のようになりました。
normalusername@(none):~$ su
Password: (enter the correct password)
Cannot execute zsh: No such file or directory
Macからsshを介してrootに直接アクセスすると、次のようになります。
localhost:~ myname$ ssh -lroot 106.186.120.20
[email protected]'s password: (enter the correct/incorrect password)
Permission denied, please try again.
正しいパスワードを入力したかどうかに関係なく、何度も何度も表示されます。
そのため、通常のユーザーから「su」を使用して意図的に間違ったパスワードを入力しました。
normalusername@(none):~$ su
Password: (entered a wrong password and pressed enter)
(pressed enter)
su: Authentication failure
間違ったパスワードを入力した後、何も表示されなかったので、 enter 2回実行すると、su: Authentication failure
の結果が返されます。
私は何度も試しましたが、結論は次のとおりです。
「正しいパスワード」を忘れたのではないかと思われます。しかし、どうすればルートにアクセスできますか?
/etc/passwd
のエントリは
root:x:0:0:root:/root:zsh
試してください:cd /usr/bin; su
。 zshへの絶対パスを指定しなかったため。 su
はPWD
をチェックしています。一部のシステムでは、zsh
が存在するディレクトリに変更すると機能します。例:
% su
Password:
su: zsh: No such file or directory
% cd /usr/local/bin
% su
Password:
# print $OSTYPE
freebsd10.0
#
/etc/passwd
のエントリは
root:x:0:0:root:/root:zsh
これは無効なエントリです。シェルは実行可能ファイルへのフルパスでなければなりません。ログインプログラムは$ PATHルックアップを実行しません。
通常の方法でrootアカウントにログインすることはできません。 Sudoを使用してコマンドを呼び出すことができます。 Sudo vipw
、アカウントにSudo権限がある場合。これは、ターゲットアカウントのログインシェル設定をバイパスする唯一の一般的な方法です。
Sudoerでない場合は、おそらくrootアカウントからロックアウトされています。システムを修復するには、コンソールアクセスが必要です。シングルユーザーモードで起動し( システム管理者(root) としてコマンドを実行するにはどうすればよいですか)を参照し、/etc/passwd
を編集して
root:x:0:0:root:/root:/bin/zsh
(システム上のzshの正しいパスを使用)。
一部の管理者は、UID 0で toorアカウント を設定しますが、異なるシェル(通常、 sashなどの静的にリンクされたバイナリ) 、これがこのような構成ミスの場合でもrootがログインできるようにします(最も一般的な構成ミスは、通常のシェルの壊れた共有ライブラリです).
今後このような問題を回避するには、/etc/passwd
を直接編集するのではなく、chsh
コマンドを使用してユーザーのシェルを変更します。また、ルートアクセスの取得に関係する/etc/passwd
またはその他のファイルを編集する必要がある場合は、ルートシェルをターミナルで開いたままにし、ルートとしてログインできることを確認するまで閉じないでください。
現在のシェルを確認する
grep '^root:' /etc/passwd
行の最後に、/bin/zsh
のように、rootユーザーが使用するシェルへのフルパスが表示されます。次に、パスのスペルが間違っていないか、ファイルが存在し、適切な権限が設定されているかどうかを確認します(r
eadおよびe x
ecute)。
パスが正しくなかった場合は、zsh
実行可能ファイルが配置されている場所を確認してください
type zsh
その後、正しいシェルパスを使用してrootにsu
します。 /bin/zsh
の場合:
su -s /bin/zsh -
最後にchsh
を実行して、デフォルトのシェルを/bin/zsh
に変更します