/ etc / sudoers legt fest, dass der Benutzer die allgemeine Verwendung von sudo verwenden soll, ohne dass für nur einen Befehl eine Kennwortabfrage erfolgt

1

Ich habe einen Eintrag in / etc / sudo für einen Benutzer, der sudo für alle Befehle ausführen kann.

fred ALL = (ALL: ALL) ALL

Gemäß der Dokumentation ist das endgültige ALL dafür verantwortlich, den Zugriff auf alle Befehle zu ermöglichen.

Ich möchte, dass Fred unter Ubuntu 14.04 einen Neustart von nginx ausführen kann, ohne ein sudo-Passwort anzugeben, und trotzdem die Möglichkeit behält, sudo für andere Befehle aufzurufen. Die sudoers Dokumentation ist nicht klar, aber ich glaube

fred ALL = (ALL) NOPASSWD: / usr / sbin / service

Lässt Fred nur einen Befehl ausführen. Ich möchte Fred die Möglichkeit geben, alle Befehle als root über sudo auszuführen, wobei alle außer / usr / sbin / service ein Passwort erfordern.

Ein Blick auf das BNF der Dokumentation

User_Spec ::= User_List Host_List '=' Cmnd_Spec_List  (':' Host_List '=' Cmnd_Spec_List)*   

Cmnd_Spec_List ::= Cmnd_Spec | Cmnd_Spec ',' Cmnd_Spec_List

Cmnd_Spec ::= Runas_Spec? SELinux_Spec? Solaris_Priv_Spec? Tag_Spec* Cmnd 

Runas_Spec ::= '(' Runas_List? (':' Runas_List)? ')' 

SELinux_Spec ::= ('ROLE=role' | 'TYPE=type') 

Solaris_Priv_Spec ::= ('PRIVS=privset' | 'LIMITPRIVS=privset')   

Tag_Spec ::= ('EXEC:' |
              'NOEXEC:' | 'FOLLOW:' | 'NOFOLLOW' |
              'LOG_INPUT:' | 'NOLOG_INPUT:' | 'LOG_OUTPUT:' |
              'NOLOG_OUTPUT:' | 'MAIL:' | 'NOMAIL:' | 'PASSWD:' |
              'NOPASSWD:' | 'SETENV:' | 'NOSETENV:')

Es scheint, dass ich möglicherweise mehrere Cmnd_Spec_Lists verwenden kann

fred ALL = (ALL: ALL) ALL, NOPASSWD: / usr / sbin / service

Die Dokumentation besagt jedoch nicht, dass das letztere NOPASSWD: Cmnd_Spec den ALL-Befehlsstammzugriff nur für diesen Befehl überschreibt.

Das ist die Art von Dingen, die ich gerne beim ersten Mal richtig mache. Kann jemand bitte bestätigen, dass die letzte Zeile für den jeweiligen Zweck funktioniert (oder, alternativ, dass sie nicht funktioniert)?

Wenn es funktioniert, damit fred den Dienst ohne ein Sudo-Passwort ausführen kann, kann ich die Argumente auf service beschränken, sodass fred nur ohne ein Passwort auf service nginx funktioniert, oder sogar noch besser, sodass fred nur diesen Server neu starten kann ohne Passwort?

Vielen Dank.

neustarten
quelle

Antworten:

1

Befehle am unteren Rand der Konfiguration überschreiben die obigen. In der Dokumentation unter https://www.sudo.ws/man/1.8.15/sudoers.man.html#SUDOERS_FILE_FORMAT wird erwähnt, dass es sich nicht um die geringste Einzelheit handelt, es sei denn, Sie ordnen sie so.

Ich mache das mit mehreren Zeilen. Mehrere Zeilen und Regeln sind in Zukunft leichter zu lesen und zu verstehen, wenn die Dinge komplizierter werden. Mithilfe mehrerer Zeilen können Sie die Reihenfolge festlegen.

# I don't know what order this is interpreted in:
fred ALL=(ALL : ALL) ALL, NOPASSWD: /usr/sbin/service

# I do know what order this is interpreted in:
fred ALL=(ALL) ALL
fred ALL=(ALL) NOPASSWD: /usr/sbin/service

Die folgenden Zeilen stammen aus meiner sudoers-Datei. Zulassen, dass Mitglieder der Gruppe wheelalle Befehle ausführen, und dann speziell Befehle im REBOOTAlias ​​ohne Kennwort ausführen .

Cmnd_Alias      REBOOT = /sbin/halt, /sbin/reboot, \
                         /sbin/poweroff, /sbin/shutdown
%wheel ALL=(ALL) ALL
%wheel ALL=(ALL) NOPASSWD: REBOOT

Leider habe ich nicht viel öffentliche Dokumentation, auf die ich Sie hinweisen kann. Die Manpage von sudoers ist lächerlich. Ich habe vor einiger Zeit ein großartiges (leicht zu lesendes) Buch darüber gelesen ( Sudo Mastery von Michael W. Lucas) und dieses Beispiel funktioniert für mich auf mehreren Linux- und BSD-Maschinen.

CoreyJJohnson
quelle
0

Hi Das könnte funktionieren Versuchen Sie, sich als root anzumelden und folgen Sie den untenstehenden Befehlen. Fügen Sie die folgenden Zeilen in die sudoers-Datei ein

fred ALL = (ALL) NOPASSWD: ALL

Sudheer Gandham ind
quelle
Dies ist nicht die Antwort auf meine Frage, was Sie vorschlagen. Sudheer gibt Fred die Möglichkeit, alle Befehle über sudo auszuführen, ohne nach einem Passwort gefragt zu werden. Aber danke.
Neustart am