chefを使うとき、chef-solo実行時だけrootになってそれ以外のときは出来るだけchefユーザとして作業したかった。
最近のsudoはデフォルトではPATHは引き継がれない。設定と設定によってはオプションが必要。
よく見るのはsudo実行時に"-E"オプションをつけるか、sudoersにこの1行を加えるというもの。
Defaults env_keep += "PATH"
しかし、最近は以下の記述があるため、ここのPATHはうまく機能しない。
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
機能させたい場合は知るところでは2種類あって、
- secure_path をコメントアウト
- exempt_group を追加する
というもの。
secure_path
ここに記述された信頼できるPATHのみ追加できるようにする設定。
ただ、設定すると全ユーザに制限が適用されてしまうし、コメントアウトすると全ユーザがやりたい放題になるかもしれない。
(sudoresに登録するユーザが全て信頼できるなら別だけど。)
一部のユーザだけ例外にしたいという要望もあるはず。それが次。
exempt_group
グループを指定するとそのグループのユーザーは、パスワード入力の省略やsecure_pathの制限を回避することができるようになる。
例えばグループchefにのみsecure_pathの制限を受けないようにしたい場合。
Defaults exempt_group += chef
後は、env_keep += "PATH"を設定するか、sudo -E で実行するかすれば、
そのグループの人はsecure_pathの影響を受けずにPATHを引き継ぐことができ、実行することができる。
secure_pathは設定しておき、exempt_groupで信頼できるグループのみを登録する感じのほうがセキュアになりそうだし、管理もラクだと思う。