プログラムでsudoersファイルにsecure_pathを追加する方法


11

私は、githubからノードとnpmを構築し、サービスを開始するEC2インスタンスのユーザーデータスクリプトを構築しようとしています。これらのホイールにグリースを塗布するには、以下を追加する必要があります。

:/usr/local/bin

/ etc / sudoersの次の行の終わりまで:

Defaults        secure_path="

/superuser/927512/how-to-set-path-for-sudo-commandsはvisudoを使用してこれを実現する方法について説明していますが、EC2ユーザーデータ内でプログラム的に実行したいと考えています。

/programming/16282789/adding-sudo-permissions-to-sudoers-for-user-via-shell-scriptはsudoersファイルの編集について話しますが、私がやろうとしていることに対してひどく焼きすぎているようです達成する。

行をgrepして置き換えるのは簡単だと思いましたが、困惑しました。迷惑な閉じ逆コンマだけではありません!

回答:


6

secure_path追加するのではなく、値を置き換えることに耐えられる場合は、はるかに簡単なソリューションを使用できます。通常、sudoには、/etc/sudoers.d追加の構成ファイルをドロップできるようなconfigディレクトリーがあります。

完全なsecure_path値でファイルを作成してください:

Defaults secure_path="<default value>:/usr/local/bin"

これにより、メイン構成の値が上書きされます。パスの値がすべてのマシンで同じである場合、これはスクリプトまたはパッケージで簡単にデプロイできます。

これには、将来、sudoパッケージが更新されたときに、構成ファイルをチェックしたり、場合によってはマージしたりする必要がないという利点もあります。


2

secure_pathを含む行が存在することがわかっている場合、これを行う簡単なsedコマンド

sed -i -e '/secure_path/ s[=.*[&:/usr/local/bin[' /etc/sudoers

またはもう少し洗練された(入力でより多くの構文チェック):

sed -i -r -e '/^\s*Defaults\s+secure_path/ s[=(.*)[=\1:/usr/local/bin[' /etc/sudoers
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.