
私は、Ubuntu 15.04 サーバーで HomeSeer というホーム オートメーション パッケージを実行しています。サービス アカウント ("_homeseer") を使用して実行するように構成し、アプリ ディレクトリを _homeseer:_homeseer に chown しました。
このパッケージのアップデートをインストールするには、tar.gz ファイルをダウンロードし、ベンダー提供の「update.sh」スクリプトを実行します。このスクリプトは圧縮ファイルを抽出しますが、そのファイル自体も上書きします (update.sh)。そのため、スクリプトを別のフォルダーにコピーしない限り、スクリプトを変更することはできないと思います。
update.sh の一部として、「sudo update_extra.sh」を呼び出す行があります。サービス アカウントとして update.sh を実行しているため、この sudo 行はサービス アカウントのパスワードを要求します... パスワードは覚えていません (覚えたいとも思いません)。
重大なセキュリティ リスクとなるため、パスワードなしでアカウントに完全な sudo 権限を付与したくありません (つまり、アプリは Web サーバーを実行します)。また、同じサービス アカウントによってそのファイルが更新される可能性があるため、その update_extra.sh ファイルを root として実行するための完全な sudo 権限を付与することにも少し不安があります。
私の質問:
_homeseer アカウントが sudo を使用しようとした場合に、代わりに個人アカウントのパスワードを要求し、私が持っている sudo 権限で実行するように sudo (つまり、visudo) を構成することは可能ですか? できれば root パスワードは設定したくないのですが... 予備調査では、この方法を採用する場合、あまり選択肢がないようです。
それとも、update.sh スクリプトを変更し、グループ権限を設定して自分として更新を適用し、その後サービス アカウントに chown する必要がありますか?
答え1
sudo でこれを処理できます。
これを sudoers ファイルに追加すると:
_homeseer hostname = (_homeseer) NOPASSWD: /path/to/update.sh
- ホスト名
hostname
=マシン上の出力。
注意すべき点の 1 つは、update.sh には任意のコマンドが含まれている可能性があるため、update.sh を処理する 100% 安全な方法はないことです。また、時間の経過とともに変更されると想定されるため、HASH 関数を使用してスクリプトが以前と同じであることを保証することはできません。