
何かを実行するプログラムがあります。それはユーザー A で実行されています。
そのごく一部は、ユーザー B のホーム内のディレクトリにファイルを転送することです。転送は、シェル コマンドのシステム コールではなく、それが記述された言語の API 呼び出しによって行われます。
今では、その転送を実行する方法が複数あることがわかりました。
- プログラムを root として実行します。
- AとBを同じグループに入れてディレクトリの所有権を調整する
- プログラムをsudoする
- システムコールとsudoを使って移動し、
- ファイルをローカルのAに置き、外部に転送する(問題をアウトソーシングする)
- BのディレクトリのACL
- ...
プログラムをルート経由で実行するのは趣味が悪いので、この要件は一般的だと思います。最も一般的な対処方法は何でしょうか?
編集
A のプログラムがファイルを生成します。B はそれを読み取り、削除できる必要があります。
答え1
A ユーザーのその他のファイルが表示されないようにすることが重要な場合は、両方のユーザーが読み取り/書き込み権限を持つ別の共通ディレクトリを作成し、そこにファイルを配置します。
または、inotifywatchで作成されたらすぐにファイルをコピー/移動し、Bにchownすることもできます。以下に例を示します。これをcronに入れます。