¿Cómo ejecutar una aplicación con ciertos permisos de grupo?

¿Cómo ejecutar una aplicación con ciertos permisos de grupo?

Tengo una impresora 3D con la que mi PC se puede comunicar a través de /dev/ttyACM0:

crw-rw---- 1 root uucp 166,  0 16 nov 14:58 ttyACM0

La aplicación de impresión 3D repetierHostrequiere acceso de lectura/escritura a este dispositivo para poder funcionar. Si inicio 'ingenuamente' la aplicación sin ninguna preparación, la aplicación no funciona.

Si ejecuto la aplicación como root, funciona.

Si ejecuto la aplicación como un usuario normal con un grupo (suplementario) uucp, todavía no funciona.

Si doy /dev/ttyACM0los indicadores de permiso rw-rw-rw-y lo ejecuto con mi usuario normal, funciona.

(¿Por qué) mi permiso a través del uucpgrupo no se transmite a la aplicación?

No me opondría a simplemente otorgar rw-rw-rw-permisos al archivo, pero estos se restablecen cuando el dispositivo se desconecta y se vuelve a conectar. Si no puedo hacer que esto funcione a través del uucpgrupo, ¿cómo puedo hacer que el cambio en los indicadores de permiso sea persistente?

Respuesta1

Configuraría el grupo de la repetierHostaplicación uucpy luego configuraría el bit SGID (siempre que sea un binario real y no un script):

chgrp uucp repetierHost
chmod g+s repetierHost

Si repetierHost es un script, podría considerar moverlo repetierHost.shy escribir un pequeño contenedor de programación en C repetierHostque llamerepetierHost.sh

P.ej:

#include <stdlib.h>

int 
main(int argc, char *argv[])
{
    system("/path/to/repetierHost.sh");
}

Respuesta2

Encontré elsgcomando, que parece ser exactamente lo que necesitaba:

sg- ejecutar el comando como ID de grupo diferente

Entonces simplemente escribo un contenedor mínimo de la siguiente manera:

#!/bin/bash
sg uucp /usr/bin/repetierHost.sh

Esto funciona perfectamente.

información relacionada