私は次のようなPHPプロセスを持っています:
- ルートとして開始
- でpidファイルに書き込んでから閉じます
/var/run/
chown()
s別のユーザーにpidファイルを言った- 経由でそのユーザーに変更
posix_setuid()
- プロセスの最後にpidファイルを削除しようとします
現在、現在のユーザーにpidファイルを送信していますが、呼び出しchown()
で「アクセスが拒否されました」と主張するファイルを削除できません。unlink()
つまり、有効なユーザーがファイルを所有していて、ファイルが現在の(または任意の)プロセスで開かれていない場合でも、アクセス許可が不十分です。
思い切って、pidファイルの場所をホームディレクトリに移動しようとしましたが、これは問題なく機能します。プロセスのユーザーは私の個人ユーザーではないため、有効なユーザーにはホームディレクトリへの書き込み権限がなく、特定のファイルが1つだけあることに注意してください。
では、pidファイルが入っているときに削除できないのはなぜ/var/run/
ですか?