[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: esiste alternativa a sg? Più alcuni misteri...



Giuseppe Sacco ha scritto:

> Il giorno dom, 01/09/2024 alle 13.01 +0200, Davide Prina ha scritto:

>> ho fatto uno script e usato pesantemente il comando sg (per chi non lo
>> sapesse serve ad eseguire un comando con un diverso group ID).
>> Ho eseguito lo script l'ultima volta settimana scorsa e ora non funziona
>> più perché il comando non esiste più!

> Il comando newgrp si comporta diversamente a seconda se viene invocato come
> "newgrp" o come "sg". È un solo eseguibile, ma fa cose diverse a seconda dal
> suo nome.
> 
> Le prime righe del sorgente di newgrp (nel pacchetto debian "login") sono:
> 
>         Prog = Basename (argv[0]);
>         log_set_progname(Prog);
>         log_set_logfd(stderr);
>         is_newgrp = (strcmp (Prog, "newgrp") == 0);
>         OPENLOG (is_newgrp ? "newgrp" : "sg");
>         argc--;
>         argv++;

interessante, ecco perché il DM diceva che era inutile pretendere che Debian
fornisse sg...
 
> Se veramente non hai più /usr/bin/sg, allora puoi generarlo
> come link simbolico a newgrp

Però creando il link simbolico non funziona più il mio script.
Questo perché newgrp apre una nuova shell, mentre sg non lo faceva
L'unica spiegazione che ho è che sulla mia macchina fosse rimasto il
vecchio eseguibile sg che hanno tolto per qualche motivo.

Inoltre se hanno tolto il link magari toglieranno anche quella parte di
codice...

> , oppure reinstallando il pacchetto.

no, dal pacchetto l'hanno tolto il link (nel mio caso penso abbiano in
realtà eliminato l'eseguibile sg)

In pratica usavo sg in più punti. In alcuni probabilmente poteri
sostituirlo con chgrp, ma sull'apertura del socket no, perché il file
che rappresenta il socket non posso crearlo prima di creare il socket
e non posso cambiare il gruppo una volta che il socket è creato perché
è ancora in uso.

sg $Gruppo "waypipe -c none --socket ""$SOCKET"" client" &

Ho guardato anche se vi fosse il modo di poter cambiare
temporaneamente il gruppo di un utente, ma facendo questo cambieresti
il gruppo a tutti i file dell'utente... e questo non è assolutamente
accettabile.

In poche parole lo script faceva il seguente:
* se non esista il gruppo di condivisione lo creava
* se l'utente attuale non era sul gruppo condivisione lo aggiungeva
* se l'utente che doveva eseguire il programma (sux solo per
  applicazioni wayland) non era nel gruppo di condivisione lo aggiungeva
* creava una directory temporanea in /tmp con il gruppo di condivisione
* creava il socket a cui si agganciava il client di waypipe
* eseguiva la parte server per eseguire l'applicazione dopo aver
  chiesto l'autenticazione dell'utente con cui doveva essere eseguito
  il programma
* alla fine dell'esecuzione puliva tutto

È possibile fare tutto aprendo un socket in /tmp che sia usabile da
tutti gli utenti... io volevo limitare soltanto agli utenti abilitati
ad eseguire il mio script e che conoscono la password di root (o vengono
messi da root nel gruppo di condivisione) la possibilità di fare tutto
ciò.

Purtroppo cercando non riesco a trovare nulla che possa sostituire sg.

Ciao
Davide

--
La mia privacy non è affar tuo
https://noyb.eu/it
- You do not have my permission to use this email to train an AI -
If you use this to train your AI than you accept to distribute under AGPL
license >= 3.0 all the model trained, all the source you have used to
training your model and all the source of the program that use that model


Reply to: