Eseguire Nautilus-script come proprioUser:altroGruppo

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
rai
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2886
Iscrizione: domenica 11 maggio 2008, 18:03
Desktop: plasma
Distribuzione: 22.04
Località: Palermo

Eseguire Nautilus-script come proprioUser:altroGruppo

Messaggio da rai »

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?
Spoiler
Mostra
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*
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: Eseguire Nautilus-script come proprioUser:altroGruppo

Messaggio 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.
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: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: Eseguire Nautilus-script come proprioUser:altroGruppo

Messaggio da crap0101 »

...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
rai
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2886
Iscrizione: domenica 11 maggio 2008, 18:03
Desktop: plasma
Distribuzione: 22.04
Località: Palermo

Re: Eseguire Nautilus-script come proprioUser:altroGruppo

Messaggio 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

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
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: Eseguire Nautilus-script come proprioUser:altroGruppo

Messaggio 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
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
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti