起動スクリプトに「sudo」または「su」を使用する必要がありますか?

起動スクリプトに「sudo」または「su」を使用する必要がありますか?

私はサーバー/クライアントデザインを備えたプライベートプログラムを持っています。

サーバーデーモン部分は制限されたユーザーとして実行する必要があり、プログラムはルートとして起動された場合、一部のLinuxプログラムと同様にroot権限を放棄するようには設計されていません。

だから私の質問は、起動スクリプトでこのデーモンを他のユーザーとして/etc/init.d/使用sudoまたは実行する必要がありますか?suこれはどのような違いをもたらしますか?どちらも機能しますか?他にはありませんか?

オペレーティングシステムは、「Linux From Scratch」ガイドラインを使用して構築されたカスタムGNU / Linuxオペレーティングシステムであり、両方のプログラムが正しく実行されます。

ベストアンサー1

su2つのうち、この方法は設定可能性が低く予測可能性が高いため、この目的に使用します。sudoinitスクリプトでを使用してから(誤ってまたは意図的に)initスクリプトのエントリを削除すると、initroot ALL=(ALL) ALLスクリプト/etc/sudoersは奇妙に中断されます。

また、構成スペースをさらに減らすために、次の形式を使用します。

su -s /bin/sh -c "my_program my_args etc" my_user

この-sオプションは、スクリプトを中断することなく、ユーザーのデフォルトシェルを/bin/falseまたは/sbin/nologinまたは他のものに変更できることを意味します。/dev/nullプログラムがこの問題をまだ処理していない場合は、標準I / Oを別の適切な場所にリダイレクトすることもできます。

おすすめ記事