質問: 特殊権のないユーザーとしての起動ジョブの実行 起動ジョブがそのユーザーidを変更し、そのスクリプトを非特権ユーザーとして実行するための標準的な方法は何ですか?明らかにsuまたはsudoを使うことができますが、これは厄介なようです(そして不要なログ行を生成する可能性があります)。
回答: それにはいくつかの方法がありますが、すべて意味が少し異なります。特にグループメンバーシップに関しては、 setuidgidはあなたを指定したグループに入れます。 オリジナルのdaemontoolsのsetuidgidはそのグループに only を入れるので、あなたがメンバーである他のグループに属するファイルにアクセスすることはできません。 daemontools-encoreのsetuidgid と noshツールセットのsetuidgid はどちらも-s(別名--supplementary)オプションを持っています。 補助グループ 指定したユーザーの場合。 あまり特権のないユーザになったらnewgrpを使用すると、グループセットに単一のグループが追加されますが、新しいサブシェルも作成されるため、内部スクリプトを使用するのが面倒になります。 start-stop-daemonはあなたのグループメンバーシップを維持し、単にsetuid/setgidよりもずっと多くのことをします。 chpst -u username:group1:group2:group3... commandnameを使用すると、どのグループメンバーシップを採用するかを正確に指定できますが、( ubuntu )にはrunitパッケージのみが付属しています。これはupstartの代替となります。 su -c commandname usernameは、sudo -u username commandnameと同様に、ユーザー名のすべてのグループメンバーシップを取得するため、おそらく最も驚かせることのできない方法です。