Perché l'opzione sudoers NOPASSWD non funziona?

63

Ho una riga NOPASSWD in / etc / sudoers (modificata con visudo )

gatoatigrado    ALL=(ALL) NOPASSWD: /bin/set-slow-cpufreq

Tuttavia, l'output è,

gatoatigrado@coral:~> sudo -n /bin/set-slow-cpufreq
sudo: sorry, a password is required to run sudo

Questo tipo di comando funziona su una macchina OpenSuSE, ma non su Ubuntu 11.10. Cosa sto sbagliando?

Nota : non riesco a trovare alcun messaggio di registro di sistema pertinente, ad es. tramite tail -f /var/log/syslog .

modifica

Ecco / etc / sudoers.

Defaults    env_reset

# things I've tried copying from an opensuse machine
Defaults always_set_home
Defaults env_keep = "LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS XDG_SESSION_COOKIE"

root    ALL=(ALL:ALL) ALL
gatoatigrado ALL=NOPASSWD: /bin/set-slow-cpufreq
%admin ALL=(ALL) ALL
%sudo   ALL=(ALL:ALL) ALL
    
posta gatoatigrado 31.01.2012 - 02:05
fonte

4 risposte

99

Devi mettere quella riga dopo la riga con la regola per il gruppo sudo , perché, come afferma la pagina man di sudoers :

   When multiple entries match for a user, they are applied in order.
   Where there are multiple matches, the last match is used (which is not
   necessarily the most specific match).
    
risposta data enzotib 31.01.2012 - 07:36
fonte
4

Ci siamo solo imbattuti in questo.

La mia situazione è che sto configurando un sistema remoto che funzionerà senza testa. Ho abilitato la cifratura completa del disco (altrimenti un utente malintenzionato con accesso fisico può fare tutto ciò che vuole) Voglio autorizzare solo con la chiave pub (disattiverò la password in modo che lo schema "avere qualcosa, sapere qualcosa" sia una password keypair protetto - il login di root è ovviamente disabilitato completamente)

Il programma di installazione di Ubuntu richiede un utente amministratore non root che viene aggiunto al gruppo sudo . Mi sono quindi aggiunto manualmente al file sudoers utilizzando sudo visudo :

my_username ALL=(ALL:ALL) NOPASSWD:ALL

NOTA se usi nopasswd sul tuo laptop, devi sempre bloccare il computer mentre ti allontani, altrimenti un utente malintenzionato può compromettere molto mentre ti stai alzando per mettere la crema nel tuo caffè

Stavo ancora eseguendo l'autenticazione tramite password.

La risposta di enzotib è la chiave di ciò che sta accadendo. Il gruppo sudo si presenta in sudoers dopo la voce per il mio nome utente.

Invece di spostare la mia voce sotto la linea sudo ho semplicemente rimosso la riga che avevo precedentemente aggiunto e poi aggiunto NOPASSWD alla voce per %sudo

Sembra funzionare. Ancora una volta usa nopasswd solo se ne hai veramente bisogno (nel mio caso era esattamente quello di cui avevo bisogno, per la maggior parte degli utenti che richiedono una password per l'attività sudo è la cosa migliore)

AVVERTENZA aggiuntiva: Modifica sempre sudoers con visudo. (sudo visudo) Inoltre, avere un'altra finestra aperta passata all'utente root ti consente di recuperare eventuali errori che potresti commettere mentre modifichi il file sudoers.

    
risposta data jorfus 04.02.2016 - 20:05
fonte
3

Idealmente se stai personalizzando quali comandi possono essere eseguiti tramite sudo dovresti apportare queste modifiche in un file separato sotto /etc/sudoers.d/ invece di modificare direttamente il file sudoers . Dovresti sempre usare visudo per modificare i file.

Esempio: % Co_de%

Inserisci il permesso di concessione per la tua linea: % Co_de%

Quindi salva ed esci e sudo visudo -f /etc/sudoers.d/slowcpu ti avviserà se hai errori di sintassi.

Puoi eseguire gatoatigrado ALL=NOPASSWD: /bin/set-slow-cpufreq per vedere le autorizzazioni che sono state concesse all'utente, se uno qualsiasi dei comandi visudo specifici dell'utente appare PRIMA di qualsiasi comando sudo -l nell'output ti verrà richiesta la password.

Se ti ritrovi a creare molti di questi file sudoers.d allora forse vorresti crearli nominati per utente in modo che siano più facili da visualizzare. Tieni presente che l'ordine dei NOME FILE e delle REGOLE all'interno del file è molto importante, l'ULTIMO caricato viene vinto, sia che sia PIÙ o MENO permissivo rispetto alle voci precedenti.

Puoi controllare l'ordinamento del nome del file usando un prefisso di 00-99 o aa / bb / cc, ma tieni anche presente che se hai QUALSIASI file che non ha un prefisso numerico, caricheranno dopo il numero file, ignorando le impostazioni. Questo perché, in base alle impostazioni della lingua, "ordinamento lessicale", la shell utilizza prima i numeri di ordinamento e quindi può alternare lettere maiuscole e minuscole durante l'ordinamento in ordine "crescente".

Prova a eseguire NOPASSWD e %groupyouarein ALL=(ALL) ALL per vedere se la tua lingua corrente stampa printf '%s\n' {{0..99},{A-Z},{a-z}} | sort etc o printf '%s\n' {{0..99},{A-Z},{a-z}} | LANG=C sort poi AaBbCc per determinare quale sarebbe il miglior prefisso lettera "last" da utilizzare.

    
risposta data dragon788 22.05.2017 - 22:55
fonte
0

Sul sistema remoto, rilascia la crittografia, ma lascia che tutto sia di proprietà di una radice come nel gruppo di "Amministratori" - che non è 0!

Puoi modificare #sudo -g Administrators con quelli che richiedono l'accesso completo, non nel file sudo , ma .login profile. Ora qualsiasi script standard può avere accesso al telecomando come "root" ed è possibile proteggere i file che devono essere protetti.
Un altro "gruppo" utile è "Sandbox" con una directory di accesso nella cache del browser e può leggerlo liberamente e nient'altro. Usa il carattere maiuscolo in maiuscolo.

    
risposta data 28.08.2018 - 13:32
fonte

Leggi altre domande sui tag