私は現在、他のユーザーとして実行する必要があるデーモンプロセスを持つプロジェクトを進めています。可能であれば、デーモンが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に権限が必要です。