root ユーザーから非 root ユーザーへの Collector の移行

最終更新日: 03 年 2023 月 XNUMX 日

注: Docker コレクターを非 root ユーザーに移行するには、を参照してください。 Docker コンテナ内で Linux コレクタを非 root ユーザーとして実行する.

最初は、ルート認証情報を使用して Linux コレクターを実行できました。 その後、コレクターをインストールするためのルート以外の資格情報を持つユーザーにこのサポートを拡張しました。

移行プロセスが強化され、ユーザーは、コレクターをアンインストールしたりデータを失うことなく、root として実行されているコレクターを非ルート ユーザーの下で実行するように移行できるようになりました。 プロンプト ベースの移行プロセスとサイレント移行プロセスの両方に従って、root として実行されている Collector を非 root ユーザーの下で実行するように移行できます。

スクリプトを実行する必要があります updateToNonRoot.sh. デフォルトのパスは /usr/local/logicmonitor/agent/bin/updateToNonRoot.sh です。

要件

  • root 資格証明を持つユーザーは、スクリプトを実行できます。
  • Collector が root ユーザーとしてインストールされていることを確認します。

考慮すべき点

  • サイレント移行の場合は、次の順序でパラメーターを配置する必要があります。 -q -u -d
  • サイレント移行方法を使用して Linux Collector を移行する場合、ヘルプにアクセスするには、パラメータを入力できます -h スクリプトの後に ./updateToNonRoot.sh. 次のパラメータが表示されます。
説明
-hヘルプを提供します。
-qサイレント モードで移行を行う必要があることをインストーラーに示します。
-uCollector サービスを移行する root 以外のユーザーの名前を指定します。
-dCollector がインストールされているパスを示します。 デフォルトでは、コレクターは /usr/local/logicmonitor にインストールされます。 コレクタがデフォルト パスにインストールされていない場合は、コレクタをインストールしたカスタム パスを入力します。

Linux コレクターの移行

サイレントまたはプロンプト ベースの移行方法を使用して、root から非 root ユーザーに Linux Collector を移行できます。 XNUMX つのインストール方法のいずれかを使用して Linux Collector をインストールすると、LogicMonitor はデフォルトの非 root ユーザー「logicmonitor」を作成することに注意してください。 Linux Collector を root から root 以外のユーザーに移行する場合、移行用に指定した root 以外のユーザーが存在しない場合、 ./updateToNonRoot.sh スクリプトはその非 root ユーザーを作成します。

サイレント移行

コマンド プロンプトで、次のコマンドを実行します。

  1. root 資格情報を使用してマシンにログインします。
  2. に移動します エージェント/ビン コレクターのフォルダー。
  3. コマンドを入力して実行します ./updateToNonRoot.sh その後に、サイレント マイグレーションのパラメータが続きます。 フォーマットとシーケンスは次のとおりです。 -q -u [ルート以外のユーザー名] -d [カスタム パス、存在する場合]

スクリプトを実行すると、Linux コレクターがルートから非ルートに移行されます。 

プロンプトベースの移行

コマンド プロンプトで、次のコマンドを実行します。

  1. root 資格情報を使用してマシンにログインします。
  2. に移動します エージェント/ビン コレクターのフォルダー。
  3. スクリプトを実行する ./updateToNonRoot.sh.
    コレクタを非 root に移行するユーザーを指定するよう求められます。
  4. このスクリプトは、デフォルトの非 root ユーザー「logicmonitor」を作成して使用します。 必要に応じて、独自の非 root ユーザー アカウントを作成して使用できます。
  5. デフォルトでは、コレクタは /usr/local/logicmonitor にあります。 Collector が他のディレクトリにある場合は、そのパスを指定します。
    スクリプトを実行すると、Linux コレクターがルートから非ルートに移行されます。 

移行の確認

コレクタがルートから非ルートに正常に移行されたかどうかを確認するには、移行が完了してから 10 分後に次の手順に従います。

  1. LogicMonitor で Collectors に移動し、root 以外のユーザーに移行した Collector ID を検索します。
  2. 特定のコレクターに対応する「管理」列で、 設定 アイコン。 [コレクタの管理] ダイアログ ボックスが表示されます。 
  3.  サポート ドロップダウンして選択 コレクターのステータス.

移行のロールバック

の場合 updateToNonRoot.sh スクリプトは Linux Collector をルートから非ルートに移行できません。移行後に問題が発生した場合は、スクリプトを実行できます。 revertToRootUser.sh 移行をロールバックするスクリプト。 スクリプトは エージェント/ビン フォルダにコピーします。

注:

  • 宛先パスは、コレクタが現在インストールされているパスである必要があります。
  • ロールバック スクリプトは、EA Collector 32.400 以降で使用できます。
  • 32.400 より前のバージョンの Collector の移行をロールバックする場合は、以下のスクリプトをコピーしてスクリプト ファイルを作成できます。

#!/bin/sh
 
# get the name of init process
get_init_proc_name() {
    file_name="/proc/1/stat"
    cat $file_name|cut -f1 -d')'|cut -f2 -d'('
}
 
# get a string as answer from the stdin
get_input() {
    prompt_msg=${1:?"prompt message is required"}
    default_value=${2}
    if [ "$default_value" != "" ];then
        prompt_default_value=" [default: $default_value]"
    fi
    read -p "$prompt_msg$prompt_default_value:" value
    if [ "$value" = "" ];then
        value=$default_value
    fi
    echo $value
}
 
help() {
    echo "Usage : [-h] [-y] [-u install user] [-d install path]
            -h        help           - show this message
            -y        silent-update  - update silently
            -d        install path   - installation path of collector(default: /usr/local/logicmonitor)"
    exit 1
}
OPTS_SILENT=false
DEST_USER="root"
DEST_DIR="/usr/local/logicmonitor"
DEST_GROUP="root"
 
while getopts "hqu:d:" current_opts; do
 
    case "${current_opts}" in
        h)
            help
            ;;
        q)
           OPTS_SILENT=true
            ;;
        d)
           DEST_DIR=${OPTARG}
            ;;
        *)
            help
            ;;
    esac
done
 
 
if [ "$OPTS_SILENT" != "true" ]; then
  DEST_DIR=`get_input "Enter the directory under which collector is installed" "$DEST_DIR"`
fi
 
if [ -d "$DEST_DIR/agent" ]; then
 
    service logicmonitor-watchdog stop
    service logicmonitor-agent stop
 
    systemctl disable logicmonitor-agent.service
    systemctl disable logicmonitor-watchdog.service
 
    CUR_USER=$(stat -c '%U' $DEST_DIR)
 
    if [ "$CUR_USER" != "root" ]; then
     LM_WATCHDOG_SERVICE="$DEST_DIR/agent/bin/logicmonitor-watchdog.service"
     sed -i.bak "s#User=$CUR_USER#User=root#g" $LM_WATCHDOG_SERVICE
     sed -i.bak "s#Group=$CUR_USER#Group=root#g" $LM_WATCHDOG_SERVICE
     rm -f $LM_WATCHDOG_SERVICE.bak
     LM_AGENT_SERVICE="$DEST_DIR/agent/bin/logicmonitor-agent.service"
     sed -i.bak "s#User=$CUR_USER#User=root#g" $LM_AGENT_SERVICE
     sed -i.bak "s#Group=$CUR_USER#Group=root#g" $LM_AGENT_SERVICE
     rm -f $LM_AGENT_SERVICE.bak
    fi
 
    $ldconfig
 
    chown  $DEST_USER:$DEST_GROUP $DEST_DIR/
    chown -R $DEST_USER:$DEST_GROUP $DEST_DIR/agent
 
    INIT_PROC=`get_init_proc_name`
 
    if [ "$INIT_PROC" = "systemd" ];then
      mkdir /etc/systemd/user
      cp $DEST_DIR/agent/bin/logicmonitor-agent.service /etc/systemd/system
      cp $DEST_DIR/agent/bin/logicmonitor-watchdog.service /etc/systemd/system
      chown $DEST_USER:$DEST_GROUP /etc/systemd/system/logicmonitor-agent.service
      chown $DEST_USER:$DEST_GROUP /etc/systemd/system/logicmonitor-watchdog.service
      chmod 0644 /etc/systemd/system/logicmonitor-agent.service
      chmod 0644 /etc/systemd/system/logicmonitor-watchdog.service
      systemctl enable logicmonitor-agent.service
      systemctl enable logicmonitor-watchdog.service
      rm -f /etc/systemd/user/logicmonitor-watchdog.service
      rm -f /etc/systemd/user/logicmonitor-agent.service
      systemctl daemon-reload
      echo "Succesfully reverted collector services to run under $DEST_USER"
 
    else
      ln -sf ./bin/logicmonitor-agent /etc/init.d/logicmonitor-agent
      ln -sf ./bin/logicmonitor-watchdog  /etc/init.d/logicmonitor-watchdog
      chown $DEST_USER:$DEST_GROUP /etc/init.d/logicmonitor-agent
      chown $DEST_USER:$DEST_GROUP /etc/init.d/logicmonitor-watchdog
 
      /sbin/chkconfig --add /etc/init.d/logicmonitor/logicmonitor-agent 2>/dev/null
      /sbin/chkconfig --add /etc/init.d/logicmonitor/logicmonitor-watchdog 2>/dev/null
 
      #if update-rc.d exists, let's run it to install our services
      if which update-rc.d 2> /dev/null;then
        # We found update-rc.d, let's use it ...
         update-rc.d logicmonitor-agent defaults 2>/dev/null
         update-rc.d logicmonitor-watchdog defaults 2>/dev/null
      fi
      echo "Succesfully reverted collector services to run under $DEST_USER"
 
    fi
 
 
 
 $DEST_DIR/agent/bin/logicmonitor-watchdog start
 
else
  echo "The agentPath is not $DEST_DIR or is not provided. Please provide correct path where collector is installed and run the script again."
fi
記事上で