ルートがスクリプトを実行するのを防ぐ方法

ルートがスクリプトを実行するのを防ぐ方法

これガラス魚アプリケーションサーバーは、アプリケーションサーバーを管理、起動、停止するスクリプトを提供します。 rootユーザーがこのスクリプトを実行できないように制限したいと思います。その理由は、一部の主要な開発者が権限のないユーザーとしてサーバーを管理するのを忘れてしまい、ルートとしてアプリケーションサーバーを再起動すると、アプリケーションサーバーをルート[*]として実行する必要があるためです。

ルートアクセス許可を避けることはオプションではありませんが、開発者はローカルコンピュータでこれを行うのに慣れているため、これを忘れてしまいます。asadmin権限のないユーザーとして実行するようにスクリプトを変更するか、スクリプトがrootとして実行されるたびにエラーメッセージを表示するオプションがあります。

Bashシェルを使用してください。

[*]:ファイルの権限を変更しようとしましたが、rootが所有している多くのファイルを追跡してchmodedしましたが、アプリにまだ奇妙なエラーが発生し、再度rootとして実行する必要があります。

ベストアンサー1

他の答えと似ていますが、望む方向です。

if [[ $EUID -eq 0 ]]; then
  echo "This script must NOT be run as root" 1>&2
  exit 1
fi

あるいは、sudoスクリプトでこのフラグを使用して-u実行するユーザーを指定するために、権限のないユーザーとして強制することもできます。私はGlassfishを使用しませんが、ここに擬似スクリプトの生の例があります。

#!/bin/bash

if [ $1 == "start" ]; then
  sudo -u nobody /usr/bin/glassfish
fi

ご理解ください。申し訳ありません。スクリプトがどのように見えるのか、権限のないユーザーの名前が何であるのかわかりません。

おすすめ記事