Blockieren Sie einen Befehl vom Sudo-Benutzer

10

Ich benötige keinen Administrator, um mein Root-Passwort zu ändern. Ich möchte nicht, dass ein Sudo-Benutzer diesen Befehl ausführt:

sudo passwd $root

Ich habe es in der sudoers-Datei mit dem folgenden Befehl versucht:

%sudo ALL=(ALL) ALL, !/usr/bin/passwd $root

Wie kann ich es blockieren?

Magesh Arumugam
quelle
Meinen Sie damit, dass Sie mehr als einen Sudo-fähigen Benutzer in Ihrem System haben? Oder etwas anderes? Bitte bearbeiten Sie die Frage, um neue Informationen bereitzustellen.
Edwin

Antworten:

15

Laut Sudoers Handbuch :

   It is generally not effective to "subtract" commands from ALL using the
   ’!’ operator.  A user can trivially circumvent this by copying the
   desired command to a different name and then executing that.  For
   example:

       bill        ALL = ALL, !SU, !SHELLS

   Doesn’t really prevent bill from running the commands listed in SU or
   SHELLS since he can simply copy those commands to a different name, or
   use a shell escape from an editor or other program.  Therefore, these
   kind of restrictions should be considered advisory at best (and
   reinforced by policy).

Aus diesem Grund funktioniert Ihre Sudoers-Richtlinie nicht.

Wenn Sie verhindern möchten, dass der Benutzer die Root-Berechtigung erhält und sein Kennwort ändert, gehen Sie wie folgt vor:

  • Angenommen, Ihre Sudoer enthalten diese Richtlinie:

     root    ALL=(ALL:ALL) ALL
     %sudo   ALL=(ALL:ALL) ALL
    
  • Angenommen, Ihr Benutzername ist foo, sind seine Gruppen foound sudo. groupsBefehlsausgabe ist:

    foo sudo
    
  • Entfernen Sie Benutzer fooaus sudoGruppe: gpasswd -d foo sudoNach diesem Benutzer fooeinen Befehl mit sudo nicht ausgeführt werden kann.

  • Sudoers-Datei bearbeiten. Verwenden Sie diesen Befehl:

    sudo visudo -f /etc/sudoers.d/foo
    
  • Definieren Sie die Benutzerberechtigung foo, zum Beispiel:

    foo ALL=/usr/bin, !/usr/bin/passwd, !/usr/bin/su
    

    Dies bedeutet, dass der Benutzer fooalle Befehle im Verzeichnis /usr/bin/außer passwdund suBefehl ausführen kann . Hinweis: Wenn der Benutzer foosein Kennwort ändern möchte, kann er den passwdBefehl ohne ausführen sudo.

  • Ein weiteres Beispiel für Benutzerberechtigungen foo:

    foo ALL =/usr/bin, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
    

    Dies bedeutet, dass der Benutzer foobeliebige Befehle im Verzeichnis ausführen kann /usr/bin/und das Kennwort aller Benutzer außer root auf ALLEN Computern ändern darf.

Sie können Befehlsgruppen definieren Cmnd_Aliases, indem Sie "Berechtigungsstufen" definieren und erstellen. Nützliche Beispiele finden Sie im Abschnitt BEISPIEL des Sudoers-Handbuchs . Hier finden Sie einen nützlichen Link zur Verwendung von Sudoers.

Lety
quelle
Ich musste foo ALL=/usr/bin/*, !/usr/bin/passwdeine Idee haben, warum das so ist?
Clurect
-1

Befehlsalias hinzufügen über visudo:

Cmnd_Alias PASSWD=/usr/bin/passwd
Cmnd_Alias SU=/bin/su

Einschränkungen hinzufügen über visudo:

%nopasswdgroup ALL = ALL, !PASSWD, !SU

Benutzer zur Gruppe nopasswdgroup hinzufügen:

usermod -aG nopasswdgroup nopasswduser
Shcherbak
quelle