Eseguire Nautilus-script come proprioUser:altroGruppo

Linguaggi di programmazione: php, perl, python, C, bash, ecc.

Eseguire Nautilus-script come proprioUser:altroGruppo

Messaggioda rai » domenica 19 marzo 2017, 14:35

Se devo eseguire uno script con i permessi di un altro gruppo faccio:
Codice: Seleziona tutto
sudo -g nomeGruppo /path/script.py
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*
rai
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1840
Iscrizione: maggio 2008
Località: Palermo
Distribuzione: 12.04 | 16.04

Re: Eseguire Nautilus-script come proprioUser:altroGruppo

Messaggioda crap0101 » domenica 26 marzo 2017, 14:23

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.
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
 
Messaggi: 8149
Iscrizione: ottobre 2007
Località: TO
Desktop: Lubuntu
Distribuzione: Ubuntu 14.04.3 LTS
Sesso: Maschile

Re: Eseguire Nautilus-script come proprioUser:altroGruppo

Messaggioda crap0101 » domenica 26 marzo 2017, 19:55

...aggiungo: per cambiare gruppo al volo si può anche usare `sg`
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
 
Messaggi: 8149
Iscrizione: ottobre 2007
Località: TO
Desktop: Lubuntu
Distribuzione: Ubuntu 14.04.3 LTS
Sesso: Maschile

Re: Eseguire Nautilus-script come proprioUser:altroGruppo

Messaggioda rai » lunedì 27 marzo 2017, 13:54

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
Codice: Seleziona tutto
subprocess.Popen(shlex.split(sg altroGruppo))
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
rai
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1840
Iscrizione: maggio 2008
Località: Palermo
Distribuzione: 12.04 | 16.04

Re: Eseguire Nautilus-script come proprioUser:altroGruppo

Messaggioda crap0101 » lunedì 27 marzo 2017, 18:37

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
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
 
Messaggi: 8149
Iscrizione: ottobre 2007
Località: TO
Desktop: Lubuntu
Distribuzione: Ubuntu 14.04.3 LTS
Sesso: Maschile


Torna a Programmazione

Chi c’è in linea

Visualizzano questa sezione: Baidu [Spider] e 4 ospiti