Home > Comandi Console, Linux, Ubuntu > Eseguire un programma come root senza la richiesta di password

Eseguire un programma come root senza la richiesta di password

25 marzo 2008

Quasi tutti sanno che per eseguire un programma con permessi di amministratore si utilizzerà sudo nomecomando, oppure la versione grafica gksudo nomecomando. Verrà richiesto l’inserimento della propria password e se autorizzati verrà eseguito il programma con i permessi di root.

E’ però possibile fare in modo che per un certo programma e per un certo utente, non venga chiesta la password per l’autenticazione. Questo rende possibile eseguire un programma che richiedere privilegi anche in ambienti ristretti o all’interno di altri programmi oppure senza la noia di doverla digitare ogni volta che ne abbiamo bisogno.

Per far ciò apriamo un terminale e digitiamo:

sudo visudo

Sarà presentato un editor (nano) per la modifica del file temporaneo sudoers. Aggiungendo in fondo:

utente ALL = (ALL) NOPASSWD: /percorso/del/programma

In un esempio possiamo dare la libertà al nostro utente di riavviare il sistema da terminale usando il comando sudo reboot:

paperotto ALL = (ALL) NOPASSWD: /sbin/reboot

Per uscire utilizzeremo CTRL+X, verrà chiesto se salvare, rispondere naturalmente S. Senza neanche bisogno di riavviare sarà possibile per l’utente paperotto utilizzare sudo reboot per riavviare il sitema senza password.

Dovendo inserire più comandi, magari similari per tipologia, è possibile definire un gruppo di comandi con:

Cmnd_Alias NOMEGRUPPO = /percorso/comando1, /percorso/comando2

Ad esempio:

Cmnd_Alias SPEGNIMENTO = /sbin/halt, /sbin/shutdown, /sbin/reboot

E modificare il permesso per l’utente con:

paperotto ALL = (ALL) NOPASSWD:  SPEGNIMENTO

Fatto ciò l’utente paperotto potrà eseguire uno qualsiasi tra i tre comandi, con sudo ma senza la richiesta di password.

Aggiornamento (25/03/2008 20.45)

Mi fanno notare una guida sulla personalizzazione di sudoers tramite visudo,   più completa e approfondita di questa. La si trova su http://fox91.wordpress.com/2008/03/21/etcsudoers-con-una-marcia-in-piu/.

  1. chicco00
    07 dicembre 2010 alle 9:44

    Ciao Muflone, sarò un assillo, però abbi pazienza mi fido della tua competenza e della chiarezza. Volevo chiederti un aiuto perchè sto modificando con ‘sudo visudo’ (che tanto per riesumare post antiquati si apre con nano) e ho seguito le indicazioni, Tutto funziona bene solo che quando definisco :
    ”Cmnd_Alias ROUTINE= /usr/bin/apt-get, /bin/mount, /sbin/mount.fuse, /sbin/mount.cifs, /sbin/mount.smbfs, /sbin/mount.ntfs-3g, /sbin/mount.ntfs-fuse, /sbin/mount.mtpfs, /sbin/mount.ntfs”

    e poi
    ” ALL=(ALL) NOPASSWD: ROUTINE”
    apt-get me lo include e lo utilizzo senza passwd mentre mount no! mi dice:
    ”mount: è possibile solo per root”
    inizialmente avevo trovato con locate mount la posizione del comando ed inserito solo mount/umount nell’alias, ma poi visto che non funziona ho usato whereis e inserito un po’ tutto.
    Ho letto che forse, dato che mount ha questa noia, la soluzione sarebbe ”suid”…

    a little help?!?!

    • 07 dicembre 2010 alle 13:20

      per usare gedit con visudo, trovi un altro articolo sempre nel blog.

      per mount come richiami il comando?

      • chicco00
        07 dicembre 2010 alle 15:39

        no no, con nano mi trovo bene.

        il comando che do:
        ‘sudo mount -t cifs -o username=PERSONALE/ //srv-pers-fs// /mnt/Condivisione/’

        per il quale vorrei eliminare sudo, tanto più che mi chiede cmq la psw dell’utenza di dominio…

  2. 07 dicembre 2010 alle 15:59

    sudo non si può eliminare, ciò che esegui con questa guida è il comando usando sudo ma senza richiesta di password.

    l’errore che tu hai indicato è quello di esecuzione di mount senza sudo e quello è giusto che rimanga così.
    se hai il problema che ti chiede ugualmente la password quello si può vedere ma il comando va comunque lanciato con sudo.

    • chicco00
      07 dicembre 2010 alle 20:54

      che sciocco, ci sarei potuto arrivare anche da solo (leggendo con più attenzione e) in effetti perchè ho raggruppato anche apt-get, che in genere lancio con un alias che comprende anche sudo. perfetto dunque!
      ti posto una domanda: vorrei automatizzare questi passi:
      – monto la cartella remota;
      – sincronizzo con rsync (origine cartella locale -> destinazione cartella remota);
      – smonto la cartella remota.
      Devo avere uno script che poi viene lanciato periodicamente?
      E’ possibile inserire nello script anche la digitazione della password che mi chiede dopo il primo passo (password di dominio win e non di sudo)?

      thanx!

      • 07 dicembre 2010 alle 21:25

        questo e` un blog di informazioni, non un forum di risoluzione problemi.

        apri una richiesta su lqh o sul forum di ubuntu

  3. chicco00
    08 dicembre 2010 alle 9:10

    Muflone :
    questo e` un blog di informazioni, non un forum di risoluzione problemi.
    apri una richiesta su lqh o sul forum di ubuntu

    mentre ieri scrivevo mi è venuto il dubbio di abusare… 🙂 grazie mille per le info! buon lavoro!

  4. Antonio
    06 febbraio 2012 alle 21:45

    ok. ma funziona solo una volta.
    come si fà a farlo funzionare sempre?

Comment pages
  1. 18 agosto 2009 alle 14:15
I commenti sono chiusi.