Sie möchten ein versehentliches Herunterfahren, einen Neustart usw. durch Aliasingbefehle wie beispielsweise das Herunterfahren verhindern

413
Utkarsh.K

Ich versuche Alias-Befehle wie z. B. shutdown, rebootusw. Ich bin mir bewusst, dass dies keine narrensichere Möglichkeit ist, den Zugriff zu blockieren, dies ist jedoch nur, um eine versehentliche Ausführung zu verhindern.

Ich habe mir superuser.com/questions/244342 und alle darin enthaltenen Links angesehen.

Zu alias so etwas wie sudo /sbin/shutdownich müsste zuerst sudoeinzeln alias und dann /sbin/shutdownzu echo 'Not allowed'.

Dies scheint jedoch nicht zu funktionieren, da es sudooffensichtlich bei root ausgeführt wird. Daher ist das Aliasing dieser in .bashrcdem Benutzer sinnlos. Wie löse ich mein Problem? Ich möchte keine Systemattribute wie .bashrcroot-Benutzer usw. ändern .

1
Ähm ... wie genau tippst du versehentlich `sudo shutdown now`? Bob vor 7 Jahren 0
Wir geben Zugang zu einigen Benutzern, die dies versehentlich tun könnten. Utkarsh.K vor 7 Jahren 0
Keine direkte Antwort auf die Frage, aber möglicherweise eine realistischere Herangehensweise - schauen Sie sich die Installation des `molly-guard'-Pakets an. Sehr nützlich, wenn Sie häufig vergessen, auf welcher Maschine Ihre Shell läuft! Toby Speight vor 7 Jahren 1

3 Antworten auf die Frage

1
janos

Wie Sie richtig beobachtet haben, sind Shell-Aliase nicht für Ihren Zweck geeignet.

Um eine versehentliche Ausführung dieser Befehle zu vermeiden sudo, müssen Sie die Konfiguration von sudo(verwenden visudo) aktualisieren und den Zugriff vollständig verhindern. Sie können eine Gruppe bestimmen, deren Mitglieder diese Befehle ausführen dürfen, mit sudoniemand anderem.

1
djsmiley2k

Ok, so dass der ‚ richtige ‘ Ansatz ist nicht diesem Benutzer sudo geben, aber es scheint, wie dies eine jene Situationen, die Sie nicht mit den Mitgliedern geben diesen Zugriff verhindern können (Lets sagen Sie sie Herunterfahren hindern laufen, könnten sie nur rm -rf /*statt)

Um jedoch zu verhindern, dass bestimmte Befehle über sudo ausgeführt werden, können Sie dies in der sudoers-Datei steuern:

Zunächst definieren wir einen Alias ​​für das Herunterfahren eines Systems in /etc/sudoers.conf

Cmnd_Alias SHUTDOWN = /usr/sbin/shutdown

Und dann entfernen wir die Möglichkeit für jeden in der Radgruppe, diesen Befehl auszuführen:

%wheel ALL = ALL, !SHUTDOWN

Dies bedeutet, dass alle Benutzer alle Befehle auf allen Computern ausführen können, mit Ausnahme derjenigen, die im shutdown cmnd_Alias ​​enthalten sind.

man sudoerswird dies sehr viel näher erläutern und enthält fast diese genaue Erklärung. Beachten Sie auch, dass dies nicht verhindern würde, dass jemand absichtlich versucht, den Befehl zum Herunterfahren auszuführen, nur diejenigen, die ihn versehentlich ausgeführt haben, ohne es zu merken (möglicherweise weil sie auf dem falschen Computer angemeldet sind).

0
Horn OK Please

Selbst wenn Sie den Benutzer erfolgreich daran hindern, alle Befehle auszuführen, die direkt für einen Neustart verantwortlich sind, einen Benutzer mit sudoZugriff (bei dem der Sudo-Zugriff nicht auf eine bestimmte Gruppe von Binärdateien gesetzt wird, für die er keine Berechtigung zum Ändern hat und die nicht können möglicherweise zu laufendem Neustart-Code manipuliert werden);

  1. Laden Sie den Quellcode in ein Programm wie rebootoder halt(z. B. in GNU binutils, IIRC) herunter, kompilieren Sie es mit gccund führen Sie dann die sudo ./rebootlokale Kopie aus.

  2. Schreiben Sie ein Programm in Ruby, Python, C / C ++, Java usw., das die entsprechenden Systemaufrufe aufruft, um einen Neustart oder ein Herunterfahren zu initiieren.

  3. Es gibt wahrscheinlich knifflige Dinge, die sie mit Symlinks oder Hardlinks tun können, um eine Blacklist zu umgehen. Diese Dinge sind aus sicherheitstechnischer Sicht immer schwer zu handhaben, aber ich habe keine konkreten Beispiele aus meinem Kopf.

Wenn Sie zu 100% sicher sind, dass alle Binärdateien, unter denen Sie dem Benutzer die Berechtigung zum Ausführen erteilen, sudonicht in die Ausführung von beliebigem Code (der zu den obigen Punkten 1 oder 2 führt) manipuliert werden können, ist dies möglicherweise in Ordnung. Ein geschickter Benutzer (oder ein Programm, das als dieser Benutzer ausgeführt wird) kann jedoch Sicherheitslücken in diesen Programmen immer noch ausnutzen, um das System hochzufahren und neu zu starten / herunterzufahren.

Wenn Sie ganz sicher sind, dass alle Benutzer mit sudoZugriff wird zusammenarbeiten mit Ihnen und nicht versuchen, Dinge zu tun, sind sie nicht tun dürfen, dann sollte die schwarze Liste in Ordnung sein „Unfälle“ zu vermeiden. Aber dann sollten Sie bereit sein, die Konsequenzen zu akzeptieren, wenn jemand aus irgendeinem Grund von der Politik abweicht.

Wenn Sie Zweifel über die Benutzer haben, sollten Sie jedem Benutzer eine VM oder einen sicheren Container zuweisen.

Könnten sie den Abstellplatz nach Hause kopieren? djsmiley2k vor 6 Jahren 0