GNU/Linux >> Linux Esercitazione >  >> Linux

Come eseguire comandi particolari senza password Sudo in Linux

Uso uno script nel mio sistema Ubuntu distribuito su AWS. Lo scopo principale di questo script è controllare se un servizio specifico è in esecuzione a intervalli regolari (ogni minuto per la precisione) e avviare automaticamente quel servizio se viene interrotto per qualsiasi motivo. Ma il problema è che ho bisogno dei privilegi sudo per avviare il servizio. Come forse già saprai, dovremmo fornire la password quando eseguiamo qualcosa come utente sudo. Ma non voglio farlo. Quello che in realtà voglio fare è eseguire il servizio come sudo senza password. Se ti trovi in ​​una situazione del genere, conosco un piccolo trucco, oggi, in questa breve guida, ti insegnerò come eseguire comandi particolari senza sudo password in sistemi operativi simili a Linux e Unix.

Dai un'occhiata al seguente esempio.

$ sudo mkdir /ostechnix
[sudo] password for sk:

Come puoi vedere nello screenshot sopra, devo fornire la password sudo durante la creazione di una directory denominata ostechnix nella cartella root (/). Ogni volta che proviamo a eseguire un comando con privilegi sudo, dobbiamo inserire la password. Tuttavia, nel mio scenario, non voglio fornire la password sudo. Ecco cosa ho fatto per eseguire un comando sudo senza password sulla mia macchina Linux.

Disclaimer: Questo è solo a scopo educativo. Dovresti stare molto attento mentre applichi questo metodo. Questo metodo è sia produttivo che distruttivo. Ad esempio, se consenti agli utenti di eseguire 'rm' comando senza sudo password, potrebbero eliminare accidentalmente o intenzionalmente cose importanti. Sei stato avvisato!

Esegui comandi particolari senza sudo password in Linux

Per qualsiasi motivo, se vuoi consentire a un utente di eseguire un determinato comando senza fornire la password sudo, devi aggiungere quel comando in sudoers file.

Voglio l'utente denominato sk per eseguire mkdir comando senza fornire la password sudo. Vediamo come fare.

Modifica il file sudoers:

$ sudo visudo

Aggiungi la riga seguente alla fine del file.

sk ALL=NOPASSWD:/bin/mkdir

Qui, sk è il nome utente. Come per la riga precedente, l'utente sk può eseguire 'mkdir' comando da qualsiasi terminale, senza sudo password.

Puoi aggiungere comandi aggiuntivi (ad esempio chmod ) con valori separati da virgole come mostrato di seguito.

sk ALL=NOPASSWD:/bin/mkdir,/bin/chmod

Salva e chiudi il file. Disconnettersi (o riavviare) il sistema. Ora, accedi come normale utente 'sk' e prova a eseguire quei comandi con sudo e guarda cosa succede.

$ sudo mkdir /dir1

Vedere? Anche se ho eseguito 'mkdir' comando con privilegi sudo, non è stata richiesta la password. D'ora in poi, l'utente sk non è necessario inserire la password sudo durante l'esecuzione di 'mkdir' comando.

Quando esegui tutti gli altri comandi tranne quelli aggiunti nei file sudoers, ti verrà chiesto di inserire la password sudo.

Eseguiamo un altro comando con sudo.

$ sudo apt update

Vedere? Questo comando mi chiede di inserire la password sudo.

Se non vuoi che questo comando ti chieda di chiedere la password sudo, modifica il file sudoers:

$ sudo visudo

Aggiungi il 'apt' comando nel file visudo come di seguito:

sk ALL=NOPASSWD: /bin/mkdir,/usr/bin/apt

Hai notato che il percorso del file eseguibile binario apt è diverso da mkdir? Sì, è necessario fornire il percorso del file eseguibile corretto. Per trovare il percorso del file eseguibile di qualsiasi comando, ad esempio 'apt' , usa 'whereis' comando come di seguito.

$ whereis apt
apt: /usr/bin/apt /usr/lib/apt /etc/apt /usr/share/man/man8/apt.8.gz

Come vedi, il file eseguibile per il comando apt è /usr/bin/apt , quindi l'ho aggiunto nel file sudoers.

Come ho già detto, puoi aggiungere un numero qualsiasi di comandi con valori separati da virgole. Salva e chiudi il tuo file sudoers una volta che hai finito. Esci e accedi nuovamente al tuo sistema.

Ora, controlla se puoi essere in grado di eseguire il comando senza usare la password sudo:

$ sudo apt update

Vedere? Il comando apt non mi ha richiesto la password anche se l'ho eseguito con sudo.

Ecco un altro esempio. Se desideri eseguire un servizio specifico, ad esempio apache2, aggiungilo come mostrato di seguito.

sk ALL=NOPASSWD:/bin/mkdir,/usr/bin/apt,/bin systemctl restart apache2

Ora, l'utente può eseguire 'sudo systemctl restart apache2' comando senza sudo password.

Download consigliato - Cheat sheet gratuito:"Cheat sheet di Linux Command Line"

Posso riautenticarmi su un comando particolare nel caso precedente? Certo che si! Basta rimuovere il comando aggiunto. Esci e riconnettiti.

In alternativa, puoi aggiungere 'PASSWD:' direttiva prima del comando. Guarda il seguente esempio.

Aggiungi/modifica la seguente riga come mostrato di seguito.

sk ALL=NOPASSWD:/bin/mkdir,/bin/chmod,PASSWD:/usr/bin/apt

In questo caso, l'utente sk può eseguire 'mkdir' e 'chmod' comandi senza inserire la password sudo. Tuttavia, deve fornire la password sudo durante l'esecuzione di 'apt' comando.

Lettura consigliata:

  • Come concedere e rimuovere i privilegi di Sudo agli utenti su Ubuntu
  • Come modificare il file di registro di Sudo predefinito in Linux
  • Come ripristinare i privilegi di Sudo a un utente
  • Come trovare tutti gli utenti Sudo nel tuo sistema Linux
  • Come forzare gli utenti a utilizzare la password di root invece della propria password quando si utilizza sudo

Linux
  1. Esegui container su Linux senza sudo in Podman

  2. Come mostrare asterischi durante la digitazione della password Sudo in Linux

  3. Come eseguire un comando bash Linux in uno script PERL?

  4. Come eseguire un programma specifico come root senza una richiesta di password?

  5. Ansible:sudo senza password

Come modificare il timeout della password di Sudo in Linux

Come eseguire più comandi Linux in un unico comando

Come eseguire comandi Sudo senza password

Come eseguire più comandi Linux contemporaneamente nel terminale Linux

Come eseguire un alias con Sudo in Linux

Come eseguire sudo comandi senza password