Hi everyone,

I have a Python program (A) that run under a regular user account. (good)

When some events occur in (A) I need to modify my nftables and only the root is allowed to do so.

I’ve come up with 3 ways to do that (if you know other please share) but I don’t which would be the best.

  1. Make a sudo call from (A) with from subprocess import run but I will need to store the password ! and I don’t think is possible to keep it encrypted and decrypted when need it (it’s a flaw)
    .
  2. Make (A) writing a file with the requests. Create a (B) daemon (that run as root) that check that file every X and do the necessary
    .
  3. Make (A) do an IPC ( Linux socket ) to (B) daemon (that run as root) and does the necessary.

I suppose that the solution 2 is less heavy that the 3 ? But if I’m not mistaken it will react also slower ?

Thanks.

🐧

    • SpongeB0BOPEnglish
      arrow-up
      2
      arrow-down
      0
      ·
      5 months ago
      link
      fedilink

      Thank you very much @taaz

      So you say 2 but with unix socket so it the same as my proposal number 3 ? no ?

      I’ll check capabilities

      • taazEnglish
        arrow-up
        2
        arrow-down
        0
        ·
        5 months ago
        link
        fedilink

        Yeah kinda, unix socket does count as ipc

  • KaninchenSpeed
    arrow-up
    3
    arrow-down
    2
    ·
    5 months ago
    link
    fedilink

    You could try pkexec insted of sudo. Pkexec pops up the password prompt in a window insted of prompting in the terminal.

  • solrize
    arrow-up
    1
    arrow-down
    0
    ·
    5 months ago
    edit-2
    5 months ago
    link
    fedilink

    Method 2 could use inotify to wake up when the file changes. It wouldn’t have to poll. Method 3 could launch from inetd so it wouldn’t have to always be running if these events are infrequent.