GNU/Linux >> Linux Esercitazione >  >> Linux

Come eseguire comandi Sudo senza password

Durante il lavoro con Linux, scopriamo che l'accesso ad alcuni file o l'esecuzione di operazioni sensibili richiede agli utenti di disporre di privilegi elevati. Il comando sudo eleva temporaneamente i privilegi utente consentendo a un utente di eseguire comandi sensibili o accedere ai file senza restrizioni.

La sintassi del comando sudo è il seguente:

$ sudo --help

Discutiamo di quattro modi in cui possiamo eseguire comandi sudo senza dover inserire una password ogni volta. I primi due riguardano la modifica dei sudoers e sudoers.d mentre gli ultimi due comportano l'esecuzione di comandi per elevare i privilegi dell'utente a root.

1. Modifica del file /etc/sudoers

Per prima cosa, proviamo ad eseguire un comando con sudo e vediamo se riceviamo una richiesta di password:

$ sudo systemctl start mariadb

Esegui comandi Sudo senza password

Se vogliamo l'utente Alice per eseguire tutti i sudo comandi senza bisogno di un sudo password per qualsiasi/tutti gli host, modifichiamo il file sudoers.

$ sudo visudo

e usa il NOPASSWD direttiva come mostrato:

alice ALL=(ALL) NOPASSWD: ALL

Esegui particolari comandi Sudo senza password

Per consentire all'utente Alice per eseguire un singolo comando sudo specifico senza inserire una password, è necessario utilizzare la riga seguente nel file sudoers.

alice ALL=(ALL) NOPASSWD: /bin/systemctl start mariadb

Ora prova a eseguire alcuni comandi e vedi...

$ sudo systemctl start mariadb
$ sudo systemctl status mariadb
$ cat /etc/sudoers

Dalla sessione del terminale sopra, abbiamo avviato il MariaDB servizio a causa delle modifiche apportate al file sudoers, non abbiamo una richiesta di password. Nota anche che per i comandi successivi abbiamo una richiesta di password.

Esegui comandi Sudo su un host specifico senza password

Per consentire all'utente di eseguire i comandi su un host specifico come root , invece di utilizzare TUTTO scriviamo:

alice linuxshelltips1=(root) NOPASSWD: /bin/systemctl start mariadb

Quanto sopra consente ad Alice per eseguire il comando elencato su un host con il nome linuxshelltips1 senza inserire una password.

Per consentire l'esecuzione di tre comandi con sudo privilegi per un host linuxshelltips1 e non abbiamo una richiesta di password li elenchiamo come segue:

alice linuxshelltips1=(ALL) NOPASSWD: /bin/systemctl start mariadb, /bin/systemctl status mariadb, /bin/cat /etc/sudoers

Qui consentiamo all'utente Alice per avviare e controllare lo stato di mariadb servizio senza inserire una password su un host con il nome host linuxshelltips1 . L'utente può anche concatenare /etc/sudoers file senza inserire una password.

Tutti e tre i comandi vengono eseguiti senza richiedere una password. Tuttavia, quando proviamo ad arrestare il servizio mariadb, ci viene richiesta una password poiché non l'abbiamo specificata nel file sudoers.

Esegui comandi Sudo senza password per utenti di gruppo

Possiamo anche consentire l'esecuzione dei comandi sudo senza inserire una password per un gruppo di utenti, ad esempio gruppo1 a quale utente Alice appartiene.

%group1 ALL=(ALL) NOPASSWD: ALL

Possiamo anche combinare utenti, gruppi e comandi. Ad esempio, se vogliamo che solo un utente o un gruppo specifico esegua comandi specifici, incolliamo la seguente riga nel file sudoers:

alice,%group2 ALL=(ALL) NOPASSWD: /bin/systemctl, /bin/cat, /bin/kill

Alice e tutti gli utenti appartenenti al gruppo2 può eseguire tutti i comandi systemctl, cat e kill con sudo e non avere una richiesta di password.

Possiamo anche consentire a utenti specifici (alice, bob) di eseguire comandi specifici (systemctl, cat, kill) elencandoli come segue:

bob,alice, ALL=(ALL) NOPASSWD: /bin/systemctl, /bin/cat, /bin/kill

Dopo aver salvato il file, alice e bob può eseguire comandi systemctl, cat e kill su tutti gli host senza che venga richiesta una password.

Nota come elenchiamo i comandi in /bin/ directory, come ad esempio; bin/systemctl o /bin/cat. Invece, potremmo includere l'intera directory e terminare con un ‘/’ carattere. Ciò significherebbe che l'utente può eseguire qualsiasi comando in /bin directory. Tuttavia, questo non si applica ai comandi nelle sottodirectory di /bin directory.

Ad esempio, per consentire ad Alice per eseguire tutti i comandi in /bin/ directory scriviamo:

alice ALL=(ALL) NOPASSWD: /bin/

Alice ora può eseguire tutti i comandi su tutti gli host che richiedono i privilegi sudo che si trovano in /bin/ directory senza richiedere una password.

2. Modifica del file /etc/sudoers.d

In alternativa, è più sicuro apportare modifiche a /etc/sudoers.d invece del file sudoers. Ciò rende la gestione dei privilegi sudo più gestibile e lascia inalterato il file sudoer.

Nota che tutto ciò di cui abbiamo discusso nella sezione precedente è applicabile qui, l'unica differenza è che lavoreremo con sudoers.d file per motivi di sicurezza.

Ad esempio, creiamo un file per alice permettendole di eseguire comandi sudo su un host specifico senza inserire una password.

$ sudo nano /etc/sudoers.d/alice

Dopo aver aperto il file, incolliamo la seguente riga:

alice linxshelltips=(root) NOPASSWD: /bin/

L'utente ora può eseguire tutti i comandi sudo in /bin/ directory senza inserire una password sull'host con il nome host linuxshelltips .

Potremmo anche specificare comandi sudo che possono essere eseguiti da un gruppo di utenti come segue:

$ sudo nano /etc/sudoers.d/groups

Incolliamo la riga seguente per consentire a tutti i membri del gruppo1 per eseguire tutti i comandi sudo su tutti gli host senza inserire una password.

%group1 ALL=(ALL) NOPASSWD: ALL

Gestire i privilegi sudo in questo modo ci consente di gestirli facilmente senza preoccuparci di rompere qualcosa.

3. Correzione del file Sudoers

Nota come utilizziamo visudo modificare i file sudoers? Questa è la convenzione perché vogliamo evitare di rompere il sistema. Quando eseguiamo visudo controlla il file per assicurarsi che non abbiamo sbagliato nulla, ad esempio in termini di sintassi.

Se invece abbiamo usato un editor di testo semplice e abbiamo commesso degli errori, questo ci impedirà di modificare nuovamente il file poiché abbiamo bisogno dei privilegi sudo per modificare il file.

Utilizzo di visudo impedisce anche più modifiche al file sudoers alla volta, ovvero, se un altro utente sta modificando il file, gli altri utenti non potranno modificare il file.

Supponendo che il file sudoers sia incasinato e che siamo bloccati. Usiamo il pkexec comando che è un'alternativa al comando sudo.

$ pkexec visudo

Dopo aver avuto accesso al file sudoers, possiamo correggere l'errore. Ad esempio, per correggere /etc/sudoers.d/alice file, scriviamo:

$ pkexec visudo /etc/sudoers.d/alice

4. Usando il comando "sudo -s"

Per eseguire questi comandi senza inserire ogni volta una password, eseguiamo il comando:

$ sudo -s

Quando inseriamo la password una volta, per tutti i successivi comandi sudo in questa sessione del terminale, non dobbiamo inserirla di nuovo.

Ora, se proviamo a eseguire un comando sudo, non ci verrà chiesto di inserire una password:

$ sudo systemctl start mariadb.service

Usciamo da questa modalità emettendo l'exit comando:

$ exit

5. Usando il comando "sudo su"

Un altro modo per eseguire i comandi sudo senza che venga richiesta una password è eseguire il comando sudo su per diventare l'utente root. Dopo che questo comando viene eseguito e inseriamo la password una volta, quindi per tutti i successivi comandi sudo, non è necessario inserire la password per l'esecuzione.

$ sudo su

Ora abbiamo i privilegi di root, quindi tutti i successivi comandi sudo che eseguiamo non richiederanno l'immissione di una password.

In genere, per eseguire i comandi sudo senza una password, utilizziamo la seguente sintassi durante la modifica di sudoers.d file:

user_list host_list=effective_user_list tag_list command_list

Dove,

  • elenco_utenti possono essere utenti, gruppi, alias specifici.
  • elenco_host è il nome host degli host in cui un utente può eseguire comandi sudo senza password.
  • elenco_utenti_effettivi specifica l'elenco di utenti in esecuzione come utente corrente o come alias dell'utente corrente.
  • elenco_tag specifica tag come NOPASSWD .
  • elenco_comandi specifica un elenco di comandi sudo che l'utente o il gruppo può eseguire senza richiedere una password.

L'esecuzione dei comandi sudo senza una richiesta di immissione della password è considerata un rischio per la sicurezza. Una richiesta di password non solo ci dà la possibilità di confermare un comando prima che venga eseguito, ma impedisce anche agli utenti non autorizzati di eseguire azioni oltre i loro privilegi.

Ad esempio, il ‘sudo rm -rf /’ comando cancella l'intero file system. Questo comando è irreversibile e quindi è consigliabile avere una richiesta di password in quanto ci dà la possibilità di valutare questa azione.


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

  2. Ssh:come eseguire automaticamente Ssh-add, senza una richiesta di password?

  3. Cambia la password di root con Sudo, senza Su?

  4. Come eseguire SCP senza interruzione del prompt della password in Linux

  5. Come passare la password a su/sudo/ssh senza sovrascrivere il TTY?

Come eseguire i comandi Linux in background

Come reimpostare la password sudo

Come eseguire comandi particolari senza password Sudo in Linux

Come modificare il timeout della password di Sudo in Linux

Come eseguire un alias con Sudo in Linux

Come eseguire sudo comandi senza password