Cronジョブをrootとして実行すると、sshdサービスが停止し、他のユーザーがログインできなくなるのはなぜですか?

Cronジョブをrootとして実行すると、sshdサービスが停止し、他のユーザーがログインできなくなるのはなぜですか?

ルートとしてCronジョブを実行している他のサーバーからClamavアップデートを取得するスクリプトがあります。また、ルートログインを無効にしました/sbin/nologin。ただし、これはsshdサービスを停止し、自分のユーザーの/ bin / bashログインを削除するため、システムに深刻な影響を与えます。この状態に達するためにとられたステップは次のとおりです。

  1. /root/ に実行可能なスクリプトを作成します。私の場合は、Clamavを更新するスクリプトです。
  2. root ユーザーのシェルを /bin/bash から /sbin/nologin に変更して、root ログインが無効になっていることを確認します。
  3. このスクリプトをrootとして毎分実行するには、/etc/crontabにエントリを手動で追加します。
  4. これでSSHサービスを再起動し、5分後にSSHを試してください。

私が/etc/crontab入りながら。

* *  * * * root    /root/clamu.sh >/dev/null 2>&1

以下はclamu.shスクリプトです

#this script need to run by root user

#create a folder temp
mkdir /temp

#go to the temp dir
cd /temp

#clean this folder
rm -f *

#Copying the files from server to temp dir

scp -P 2277 [email protected]:/var/lib/clamav/daily.* .
scp -P 2277 [email protected]:/var/lib/clamav/bytecode.* .

#Updating the files to actual location

rm -f /var/lib/clamav/daily.*
cp -u daily.* /var/lib/clamav/
cp -u bytecode.* /var/lib/clamav/

#do scanning & save report

cd /
clamscan --recursive=yes >> /var/log/clamav/clamd.log

# Clean the /temp folder
cd /temp
rm -f *

を使用していますCentOS 7 x64。これは展開とは関係がないと思いますが、これは一般的な問題です。

クローンでこのスクリプトをrootとして実行すると問題が発生することがわかります。しかし、これがsshの失敗とカーネルパニックを引き起こす理由は、何が起こっているのかを理解するために知りたいことです。私は素人のLinuxユーザーなので、説明してくれてありがとう。ありがとうございます。

編集する こんにちは。もともと質問ではないので、研究結果を示さなかった。この問題は私のリモート仮想マシンの1つで発生し、デバッグするログがありません。ログにアクセスする方法を見つけたら、トラブルシューティングを試み、crontabエントリで他のユーザーを使用して問題を解決できました。しかし、クローンの仕事がどのように多くのダメージを与える可能性についての疑問は残っています。これが私に必要な答えであり、おそらく私が見つけることができる方向でもありました。

答え1

本当に存在しますか?/temp(そう言っていませんか/tmp?)

そうでない場合、スクリプトはcd実行を試みて/temp失敗し、すべてのコマンドは起動ディレクトリから実行されます。

最後の2つのコマンドはcd最初に/、次にcd/temp存在しない可能性があります)、rmすべて(通常はルートファイルシステム)を実行するため、特に危険です。

rmコマンドのフルパスを指定する必要があります。

なぜこれを見るのかはわかりませんが、スクリプトが非常に危険なので、まず修正して問題が解決するかどうかを確認します。

答え2

私の考えでは、rootユーザーを完全に無効にしてはいけません。 rootとしてログインできないようにするには、でディレクティブを設定する必要がありますsshPermitRootLogin no/etc/ssh/sshd_config

他のアプリケーションでは、ほとんどの同等の設定が可能です。

関連情報