私はサーバー/クライアントデザインを備えたプライベートプログラムを持っています。
サーバーデーモン部分は制限されたユーザーとして実行する必要があり、プログラムはルートとして起動された場合、一部のLinuxプログラムと同様にroot権限を放棄するようには設計されていません。
だから私の質問は、起動スクリプトでこのデーモンを他のユーザーとして/etc/init.d/
使用sudo
または実行する必要がありますか?su
これはどのような違いをもたらしますか?どちらも機能しますか?他にはありませんか?
オペレーティングシステムは、「Linux From Scratch」ガイドラインを使用して構築されたカスタムGNU / Linuxオペレーティングシステムであり、両方のプログラムが正しく実行されます。
ベストアンサー1
su
2つのうち、この方法は設定可能性が低く予測可能性が高いため、この目的に使用します。sudo
initスクリプトでを使用してから(誤ってまたは意図的に)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を別の適切な場所にリダイレクトすることもできます。