web-dev-qa-db-ja.com

bashからzshに切り替えた後、どうすればrootに到達できますか?

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の結果が返されます。

私は何度も試しましたが、結論は次のとおりです。

  1. 正しいパスワードを入力すると、「zshを実行できません:そのようなファイルまたはディレクトリはありません」と表示されます。
  2. 間違ったパスワードを入力すると、入力するまで何も表示されません enter 2-6回。

「正しいパスワード」を忘れたのではないかと思われます。しかし、どうすればルートにアクセスできますか?

/etc/passwdのエントリは

root:x:0:0:root:/root:zsh
3
AGamePlayer

試してください:cd /usr/bin; su。 zshへの絶対パスを指定しなかったため。 suPWDをチェックしています。一部のシステムでは、zshが存在するディレクトリに変更すると機能します。例:

% su
Password:
su: zsh: No such file or directory
% cd /usr/local/bin
% su
Password:
# print $OSTYPE
freebsd10.0
#
9
llua

/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ユーザーが使用するシェルへのフルパスが表示されます。次に、パスのスペルが間違っていないか、ファイルが存在し、適切な権限が設定されているかどうかを確認します(readおよびe xecute)。

  • パスが正しくなかった場合は、zsh実行可能ファイルが配置されている場所を確認してください

    type zsh
    
  • その後、正しいシェルパスを使用してrootにsuします。 /bin/zshの場合:

    su -s /bin/zsh -
    
  • 最後にchshを実行して、デフォルトのシェルを/bin/zshに変更します

4
jimmij