Come eseguire un'applicazione usando sudo senza password?


40

... ma è ancora necessario per le applicazioni che richiedono privilegi di amministratore?

Al fine di consentire quanto segue:

$ apache2ctl restart
httpd not running, trying to start
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs

$ sudo !!
sudo apache2ctl restart             #no password asked
$                                   #works!

Per riferimento ho visto questa configurazione su istanze e3 di Amazon

Qualche idea?


Questo è un ottimo tutorial sui forum che spiega come creare un file separato per specificare i programmi che usi comunemente. Ed è una buona idea per motivi di sicurezza.
Todd Partridge "Gen2ly",

Risposte:


51

Devi modificare il file sudoers. Tieni presente che il successo ti dà un sistema meno sicuro e il fallimento può interrompere Sudo. Modificare SEMPRE il file sudoers con sudo visudo, poiché visudo verifica la presenza di errori e non salva il file se ne viene trovato uno.

È una cattiva idea dare a tutti i permessi per essere eseguito come root senza una password, quindi basta passare attraverso l'eseguibile di cui hai bisogno (apache2ctl); aggiungi quanto segue in fondo al file:

YOURNAME ALL = NOPASSWD: /usr/bin/apache2ctl

Puoi sostituire il percorso di un eseguibile con "ALL" se lo desideri, dandoti sudo completo senza password.

Sostituisci YOURNAME con il tuo nome utente e premi Ctrl+ Xper salvare ed uscire. Se si è verificato un errore, offrirà di ripristinare, modificare o salvare comunque.

Assicurati di utilizzare il percorso completo di un eseguibile: ad
es. /usr/bin/apache2ctlinvece di solo apache2ctl. Questo è importante perché senza indicare esplicitamente il percorso sudo consentirà a qualsiasi programma chiamato apachectl sul percorso corrente dell'utente di essere eseguito come root.


3
Nota che %YOURNAMEdarà l'autorizzazione al gruppo chiamato come il tuo utente, che normalmente non è un problema poiché ogni utente normale ha un gruppo con nomi simili sui sistemi Ubuntu. Per dare l'autorizzazione al tuo utente, specifica YOURNAMEsenza%.
Daniel Werner,

C'è un modo per essere più restrittivi? (solo alcune funzioni dell'eseguibile)
3pic

1
Vecchio post, ma mi sarebbe sicuramente completare quella risposta, limitando l'ingresso dei sudoers' a un particolare nome host (se possibile), e sia a determinati argomenti o ad alcun argomento a tutti (seguenti apache2ctl), in questo modo: YOURNAME YOUR-HOSTNAME = NOPASSWD: /usr/bin/apache2ctl <specific arg | "">. --- In tutti i casi man 5 sudoersè il riferimento a cui andare.
Cbhihe,

25

La vera risposta a questa domanda può essere complicata perché sudo è molto potente e può essere configurato per fare cose interessanti. Questo è completamente spiegato nella documentazione .

La risposta breve viene eseguita sudo visudoin un terminale. Se è la prima volta che esegui visudo, ti verrà chiesto quale editor preferisci. nano è generalmente considerato il più semplice da usare, ma scegli l'editor che ti è più comodo / familiare. Dovrai decidere a chi vuoi dare accesso; potrebbe essere ALLper tutti (una molto cattiva idea) , un utente o un gruppo di sistema. I gruppi hanno il prefisso con un segno%. Ad esempio, se si desidera assegnare a tutti i steroid_usersprivilegi di root del gruppo senza la necessità di una password per tutti i comandi, aggiungere:

%steroid_users ALL=(ALL) NOPASSWD: ALL

alla fine del file, esci e salva il file. Se tutto va bene e sei un membro del gruppo steroid_users, sarai in grado di emettere sudo *some-command*senza il fastidio di dover inserire la password.

Tieni presente che chiunque abbia accesso al tuo terminale mentre sei loggato - o se hai una configurazione ssh per l'autenticazione basata su chiave o (anche peggio) ha abilitato gli accessi alla sessione senza password - accesso completo e senza restrizioni a tutti sistema. Se hai più utenti sul tuo sistema o se si tratta di un file server, tutti i file degli utenti potrebbero essere a rischio poiché root può fare qualsiasi cosa!

Inoltre, se si commette un errore, visudo genererà un messaggio di errore e non salverà le modifiche al file. Ciò contribuirà a prevenire la completa rottura del sudo. Dovresti davvero leggere la documentazione . Sudo è progettato per offrire agli utenti l'accesso sufficiente per svolgere il proprio lavoro senza la necessità di esporre l'intero sistema. Può essere vantaggioso fornire accesso gratuito senza password per determinati comandi.

Spero che aiuti.


Funzionava , l'ho preso e poi ho usato "sudo service sudo restart" da askubuntu.com/questions/192050/… e sono stato in grado di utilizzare tutto questo nella mia sessione Ubuntu attiva. Eccezionale!
Patrick,

5

Dovrai modificare il file '/ etc / sudoers' (c'è un comando 'visudo' per quello.) Per aggiungere NOPASSWD prima dell'elenco dei comandi consentiti per il tuo utente o gruppo. Se il tuo utente è nel gruppo "admin", devi seguire:

%admin ALL=(ALL) NOPASSWD: ALL

Controlla https://help.ubuntu.com/community/Sudoers , a proposito.


3

POTREBBE aggiungere il flag nopasswd all'elenco utenti ma ciò non elimina tutte le password poste domande. Verrà chiesto solo il primo.

  1. Modifica sudoers: sudo visudo( DEVI usare sudo. Questo è un file admin.)
  2. Aggiungi il tuo utente con il flag nopasswd dopo la Admin Line (alla fine). Ad esempio:
    cyrex ALL = NOPASSWD: ALLocyrex ALL = (ALL) NOPASSWD: ALL

2
sudo visudo
%<GROUP> ALL = NOPASSWD: apache2ctl

o

sudo visudo
%<GROUP> ALL = NOPASSWD: /etc/init.d/apache2

Immagino che lo farebbe.

Ma fai attenzione a rimuovere le password per sudo.


2
Dovresti specificare il percorso assoluto nel primo esempio, per motivi di sicurezza - un utente senza scrupoli potrebbe cambiare $ PATH e rubare l'accesso alla radice con un nome di comando non qualificato.
bgvaughan,

0

Ora per la semplice risposta! Nessun modo possibile per rovinare qualcosa o confondere l'installazione.

Inserisci la password un paio di volte e non dovrai più inserirla! Ciò ti consentirà di aggiungere un account di amministratore locale al gruppo "root" che verrà quindi non commentato da un modello che consentirà a tutti i privilegi di superutente "root" dell'intero gruppo. Puoi leggere la mia preoccupazione / soluzione sulla sicurezza per questa procedura nella parte successiva di questo post.

% username & è la variabile globale per il tuo nome utente (sostituiscilo con il nome utente desiderato)

Passaggio 1: apri una finestra del terminale e digita " sudo usermod -a -G root %username%"

Passaggio 2: quindi copia / incolla questo ...

sudo sed -i 's/# auth       sufficient pam_wheel.so trust/auth       sufficient pam_wheel.so trust/g' /etc/pam.d/su`

Passaggio 2 OPPURE digitare

sudo nano /etc/pam.d/su`

Vai alla riga 19 e rimuovi prima il "#" # auth sufficient pam_wheel.so trust(per alcuni potrebbe essere un numero di riga diverso)

* Il primo comando aggiunge il tuo% username% al gruppo "root"

Il secondo / terzo comando consente a tutti i membri del gruppo "root" di essere superutente senza password, anziché consentire all'utente "root" i privilegi di autenticazione.


Nota di chiusura:

Non scherzare con /etc/sudoers... Ci sono molti controlli / equilibri che l'autenticazione "su" deve superare. L'autenticazione del superutente utilizza la stessa procedura pam.d di tutte le altre autenticazioni di accesso. "/etc/security/access.conf" ha il layout per il controllo degli accessi tramite comunicazione tcp / ip (192.168.0.1) e tramite servizi telnet (tty1 & tty2 & tty3 ... ecc.) Ciò consente un filtraggio più preciso per applicazione tramite protocollo di trasporto. Se la sicurezza è la tua preoccupazione, allora la tua preoccupazione dovrebbe essere diretta verso minacce remote / di codice contro qualcuno che sta effettivamente toccando il tuo computer quando lasci la stanza !!!

Food for paranoia (non digitare questo in una recensione):

sudo sed -i 's/#-:ALL EXCEPT (wheel) shutdown sync:LOCAL/-:ALL EXCEPT (wheel) shutdown sync:LOCAL/g' /etc/security/access.conf

^ Questo blocca l'accesso alla console per chiunque non sia membro del sistema o del root. A volte i programmi installano nomi utente / gruppi sfruttati!


2
Non è un esperto di sicurezza ma sembra un po 'contro intuitivo. Stai disabilitando le password per un intero gruppo per consentire a un singolo utente di eseguire un'app specifica senza una password per evitare la "complessità" del perfezionamento di sudo per una particolare applicazione, giusto? E tutto questo su un server pubblico? La sceneggiatura ha disabilitato i tuoi istinti di sopravvivenza di base? La sicurezza è COMPLESSO DI DESIGN. Ricorda, è come una cipolla. Ha livelli e ti fa piangere ... La perdita di dati su server compromessi è solo una parte dell'equazione. Un attacco di
trampolino di lancio di

2
È contro intuitivo e contro-buonsenso: aprire l'intero cookie jar per un utente che ha bisogno di un solo cookie è piuttosto irresponsabile. Aggiungeresti utenti all'elenco dei sudoers e eliminerai la necessità di inserire le password invece di modificare il file / i file dei sudoers. "Se una pistola non è sicura per i bambini, non dare loro un canone." -me
John,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.