|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Sep 2008
Città: Roma
Messaggi: 1382
|
Script e privilegi di root
Salve!
Ho scoperto anyremote, un programma per controllare il pc attraverso un client sul cellulare, usando il bluetooth. Si associa ogni tasto del telefono ad un comando. Ci sono diverse configurazioni, una per ogni programma. Per esempio c'è quella per comandare vlc, totem, per controllare il mouse ![]() Uso questo programma come telecomando per vedere i film la sera sul pc. Però, prima di avviare anyremote, devo cambiare l'output audio e disattivare lo screensaver. Allora avevo pensato di fare uno script, che magari quando ho finito di usare il pc, ripristina l'audio e lo screensaver e spegne il pc. Qui mi sono bloccato, perché per eseguire shutdown devo essere root. Ma gli altri comandi vanno eseguiti col mio utente. Inoltre lo shutdown va eseguito alla fine, e non posso certo alzarmi per mettere la password, altrimenti non avrebbe senso. Lo script avrebbe una struttura del tipo: ----- cambia output disattiva screensaver avvia anyremote [credo che da anyremote posso lanciare dal telefono "killall anyremote" per farlo chiudere da solo, anche se non mi sembra una bella soluzione] cambia output riabilita screensaver shutdown ---- Qualcuno può aiutarmi? grazie ![]() Ultima modifica di Damage92 : 22-06-2010 alle 14:50. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: May 2001
Messaggi: 438
|
|
![]() |
![]() |
![]() |
#3 | |
Registered User
Iscritto dal: Sep 2005
Messaggi: 408
|
Quote:
nello script davanti al comando da eseguire come root (nel tuo caso "shutdown") metti sudo. Poi dai i permessi allo script in questo modo: Codice:
chmod u+s+x /percorso/script.sh ![]() |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Sep 2008
Città: Roma
Messaggi: 1382
|
Questa non la conoscevo! A cosa servono quei permessi esattamente?
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Sep 2008
Città: Roma
Messaggi: 1382
|
Innanzitutto grazie a tutti quanti per le risposte
![]() Ancora non capisco come funziona il meccanismo. Da quello che ho letto, utilizzando quei permessi, se lancio lo script con il mio utente, dato che lo script appartiene a root, allora dovrei avere i privilegi di root. Ma facendo una prova non funziona... Inoltre, se avessi i permessi di root, a cosa servirebbe utilizzare sudo davanti al comando? Forse il fatto è che avere i privilegi di root ed essere loggati come utente root sono due concetti diversi? Grazie ancora! |
![]() |
![]() |
![]() |
#7 | ||
Senior Member
Iscritto dal: Apr 2007
Messaggi: 895
|
Quote:
Il setuid è un po' diverso dal dare i privilegi di superutente o root. In realtà, con il setuid, i privilegi del processo vengono impostati in base a quelli del proprietario del file. Guarda, nel link che ti ho postato è spiegato abbastanza bene. Disorienta giusto l'ultima proposizione ("con quelli dell'utente che lo avvia"): "il setuid o suid, applicato ad un file che ha il permesso di esecuzione, indica che esso va eseguito con i privilegi dell'utente proprietario del file anziché con quelli dell'utente che lo avvia". In altre parole (correggetemi se sbaglio) è come assegnare all'user la proprietà dello script, che viene eseguito senza una richiesta di password anche se questo contiene comandi che implicano privilegi di root. Quote:
Una cosa è certa, il setuid è cosa diversa dall'eseguire lo script come root o con i privilegi di root. Inoltre, credo che sì, root e superutente siano due cose diverse. Quando s'installa ubuntu viene chiesto d'inserire una sola password. Se installi debian, invece, te ne chiede due, come è giusto che sia: una è per l'utente con eventuali privilegi, l'altra è quella di root. Se con ubuntu vuoi loggarti da root, devi prima impostare (attraverso dei comandi) la password di root che durante l'installazione non viene, appunto, richiesta. Già questo fa capire un po' la differenza. Spero di non aver scritto marronate. ![]() |
||
![]() |
![]() |
![]() |
#8 |
Registered User
Iscritto dal: Sep 2005
Messaggi: 408
|
Avete ragione a dire che non funziona, ho detto una minkiata spaventosa
![]() ![]() Se così fosse chiunque senza password di root potrebbe fare qualsiasi cosa... ![]() La soluzione comunque c'è (e funziona) solo che dovresti mettere la password di root all'interno dello script. Se non temi che qualcuno possa vederti la password curiosando nello script, procedi così: Nella riga dove andrebbe il shutdown Codice HTML:
echo 'TuaPassword' | sudo -S shutdown -h now Mi scuso ancora se vi ho fatto perdere tempo. |
![]() |
![]() |
![]() |
#9 | |||
Senior Member
Iscritto dal: Sep 2008
Città: Roma
Messaggi: 1382
|
@demi@n
Quote:
Quote:
Quote:
Il ragionamento fila, quindi possiamo dire che avere i privilegi di root ed essere root sono due cose diverse. Ora rimane da capire perché il setuid non funziona (almeno con la prova che ho fatto io...). Ho scritto in un file: touch /prova solo root può creare un file nella cartella radice. Lo script appartiene a root:root, ed è settato il setuid (s minuscola, quindi c'è anche il flag di esecuzione). Quando con il mio utente vado ad eseguire, touch mi risponde: "permission denied". Ovviamente lanciato da root funziona... @Kampa67 Effettivamente con echo pare funzionare! Non è proprio la soluzione migliore, ma almeno per il momento lo posso usare. Grazie a tutti, se riesco a capirci qualcosa in più lo scrivo nella discussione! |
|||
![]() |
![]() |
![]() |
#10 | |||||
Senior Member
Iscritto dal: Apr 2007
Messaggi: 895
|
Quote:
Quote:
In entrambi i casi, devi dare, attraverso la conf di gdm, il permesso a root di loggarsi. Impostazione che di default non è abilitata, perchè ritenuta pericolosa. Quote:
Quote:
![]() Quote:
Può anche darsi che non sia corretta la sintassi del chmod. Non lo so, dovrei verificare. PS: qui c'è un piccolo how-to per ubuntu (non so se vale per Lucid) su come permettere a root di loggarsi nell'ambiente grafico: http://www.brainessence.it/index.php?id=142 Solo che il tizio del blog ha scritto un'inesattezza, questa: "L’ utente root, detto anche “super utente”, è infatti l’equivalente dell’amministratore di sistema tipico di Windows". Non è così. Il superutente sei tu, root è l'utente di sistema e c'è di default. Ultima modifica di demi@n : 25-06-2010 alle 14:17. |
|||||
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Sep 2008
Città: Roma
Messaggi: 1382
|
Quote:
Gli utenti sono root (che c'è sempre, al massimo è disabilitato il suo login) e gli altri utenti. Ogni utente ha i suoi privilegi (cosa può e non può fare). Root ha i provilegi di superutente, può fare tutto. Prima stavamo dicendo che sudo è in grado di dare agli utenti normali i privilegi di superutente (quelli che normalmente ha root), rimanendo comunque gli stessi utenti. In effetti quello che servirebbe a me è proprio avere i privilegi di root (per fare lo shutdown), ma rimanere con il mio utente (quando do il comando per togliere lo screensaver, deve toglierlo alla configurazione del mio utente, non a quella di root!). Purtroppo, dando il comando (da utente normale): sudo whoami risponde: root ...quindi significa che sudo ti fa diventare proprio root, non ti da semplicemente i suoi poteri ![]() |
|
![]() |
![]() |
![]() |
#12 | |||
Senior Member
Iscritto dal: Apr 2007
Messaggi: 895
|
Quote:
Quello che volevo mettere in risalto, è che root è un utente vero e proprio. Prova a navirare in nautilus come root e dimmi se la home è uguale alla tua. Quote:
Mi sembra che alla fine il tizio abbia risolto (se ho tradotto bene). Quote:
Rimane il fatto che tu e root cmq non siete gli stessi utenti. ![]() ps: sudo significa "super user do", non "root do". Ultima modifica di demi@n : 25-06-2010 alle 15:19. |
|||
![]() |
![]() |
![]() |
#13 | ||
Senior Member
Iscritto dal: Sep 2008
Città: Roma
Messaggi: 1382
|
Quote:
![]() Quote:
![]() Non so proprio che dirti, anche secondo me si dovrebbe rimanere gli stessi utenti, ma di fatto non funziona (o comunque non mi torna utile per il mio script ![]() |
||
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
mmm male molto male
![]() sarò catastrofista ma già vedo virus per android e iphone che manipolano i nostri pc e gli home server ![]() |
![]() |
![]() |
![]() |
#15 |
Senior Member
Iscritto dal: Apr 2007
Messaggi: 895
|
Ascolta, sto leggendo in web varie soluzioni per lo shutdown, perchè interessa anche a me.
Se scrivi "linux shutdown script" o meglio ancora "ubuntu shutdown script" su google, vengono fuori parecchie cosine. Il setuid è sconsigliato in casi come questo (giustamente). Io ho trovato inressante questo post: http://linux.derkeiler.com/Mailing-L...4-08/3538.html Il tizio deve gestire un server e fare uno shutdown quando lo ritiene opportuno. Chi gli risponde, addirittura ha autorizzato tutti gli user del suo laptop ad eseguire lo shutdown senza avere privilegi di root e senza andare a sovrascrivere file di sistema. Quindi ha creato uno script e l'ha messo in /usr/local/sbin/, chiamandolo shutdwon.sh Se nel tuo programma, fai in modo di puntare a quello script, può darsi che hai risolto il problema. Cmq, ti lascio anche il link di un paio di post molto significativi riguardo la questione root-superuser. In quel thread molti consigliano di mettere lo script in /etc/init.d e lswb (l'autore dei post), spiega perchè non è corretto un approccio del genere. http://ubuntuforums.org/showpost.php...3&postcount=16 http://ubuntuforums.org/showpost.php...4&postcount=18 Dacci un'occhiata. ![]() |
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Apr 2007
Messaggi: 895
|
|
![]() |
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Sep 2008
Città: Roma
Messaggi: 1382
|
@ demi@n
Il primo link mi è utile, in pratica si può configurare sudo per non chiedere la password quando si lancia un certo comando! ![]() ![]() Ora grazie a sudo posso fare quello che volevo... però non è che sia il massimo usare sudo... il sistema così è più insicuro (come dice anche pabloski ![]() Se un processo riesce a prendere i privilegi del mio utente (e non dovrebbe essere difficile, basta che mi sbaglio io e lo avvio), allora potrebbe spegnere la macchina da solo, e non è una bella cosa ![]() Interessante il discorso di init.d, in pratica non è furbo mettere li degli script che non servono per il boot/shutdown. |
![]() |
![]() |
![]() |
#18 | |||
Senior Member
Iscritto dal: Apr 2007
Messaggi: 895
|
Quote:
Ma forse ti riferivi a sudoers? Guarda che configurato in quel modo, viene specificato chi può fare lo shutdown senza password e chi no. Inoltre punta ad una directory locale (se dai un'occhiata a /usr/local/sbin/ non ci trovi nessun file). Quote:
Approfondiamo la discussione, che oltretutto mi sta piacendo. Quote:
Lì ci sono file di sistema che, a mio avviso, non vanno sovrascritti o scavalcati. Diverso è mettere lo script in /usr/local/sbin/. |
|||
![]() |
![]() |
![]() |
#19 | |
Senior Member
Iscritto dal: Sep 2008
Città: Roma
Messaggi: 1382
|
Quote:
Nel mio caso mi frega, perché non posso stare davanti la tastiera per scrivere la password! Dovrei scriverla quando "avvio la modalità media-center" (cioè prima di ficcarmi sotto le coperte ![]() Non vedo altre soluzioni "semplici" ![]() Però adesso mi è venuto un altro dubbio: come fa il mio utente a spegnere la macchina dal menu di Gnome!? Su gnome sono loggato con il mio utente, e il mio utente non può fare lo shutdown!! Come hanno fatto? ![]() |
|
![]() |
![]() |
![]() |
#20 |
Senior Member
Iscritto dal: Apr 2007
Messaggi: 895
|
Media Center immagino che si avvii senza privilegi, lo shutdown invece li richiede.
Quindi le due operazioni sono su un piano diverso. Avviare il sistema o lanciare MC da root non sta nè in cielo nè in terra. Quindi l'unica soluzione è quella di autormatizzare il tutto attraverso uno script che contempli lo spegnimento del pc senza richiesta di password o con password già scritta (da qualche parte). Lo shutdown non è necessario farlo dal menu di gnome, si può fare attraverso i comandi: - poweroff - halt - shutdown Al momento, l'unica cosa che mi pare possibile è quella di editare sudoers come indicato in uno dei precedenti post e non vedo come qualche processo possa prendere il controllo del tuo pc. Oppure attraverso il setuid che però, a mio avviso, è più pericoloso del primo. Ti lascio un altro po' di link: http://ubuntuforums.org/showthread.php?t=392346 (sudoders) http://ubuntuforums.org/showthread.php?t=161230 (sudoers) http://forum.html.it/forum/showthread/t-702454.html (setuid, v. post di MaximoD e per chmod guarda qui: http://en.wikipedia.org/wiki/Chmod#C..._line_examples ) Mi raccomando, se dovessi metter mano a sudoers, fallo con visudo (sudo visudo) che verifica la correttezza del file stesso e in caso di errori non salva le modifiche. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:36.