Warum einige Befehle, die normalerweise kein sudo erfordern, dies in einer SSH-Sitzung erfordern

3

Unter Linux gibt es Befehle ( poweroff, rebootusw.), die in normalen Sitzungen ohne Root-Berechtigungen ausgeführt werden können, jedoch Root-Berechtigungen benötigen, wenn sie in einer SSH-Sitzung ausgeführt werden. Ich möchte zwei Dinge wissen:

  1. Was ist der Zweck davon (warum)?

  2. Wie wird das eigentlich umgesetzt (wie)?

Hanlon
quelle

Antworten:

4

Beachten Sie zunächst, dass dies kein universelles Verhalten ist. Nicht alle Linux-Systeme sind auf diese Weise konfiguriert, und tatsächlich kann ich keine Distributionen nennen, die Dinge standardmäßig auf diese Weise konfigurieren, ohne ernsthafte Nachforschungen anzustellen. In den meisten Fällen erfordert ein bestimmtes Linux-System entweder Root-Rechte (wie es die meisten Systeme auch tun), oder es lässt jeder in einer bestimmten Gruppe zu, oder es lässt nur jeder zu (obwohl dies selten vorkommt, da es sich um ein solches System handelt) ziemlich bedeutende Sicherheitslücke, die einen trivialen DoS-Angriff ermöglicht, wenn ein Netzwerkdienst kompromittiert wird).

Warum?

Das Warum ist ziemlich einfach. Es ist sehr einfach, das System aus Versehen aus der Ferne herunterzufahren, wenn jemand versucht, es zu verwenden. Das System erfordert entweder physische Präsenz an der Konsole (was Sie als normale Sitzung bezeichnen) oder den Nachweis der Autorität über das System (durch Authentifizierung über sudo, um Root-Berechtigungen zu erhalten). Dies erschwert das Auftreten einer solchen Situation erheblich. Die Implikation ist, dass Sie durch die physische Präsenz im System oder die Bereitstellung von Root-Anmeldeinformationen über ausreichende Berechtigungen verfügen, sodass es keine Rolle spielt, ob jemand anderes das System verwendet.

Wie?

Dies ist etwas schwieriger zu beantworten, ohne viel mehr über das betreffende System zu wissen, aber ein paar Methoden kommen in den Sinn:

  1. Sie können mit den Dateisystemfunktionen einige ziemlich nette Tricks anstellen, um dies zu ermöglichen, aber Sie müssen dies jedes Mal wiederholen, wenn die Befehle aktualisiert werden.
  2. Im Falle von systemd, shutdown, reboot, und poweroffwerden alle durch systemd vorgesehen ist , und auf verschiedene gleichwertig Ende systemctlSubbefehle. Aufgrund dessen und der von durchgeführten Sitzungsverfolgung logindsollte es möglich sein, Einschränkungen wie diese ziemlich einfach durchzusetzen.
Austin Hemmelgarn
quelle
1
Das "Wie" ist eigentlich ganz einfach: PAM. Verschiedene Dienste (wie sshd) haben unterschiedliche Konfigurationen. Sie können sie in anzeigen /etc/pam.d. Auf diese Weise kann das System feststellen, woher die Anmeldung stammt. So macht es auch Systemd.
Daniel B
@DanielB PAM ist unabhängig davon involviert, aber abgesehen von der Kontrolle der Fähigkeitsbeschränkung, die ich im ersten Fall angegeben habe, tut es wirklich nicht mehr als den Klassifizierungsteil der Dinge.
Austin Hemmelgarn