「.bashrc」に「exit 0」が追加され、サーバーにログインできません。

「.bashrc」に「exit 0」が追加され、サーバーにログインできません。

私は$HOME/.bashrcホスティングサーバーCentOS 7を実験しており、カスタムカスタマイズなしでどのように機能するかを確認することにしました。

私はexit 0それを前に追加しましたsource /etc/bashrc

私の短い観察によると、ヒントと色だけが含まれているようです。しかし、ユーザーアクセス制御も管理しているようです。

今ログインしようとすると追われます。

なぜこれが起こるのですか?

リモートで修理できますか?

私は主にSSHを使用してログインします。この問題を解決するために設定できるプロパティまたは変数はありますか?

答え1

bashが正しく機能している場合は、シェルが.bashrc対話型シェルの場合にのみ呼び出す必要があります。したがって、次の作業が必要です。

ssh server rm .bashrc

または

ssh server mv .bashrc .bashrc-off

これにより、サーバーに非対話型シェルが作成されるため、シェルは.bashrc問題の影響を受けません。

残念ながら、多くのLinuxディストリビューションは.profile呼び出しを提供しますが.bashrc、この場合は迷子になります。

答え2

~/.bashrcBashは、対話的に実行されているかどうかに関係なく、sshdによって実行されていると判断するたびにソースコードを直接取得します。(1)

bashがこれを決定する方法は次のとおりです。ㅏ)envvarはSHLVL1未満です。雨)SSH_CLIENTまたはenvvarsがSSH2_CLIENT設定されているかstdin接続ソケット

例:

$ echo echo this sux > /tmp/.bashrc
$ HOME=/tmp bash -c true
$ HOME=/tmp SHLVL= SSH_CLIENT= bash -c true
this sux

ksh93でbashを呼び出すと、stdinはUnixドメインソケットペアを使用してパイプを実装するソケットになることもあります。

$ ksh93 -c ': | HOME=/tmp SHLVL= bash -c :'
this sux

とても方法が思い出せませんねバイパスSSH経由で実行している場合~/.bashrc(ユーザーが追加の環境変数を設定できるなど、SSH構成エラーを悪用することに加えて)

とにかく、私が知っている限り、多くのシステム管理者は、ユーザーがそれを迂回できないことを保証または保証しないようです。

(1)この行動はファイルに書き込む:

Bashは、リモートシェルデーモン(通常はrshd)またはセキュアシェルデーモンsshdによって実行されている場合など、ネットワーク接続に接続されている標準入力を使用して実行されていることを確認しようとします。 bashがこのように実行されていると判断した場合は、次のコマンドを読み込んで実行します~/.bashrc(ファイルが存在して読み取れる場合)。

Debian では/etc/bash.bashrc以前にも入手できます~/.bashrc(文書化されていません)。

答え3

コメントを要約します。

SSHが終了する理由は何exitですか?.bashrc

paul_pedantでコメント

あなたのプロフィールはログインシェルで作成されます。実行されない。したがって、exitログインシェル自体を終了します。

リモートで修理できますか?

エマ・ルーオのコメント

sftp user@hostホストで設定された方法(内部またはコマンドを介して)に基づいてアクセスできます。

roaima このような状況を避けるための最高のアドバイス

シェルに root としてログインしてください。その後、別のセッションを使用してもう一度ログインしてみてください。システムファイルを編集するときは常に

...

質問を完了するためにこのコメントを投稿してください。 @Paul_Pedant または @roaima が回答を投稿すると受け入れます。

答え4

私も同じことをしました。 Zshと同等のBashのexit 0サーバーの末尾に追加しました。あなたのように私も私のサーバーにログインできません。.zshrc.bashrc

既存のコマンドを上書きせずにaコマンド(安全コピー)を使用してscp問題を解決しました。たとえば、次のようになります。.zshrcexit 0

scp ~/.zsh/.zshrc my-server/.zsh/

望むより!マイサーバーに再度ログインできます。

関連情報