スーパーユーザーデーモンなしでデーモンに他のユーザーとしてプロセスを実行させることはできますか?

スーパーユーザーデーモンなしでデーモンに他のユーザーとしてプロセスを実行させることはできますか?

私は現在、他のユーザーとして実行する必要があるデーモンプロセスを持つプロジェクトを進めています。可能であれば、デーモンがrootとして実行されないようにしたいと思います。しかし、私はこれを最もよく行う方法を見つけようとしています。

参考までに、以下のすべての作業は現在Pythonで実行されていますが、Pythonを使用する必要はありません。

ユーザーを正常に認証できるPAMおよびKerberos Auth(GSSAPI)プロトタイプがあります。スーパーユーザーデーモンを実行すると、次のようにOSを呼び出してプロセスを作成できます。

ksu kerbuser -c "/bin/bash authed-process.py"

私が知っている限り、なりすましにはkrbtgtまたはユーザーパスワードが必要なので安全です。

だから私が考慮したもう一つのことは、ユーザーのパスワードをPythonユーザーのgetpassに保存してからそのパスワードを渡すことです(これは非常に安全ではないソリューションです)。私はそうしません。

最後に考えているのは…kerberosチケットを使用している場合は、「ksu」コマンドラインツールを使用してそのユーザーとしてプロセスを作成できますか?私はPOC作業をしていますが、ここで誰かがこれを行うより良い方法があると思いますか?認証されたユーザーでプロセスを実行する権限のないデーモンを実行するための標準はありませんか?

これは私の最初の投稿です。したがって、これが他の場所に適していると思われる場合は、お知らせください。

乾杯、

モーガン

ベストアンサー1

他の人が答えに興味があるなら...

これを達成する方法は、転送可能なKerberosチケットを使用するようです。その後、gssapiを使用してチケットを渡すことができ、サーバー側でそのユーザーとしてプロセスを作成するために質問のksuコマンドを使用してチケットを使用できます。

ksu kerbuser -c "/bin/bash authed-process.py"

このコマンドは、キャッシュ内のユーザーの kerberos チケットを検索し、プロセスを実行します。ただし、権限を持つ(root)ユーザーだけがkeytabファイルを表示できるため、クライアントサーバーgssapiに権限が必要です。

おすすめ記事