comando sudo che cerca di cercare il nome host


15

Di recente, ho modificato il file sudoers e il nome host tramite / etc / hostname. Dopo aver modificato questi file, il mio comando sudo impiega molto tempo. Inoltre, dice che sudo non è in grado di risolvere l'host kaagini (nome host della mia macchina).

Perché sudo deve conoscere il nome host per fornire l'autorizzazione a qualcosa ??

Il mio file sudoers ha il comando "Predefiniti env_reset". Ho visto alcune domande simili ma il contesto non è un accesso remoto qui. L'errore viene visualizzato su un localhost.

Il googling iniziale per il problema dice che il file / etc / hosts deve avere il nome host effettivo per 127.0.0.1. Questo risolto il mio problema. Ma la mia vera domanda è: perché lo richiediamo per sudo ?? Il sudo dovrebbe funzionare indipendentemente dal luogo di accesso.



@OliverSalzburg Ho riformulato correttamente la domanda. Fammi sapere se c'è qualcosa che non va
prathmesh.kallurkar,

Risposte:


16

Il /etc/sudoersfile è progettato per essere distribuito tra più server. A tale scopo, ogni autorizzazione nel file ha una porzione host.

Questo è di solito impostato su ALL=ciò significa che l'autorizzazione è valida per qualsiasi server, tuttavia può essere impostata su host specifici:

%sudo    kaagini=(ALL) ALL

Affinché sudo sappia se applicare questa regola, deve cercare l'host su cui è in esecuzione. Usa una chiamata che si basa /etc/hostssull'essere corretto, motivo per cui fallisce se non è giusto.

Si potrebbe obiettare che sudonon è necessario preoccuparsi di fare una ricerca del nome se la porzione host è impostata su ALL=per tutte le autorizzazioni, ma non funziona in questo modo - sembra capire dove è in esecuzione prima di elaborare le regole .

Questo è davvero per facilità di manutenzione poiché sudo legge solo / etc / sudoers per vedere cosa può fare l'utente sulla macchina corrente. Ma come amministratore con 100 server, questo potrebbe richiedere 100 diversi file / etc / sudoers da mantenere. Poiché sudoers ha una parte host nelle autorizzazioni, è possibile mantenere un singolo file sudoers e distribuirlo a tutti i computer, pur mantenendo la granularità rispetto a ciò che gli utenti possono fare su ciascun computer.


Grazie per la risposta. Puoi venire di nuovo al file distribuito sudoers ?? Vedi, ho un sistema operativo in esecuzione su machineA. Il file delle autorizzazioni (/ etc / sudoers) per questo sistema operativo deve essere archiviato su altri computer. O la tua risposta significa dire che il comando sudo può dire qualcosa come l'utente John può sudo da machineA ma non da machineB ??
prathmesh.kallurkar,

È davvero per facilità di manutenzione. sudo legge solo / etc / sudoers per vedere cosa può fare l'utente sulla macchina corrente. Ma come amministratore con 100 server, questo potrebbe richiedere 100 diversi file / etc / sudoers da mantenere. Poiché sudoers ha una porzione host nelle autorizzazioni, è possibile mantenere un singolo file sudoers e distribuirlo a tutti i computer, pur mantenendo la granularità rispetto a ciò che gli utenti possono fare su ciascun computer.
Paolo,

un'altra domanda ... l'amministratore del server deve scp il nuovo file sudoers ogni volta che c'è una modifica nel file principale sudoers o sudo fornisce un modo per mantenere il file sudoers sulla rete ??
prathmesh.kallurkar,

@ prathmesh.kallurkar No, non esiste un metodo di distribuzione integrato, ma si tratta di Linux, quindi è normale. Utilizzeresti rsync o scp o un altro strumento per completare questa parte.
Paolo,

1
Ritengo che sia un bug (se ci sono solo TUTTE le regole, allora sudo non ha bisogno di conoscere il suo nome host) e quindi ho archiviato bugzilla.sudo.ws/show_bug.cgi?id=916
Matthias Urlichs il

1

Grazie alla segnalazione di bug collegata presentata da Matthias Urlichs in un altro commento, il seguente comando ha risolto il problema per me:

Defaults !fqdn

Inserire questa riga nel /etc/sudoersfile


-3

Puppet è un software di gestione della configurazione in grado di configurare automaticamente una flotta di server leggendo i file Puppet Manifests. Tale file potrebbe includere una definizione del tuo file / etc / sudoers, che può quindi essere inviato a tutti i tuoi "agenti" fantoccio dal tuo "padrone" fantoccio. Quindi tutti gli host avranno la stessa copia del tuo file / etc / sudoers, che può (e dovrebbe) includere le definizioni HOST, quindi puoi dare ad alcuni utenti alcuni comandi su alcuni host (ma non su altri).


3
Puoi espandere la tua risposta per spiegare cos'è un pupazzo, dove lo trovi e come lo usi per risolvere il problema? Dalla coda di revisione
fixer1234

2
Si prega di leggere Come posso raccomandare il software per alcuni suggerimenti su come dovresti raccomandare il software. Dovresti fornire almeno un link, alcune informazioni aggiuntive sul software stesso e come può essere utilizzato per risolvere il problema nella domanda.
David Post
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.