root ユーザーから非 root ユーザーへの Collector の移行
最終更新日: 06 年 2024 月 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
. 次のパラメータが表示されます。
Description | |
-h | ヘルプを提供します。 |
-q | サイレント モードで移行を行う必要があることをインストーラーに示します。 |
-u | Collector サービスを移行する root 以外のユーザーの名前を指定します。 |
-d | Collector がインストールされているパスを示します。 デフォルトでは、コレクターは /usr/local/logicmonitor にインストールされます。 コレクタがデフォルト パスにインストールされていない場合は、コレクタをインストールしたカスタム パスを入力します。 |
Linux コレクターの移行
サイレントまたはプロンプト ベースの移行方法を使用して、root から非 root ユーザーに Linux Collector を移行できます。 XNUMX つのインストール方法のいずれかを使用して Linux Collector をインストールすると、LogicMonitor はデフォルトの非 root ユーザー「logicmonitor」を作成することに注意してください。 Linux Collector を root から root 以外のユーザーに移行する場合、移行用に指定した root 以外のユーザーが存在しない場合、 ./updateToNonRoot.sh
スクリプトはその非 root ユーザーを作成します。
サイレント移行
コマンド プロンプトで、次のコマンドを実行します。
- root 資格情報を使用してマシンにログインします。
- に移動します エージェント/ビン コレクターのフォルダー。
- コマンドを入力して実行します
./updateToNonRoot.sh
その後に、サイレント マイグレーションのパラメータが続きます。 フォーマットとシーケンスは次のとおりです。-q -u
[ルート以外のユーザー名]-d
[カスタム パス、存在する場合]
スクリプトを実行すると、Linux コレクターがルートから非ルートに移行されます。
プロンプトベースの移行
コマンド プロンプトで、次のコマンドを実行します。
- root 資格情報を使用してマシンにログインします。
- に移動します エージェント/ビン コレクターのフォルダー。
- スクリプトを実行する
./updateToNonRoot.sh
.
コレクタを非 root に移行するユーザーを指定するよう求められます。 - このスクリプトは、デフォルトの非 root ユーザー「logicmonitor」を作成して使用します。 必要に応じて、独自の非 root ユーザー アカウントを作成して使用できます。
- デフォルトでは、コレクタは /usr/local/logicmonitor にあります。 Collector が他のディレクトリにある場合は、そのパスを指定します。
スクリプトを実行すると、Linux コレクターがルートから非ルートに移行されます。
移行の確認
コレクタがルートから非ルートに正常に移行されたかどうかを確認するには、移行が完了してから 10 分後に次の手順に従います。
- MFAデバイスに移動する 設定 > コレクター.
- 下 コレクター タブで、非 root ユーザーに移行したコレクターを選択します。
- 現在地に最も近い その他 オプションを選択してから コレクターのステータス.
コレクターが非 root ユーザーに正常に移行したことが確認できます。
移行のロールバック
の場合 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