NTPを使用してネットワーク時間を変更し、2台のコンピューターを同期するアプリケーションを開発しました。
root
として実行されます 、Linuxでは後者のみが日時を変更できるため(私は推測します)。
今、私はそれをユーザーとして実行したいと思います。しかし、私は時間にアクセスする必要があります。
- root以外のユーザーアカウントでデーモンを実行することをお勧めしますか?
- アプリケーションに機能を与えましょうか
CAP_SYS_TIME
など ? - セキュリティの脆弱性は発生しませんか?
- もっと良い方法はありますか?
承認された回答:
root以外のユーザーアカウントでデーモンを実行することをお勧めしますか?
はい、これは一般的です。たとえば、Apacheはrootとして開始し、新しいプロセスを www-dataとしてフォークします。 (デフォルト)
前述のように、プログラムがハッキングされた場合(例:コードインジェクション)、攻撃者はルートアクセスを取得しませんが、この特定のユーザーに与えた権限に制限されます。
「CAP_SYS_TIME」などの「機能」を指定しますか?
setuid の使用を避けるため、これは良い考えです。 、および権限をこの非常に特定の機能に制限します。
「グッドプラクティス」と見なされる別の方法を使用しますか?
たとえば、セキュリティを強化できます。
- シェルを使用せずに、非特権ユーザーとしてサービスを実行します。
- chrootを使用する ユーザーをホームディレクトリにロックします。