Pagina 1 di 1
Eseguire Nautilus-script come proprioUser:altroGruppo
Inviato: domenica 19 marzo 2017, 13:35
da rai
Se devo eseguire uno script con i permessi di un altro gruppo faccio:
E se invece lo script in questione fosse un Nautilus-script?
Qual'è il modo per eseguirlo sempre con i permessi di un altro gruppo?
Mi serve per ottenere accesso a un file che appartiene a root:nomeGruppo ed ha permessi 640
Per ora sto facendo così: un Nautilus-script intermedio raccoglie i dati delle variabili d'ambiente GNOME ed esegue:
Codice: Seleziona tutto
sudo -g nomeGruppo /path/script.py $var1 $var2 [...]
forse dovrei agire su /etc/sudoers ma farò outing: ogni volta che provo a studiarmi il manuale, 'sta benedetta notazione di Backus–Naur mi sembra una supercazzola
ergo non ho capito nemmeno *se* si può fare figuriamoci *come*
Re: Eseguire Nautilus-script come proprioUser:altroGruppo
Inviato: domenica 26 marzo 2017, 14:23
da crap0101
non penso però che basti modificare sudoers per ottenere il risultato che vuoi... in quel modo puoi permettere al tuo utente di eseguire programmi appartenenti ad altri utenti e gruppi ma non penso *forzare* a farlo proprio con quegli utenti e gruppi, dovresti comunque usare sudo -g ... per specificarlo, altrimenti verrà eseguito con il gruppo dell'utente in uso.
Re: Eseguire Nautilus-script come proprioUser:altroGruppo
Inviato: domenica 26 marzo 2017, 19:55
da crap0101
...aggiungo: per cambiare gruppo al volo si può anche usare `sg`
Re: Eseguire Nautilus-script come proprioUser:altroGruppo
Inviato: lunedì 27 marzo 2017, 13:54
da rai
Grazie per la risposta. Quindi sudoers è una lista di eccezioni 'permissive' e non 'prescrittive'.
Riguardo a sg, considera che l'azione da eseguire come altroGruppo è dentro uno script Python.
Ho fatto qualche prova da riga di comando ma non appena eseguo
la shell Python viene killata
Non molto meglio va con
Codice: Seleziona tutto
subprocess.Popen(shlex.split(sg nomeGruppo -c COMANDO) )
dove COMANDO non viene eseguito e readline va nel pallone
Posso, senza complicare troppo le cose, eseguire il cambio di gruppo via sg da dentro il processo Python?
Altrimenti, con sg o con sudo -g, cambierebbe poco: sempre un "lanciatore" servirebbe per eseguire lo script.py
Re: Eseguire Nautilus-script come proprioUser:altroGruppo
Inviato: lunedì 27 marzo 2017, 18:37
da crap0101
uhm... non so, a me sembra funzionare. Vedi se questo continua a darti lo stesso errore:
Codice: Seleziona tutto
crap0101@orange:/tmp/foo$ cat x.py
import shlex
import subprocess
PIPE = subprocess.PIPE
cmd = 'sg cdrom -c /tmp/foo/x.sh'
proc = subprocess.Popen(shlex.split(cmd), stdout=PIPE, stderr=PIPE)
out, err = proc.communicate()
print(out, err, sep='\n---\n')
crap0101@orange:/tmp/foo$ cat x.sh
#!/bin/bash
echo "u:$USER|g:$GROUPS"
crap0101@orange:/tmp/foo$ grep cdrom /etc/group
cdrom:x:24:crap0101
crap0101@orange:/tmp/foo$ python3 x.py
b'u:crap0101|g:24\n'
---
b''
crap0101@orange:/tmp/foo$ ./x.sh
u:crap0101|g:1000