Come evitare di essere richiesto per una password da sudo? [duplicare]

65

So che posso diventare root (super user) tramite il comando su ma devo autorizzarlo dopo aver inserito i comandi. C'è un modo per diventare root e autorizzare (con password) in una riga

    
posta Vader 22.05.2014 - 01:39

6 risposte

69

Bene, l'unica cosa che posso pensare è

echo 'password' | sudo -S command

Il flag -S rende sudo legge la password dall'input standard. Come spiegato in man sudo :

  

-S, --stdin

     

Scrivi il prompt dell'errore standard e leggi la password dall'input standard    invece di utilizzare il dispositivo terminale. La password deve essere seguita da un carattere di nuova riga.

Quindi, per eseguire ls con sudo privilegi, dovresti fare

echo 'password' | sudo -S ls

Nota che questo produrrà un errore se il tuo token di accesso sudo è attivo, se non hai bisogno di inserire la tua password perché l'hai già fatto di recente. Per evitare ciò, è possibile utilizzare -k per reimpostare il token di accesso:

echo 'password' | sudo -kS ls

Non conosco alcun modo per farti entrare in una vera shell di root (come su o sudo -i ) do. Questo potrebbe essere sufficiente per quello che ti serve però.

    
risposta data terdon 22.05.2014 - 01:49
70

Nel terminale esegui il comando visudo per modificare sudoers file:

sudo visudo

e aggiungi la seguente riga all'elenco sudoers

username ALL = NOPASSWD : ALL

Nota: sostituisci username con il tuo Nome utente reale nella riga sopra.

    
risposta data Din 22.05.2014 - 07:41
21

La soluzione echo 'password' | sudo -kS ls funziona, ma presenta alcuni inconvenienti di sicurezza, molti dei quali sono già stati citati nei commenti alla risposta di terdon. Pertanto, vorrei suggerire un approccio diverso:

Se è solo un comando che è necessario eseguire frequentemente, ad es. apt-get upgrade , puoi configurare il tuo sistema in modo che sudo someCommand non richieda una password.

Per farlo, esegui visudo e inserisci qualcosa di simile al seguente:

myusername ALL=(ALL) NOPASSWD: /usr/bin/apt-get upgrade

Si noti che se si immette un comando senza un argomento (ad esempio senza upgrade in questo esempio), l'utente potrà eseguirlo con l'argomento qualsiasi , quindi usa con cura.

    
risposta data Heinzi 22.05.2014 - 07:30
10

Puoi farlo anche tu:

sudo -S <<< "password" command
    
risposta data Jahid 09.06.2015 - 16:14
6

Invece di rimuovere completamente la password, è possibile aumentare il timeout in modo che sia necessario digitarlo solo poche volte al giorno; in un terminale, esegui:

sudo visudo

Alla fine del file, aggiungi la seguente riga per impostare un timeout di 30 minuti (sostituisci jsmith con il tuo nome utente).

Defaults:jsmith timestamp_timeout=30

Puoi usare qualsiasi numero tu voglia; -1 significa nessun timeout (richiesto solo la prima volta) e 0 significa timeout istantaneo (richiesto ogni volta che sudo ). Il timeout predefinito è 5 minuti.

    
risposta data ShitalShah 15.04.2016 - 10:13
1

Vader, dal tuo commento sulla tua domanda originale, ti piacerebbe passare a una shell interattiva in esecuzione con permessi per superutente, giusto?

Sudo ha un argomento specifico per richiedere una shell:

-s [command]
The -s (shell) option runs the shell specified by the SHELL environment variable if
it is set or the shell as specified in the password database. If a command is
specified, it is passed to the shell for execution via the shell's -c option. If no 
command is specified, an interactive shell is executed.

Questo evita i già citati inconvenienti di sicurezza e consente di "passare alla radice" utilizzando il seguente comando:

sudo -s

SE Devo davvero eseguire una shell di root (nella maggior parte dei casi non lo faccio), quindi trovo molto utile avere la variabile di ambiente HOME della shell impostata di conseguenza (per riflettere in esecuzione come "root"), questo può essere fatto usando il flag "-H". Quindi il comando completo sarebbe

sudo -s -H

Puoi trovare molti più dettagli nella pagina man di sudo .

    
risposta data he1ix 22.05.2014 - 11:09

Leggi altre domande sui tag