8

I need to send a signal to different process for some real-time communication, however the process belongs to different user.

For example

PID   user   group
1234  foo    foobar   
4321  bar    foobar

I want process 1234 and 4321 to be able to send signals to each other?

If I was using sockets or pipes I could set their mask to rw-rw-r-- and communication would work. However I need to do the communication using signals (ordinary or real time, not important).

Is there a way to do it?

Artyom
  • 31,019
  • 21
  • 127
  • 215

1 Answers1

9

Quote from kill(2):

For a process to have permission to send a signal it must either be privileged
(under Linux: have the CAP_KILL capability), or the real or effective user ID
of the sending process must equal the real or saved set-user-ID of the target
process.  In the case of SIGCONT it suffices when the sending and receiving
processes belong to the same session.

You can find capabilities(7) and setcap(8) useful.

Kamil Šrot
  • 2,141
  • 17
  • 19
  • 1
    `CAP_KILL` capability overrides _any_ permission checks, I want still limit a signal sending to specific users/group? Is there a way to do it? – Artyom Nov 12 '12 at 07:20
  • 2
    @Artyom the only other way to go seems to be run both apps under the same uid – Kamil Šrot Nov 12 '12 at 08:56