Repository 32bit  Forum
Repository 64bit  Wiki

Esecuzione applicazione con utente diverso

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

Esecuzione applicazione con utente diverso

Messaggioda tgmx » gio feb 07, 2008 15:35

Ciao Ragazzi,

sto sviluppando una piccola interfaccia in C++/QT4 con l'unico scopo di velocizzare la visualizzazione di determinati documenti. Nel caso di documenti pdf li apro (via c++ tramite exec) eseguendo la stringa "kpdf /pippo/gigi/file.pdf ".
Il problema è che non voglio che l'utente possa, dal menù di kpdf, sovrascrivere il file che ha appena aperto e quindi pensavo di eseguire kpdf con soli privilegi di lettura.

La soluzione che mi è venuta in mente è qualcosa del tipo:
Codice: Seleziona tutto
sudo -u utente_limitato kpdf /pippo/gigi/file.pdf

ma non ho capito come dire a sudo di consentire a user di eseguire un'applicazione come utente_limitato e senza richiedere la password.
Avatar utente
tgmx
Linux 3.x
Linux 3.x
 
Messaggi: 1331
Iscritto il: ven apr 28, 2006 13:40
Località: Ancona
Slackware: 13.37
Desktop: KDE 4

Re: Esecuzione applicazione con utente diverso

Messaggioda ildiama » gio feb 07, 2008 16:21

Scusa, dico una cavolata. Ma (root a parte) la possibilità di scrivere su /pippo/gigi/file.pdf non dipende da chi lancia kpdf, ma dai permessi che questo qualcuno ha sul file, no?

Codice: Seleziona tutto
-rw-r--r--  1 pippo users  97275 2008-01-23 17:36 file.pdf


questo file gigi lo può leggere, ma non (sovra)scrivere.
Avatar utente
ildiama
Linux 2.6
Linux 2.6
 
Messaggi: 536
Iscritto il: mar dic 27, 2005 16:49
Località: Senigallia
Slackware: mine
Kernel: 2.6.alto..
Desktop: KDE4

Re: Esecuzione applicazione con utente diverso

Messaggioda murdock » gio feb 07, 2008 16:30

Io aprirei con exec una roba tipo:
Codice: Seleziona tutto
cp -f /pippo/gigi/file.pdf /pippo/gigi/.nometuoprogramma-cache-file && chmod -w /pippo/gigi/.nometuoprogramma-cache-file && kpdf /pippo/gigi/.nometuoprogramma-cache-file


Saluti,
MuRdOcK
Avatar utente
murdock
Linux 2.4
Linux 2.4
 
Messaggi: 452
Iscritto il: ven mag 25, 2007 11:58
Slackware: 64 14.1
Kernel: 3.16,3
Desktop: KDE 4.14,1

Re: Esecuzione applicazione con utente diverso

Messaggioda Dani » gio feb 07, 2008 16:34

Se il programma lo avvii da root o è di root ed ha il bit suid attivo, e se il file è scrivibile solo da root, fai prima a fare una chiamata a seteuid() ... Oppure potresti settare come proprietario del tuo programma l'utente non privilegiato e settare il bit suid...Ovviamente il pdf non deve essere scrivibile dall'utente non privilegiato.
O ancora potresti copiare il pdf in /tmp, aprire questo col tuo programma e all'uscita eliminarlo. In questo modo pur modificando il file l'utente scriverebbe sul file temporaneo, che all'uscita non esiste piu' perchè ne avrai registrato l'eliminazione con atexit :D (pero' se punti alla velocità forse non è molto conveniente, specie con pdf di grandi dimensioni :roll:)
Dani
Linux 3.x
Linux 3.x
 
Messaggi: 1447
Iscritto il: mer apr 26, 2006 0:52
Desktop: gnome
Distribuzione: arch

Re: Esecuzione applicazione con utente diverso

Messaggioda tgmx » gio feb 07, 2008 16:54

ildiama ha scritto:Scusa, dico una cavolata. Ma (root a parte) la possibilità di scrivere su /pippo/gigi/file.pdf non dipende da chi lancia kpdf, ma dai permessi che questo qualcuno ha sul file, no?
Codice: Seleziona tutto
-rw-r--r--  1 pippo users  97275 2008-01-23 17:36 file.pdf

questo file gigi lo può leggere, ma non (sovra)scrivere.


Questa soluzione non va bene perchè dalla mia applicazione in certi casi è anche possibile aggiungere dei file quindi in linea generale deve avere i permessi per farlo.

murdock ha scritto:Io aprirei con exec una roba tipo:
Codice: Seleziona tutto
cp -f /pippo/gigi/file.pdf /pippo/gigi/.nometuoprogramma-cache-file && chmod -w /pippo/gigi/.nometuoprogramma-cache-file && kpdf /pippo/gigi/.nometuoprogramma-cache-file


In questo modo risolverei parte del problema ma dal menù apri o salva con nome l'utente puù comunque cancellare il file perchè la directory in cui si trova non è in sola lettura.

Dani ha scritto:Se il programma lo avvii da root o è di root ed ha il bit suid attivo, e se il file è scrivibile solo da root, fai prima a fare una chiamata a seteuid() ... Oppure potresti settare come proprietario del tuo programma l'utente non privilegiato e settare il bit suid...Ovviamente il pdf non deve essere scrivibile dall'utente non privilegiato.
O ancora potresti copiare il pdf in /tmp, aprire questo col tuo programma e all'uscita eliminarlo. In questo modo pur modificando il file l'utente scriverebbe sul file temporaneo, che all'uscita non esiste piu' perchè ne avrai registrato l'eliminazione con atexit :D (pero' se punti alla velocità forse non è molto conveniente, specie con pdf di grandi dimensioni :roll:)


Questa (setuid) forse è la più adatta ma mi costringerebbe ad avviare il mio programma come root con tutti i rischi che possono derivare.

La mia idea era proprio di eseguire kpdf con permessi limitati ma senza essere costretto ad eseguire il mio programma da root.
Avatar utente
tgmx
Linux 3.x
Linux 3.x
 
Messaggi: 1331
Iscritto il: ven apr 28, 2006 13:40
Località: Ancona
Slackware: 13.37
Desktop: KDE 4

Re: Esecuzione applicazione con utente diverso

Messaggioda Dani » gio feb 07, 2008 17:03

I files da leggere sono scrivibili dall'utente non privilegiato ? In caso negativo puoi assegnare la proprietà del tuo programma all'utente e settare il bitsuid. Così facendo il programma ha come euid l'id del proprietario, cioè l'id dell'utente non privilegiato, il quale non potra' modificare il file se non ha i permessi in scrittura.
Viceversa se il file è scrivibile da tutti l'unica cosa da fare e ricopiare il pdf, non vedo altre alternative :?
Dani
Linux 3.x
Linux 3.x
 
Messaggi: 1447
Iscritto il: mer apr 26, 2006 0:52
Desktop: gnome
Distribuzione: arch

Re: Esecuzione applicazione con utente diverso

Messaggioda Mario Vanoni » gio feb 07, 2008 17:45

tgmx ha scritto:Questa soluzione non va bene perchè dalla mia applicazione in certi casi è anche possibile aggiungere dei file quindi in linea generale deve avere i permessi per farlo.


Curiosita`:
come discerne la tua applicazione files alterabili da files tabu?

Mario Vanoni
Mario Vanoni
Iper Master
Iper Master
 
Messaggi: 3174
Iscritto il: lun set 03, 2007 20:20
Località: Cuasso al Monte (VA)
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey

Re: Esecuzione applicazione con utente diverso

Messaggioda tgmx » ven feb 08, 2008 8:15

Effettivamente non soso stato proprio chiaro.

L'idea era di fare un'applicazione per riordinare i documenti pdf (e altri). Questo dovrebbe essere fatto consentendo all'utente, con una maschera, di poter aggiungere documenti registrando contemporaneamente su un db mysql dei tag relativi al documento la daa di inserimento e il percorso.
In un'altra maschera è possibile ricercare i documenti con opportune select sul db in base ai tag precedentemente registrati. Una volta trovato/i il/i file, cliccando sul suo nome (che si trova in una listview), volevo aprire kpdf per mostrare il pdf (così da evitarmi di sviluppare il qt anche un visualizzatore di pdf).
L'effetto collaterale di questo e che dal menù apri o salva con nome, l'utente può anche cancellare o rinominare o copiare i file.

La soluzione a cui avevo pensato era di avviare kpdf con privilegi minori rispetto a quelli dell'applicazione che lo avvia in modo che dal suo menù non si possa modificare i file.
Per essere ancora più chiari a me andrebbe probabilmente bene anche un visualizzatore di pdf che non abbia menù per salvare o modificare i file.
Avatar utente
tgmx
Linux 3.x
Linux 3.x
 
Messaggi: 1331
Iscritto il: ven apr 28, 2006 13:40
Località: Ancona
Slackware: 13.37
Desktop: KDE 4


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti

cron