sudoers - richiesta spiegazione semplice


24

Ogni volta che voglio essere in grado di eseguire qualcosa che mi richiede di essere un sudoertroppe volte, ho bisogno di Google per la formattazione di /etc/sudoersper ricordarmi di nuovo che cosa è esattamente il modo corretto di scrivere.

Ora vedo diversi stili di scrittura nel mio sudoersfile, che è la conseguenza di diversi risultati di Google nel corso dei mesi. Ho anche notato che il secondo esempio (sotto) sembra funzionare in XFCE, ma non in Cinnamon (Gnome 3). Questo potrebbe essere totalmente indipendente, ma tuttavia vorrei sapere una volta per tutte, qual è la grammatica corretta della riga sudoer e qual è la differenza tra gli esempi dati?

  1. redsandro ALL=NOPASSWD:/path/to/command
  2. redsandro ALL=(ALL) NOPASSWD:/path/to/command
  3. redsandro ALL=(ALL:ALL) NOPASSWD:/path/to/command

Inoltre, a cosa servono ALL? Un utente, un comando, ma devo usare la ALLparola chiave fino a tre volte? Sto sbagliando?

Naturalmente, omettendo NOPASSWD:marche si immette la password prima si è permesso di eseguire il comando, ma un punto di confusione è l'utilizzo di =e :, per il comando finale che è oggetto della linea può essere preposto da entrambe =, :, , o ), grammatica confusa per semantica simile.


3
Mi sento anche molto frustrato dalla sudoerssintassi. Leggere la pagina man è stato ancora più frustrante: descrive il cosiddetto linguaggio EBNF conciso ed esatto, gli esempi sono esaustivamente lunghi. Quindi non sono sorpreso di trovare così tanti thread qui riguardo a questo file.
ric-

1
Grazie per questo. Volevo porre questa domanda da quando mi sono imbattuto in un file sudoers alcuni anni fa :-)
vahidg

Risposte:


35

È più di un semplice utente e un comando:


redsandro host=(user:group) tag:commands
  • hostspecifica i nomi host per cui questa linea è valida. A meno che tu non stia condividendo il file asudoers tra host diversi che necessitano di regole diverse usando il valore speciale che ALLsignifica "tutti gli host" è una buona scelta.

  • userspecifica quali utenti è possibile utilizzare con le -uopzioni per eseguire il comando. Se lo ometti non puoi utilizzare l' -uopzione.

  • groupspecifica quali gruppi è possibile utilizzare con le -gopzioni. Se lo ometti non puoi utilizzare l' -gopzione.

Entrambi usere groupcomprendono il valore speciale ALLcome "tutti gli utenti / gruppi"

Se ometti tutto (user:group)ciò che non puoi usare -ue -gma esegui il comando solo come root.

  • tag ti consente di specificare alcune opzioni, come NOPASSWD

Quindi con il tuo primo esempio puoi eseguire il comando come root ma non puoi usarlo -ued -geseguirlo come qualsiasi altro utente o gruppo.

Con l'esempio 2. è possibile eseguire il comando come root o utilizzare -uper eseguirlo come qualsiasi altro utente.

Con 3. è possibile eseguire il comando come root o utilizzare -uo -gper eseguire il comando come qualsiasi altro utente o gruppo.


Questo e 'esattamente quello che stavo cercando. Ho accettato la tua risposta e ti ringrazio per il tuo efford.
Redsandro,

1
Pensiero finale, posso usare 127.0.0.1o per localhostquanto hostriguarda la banale sicurezza aggiunta?
Redsandro,

5
La manpage dice 'Nota sudo controlla solo le interfacce di rete attuali; ciò significa che l'indirizzo IP 127.0.0.1 (localhost) non corrisponderà mai. Inoltre, il nome host "localhost" corrisponderà solo se quello è il nome host effettivo, che di solito vale solo per i sistemi non collegati in rete. "
Florian Diesch,

1
Grazie. Nessun nome host per me, soprattutto perché voglio poter copiare il file sudoers su più macchine. ALLè.
Redsandro,

9

Smontiamolo:
redsandro ALL=(ALL:ALL) NOPASSWD:/path/to/command

redsandro è il nome utente a cui stiamo dando il permesso. Metti una% in primo piano per farlo applicare a un gruppo.

ALL è un nome per questa regola. I sudatori possono fare molto di più che concedere autorizzazioni globali. Ecco dove diventa complicato però.

= non necessita di spiegazioni

ALL: ALL legge come (who_to_run_it_as: what_group_to_run_it_as). In questo modo è possibile consentire l'esecuzione di un comando, ma solo nel contesto di un utente o gruppo specifico.

NOPASSWD: gli dice di disattivare la richiesta della password.

Il comando / path / to / consente di specificare comandi specifici path_to_commmand, altro_comando

La cosa da ricordare è che mentre sudo è usato principalmente dagli utenti domestici per passare ai privilegi di root, può essere ed è usato per controllare l'accesso a comandi specifici in un modo molto più granulare.


1
Grazie per l'aggiunta %e le , another_commandnote. Ora capisco la %wheellinea nella distribuzione basata su Fedora.
Redsandro,
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.