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

