Start · Sprachen · PHP · Referenz · Win32Service\RightInfo

Win32Service\RightInfo

Klasse

Kapselt das Ergebnis von <code>win32_read_right_access_service()</code> und stellt Informationen über Zugriffsrechte eines Windows-Dienstes bereit.

seit PHP 1.0.0 Kategorie: misc

Signatur

class Win32Service\RightInfo

Beschreibung

Win32Service\RightInfo ist ein Wertobjekt, das die Rückgabeinformationen der Funktion win32_read_right_access_service() kapselt. Es enthält Details darüber, welche Zugriffsrechte ein bestimmter Benutzer oder eine Gruppe auf einen Windows-Dienst besitzt.

Die Klasse gehört zur win32service-Extension und ist ausschließlich unter Windows verfügbar. Sie erlaubt es, sicherheitsrelevante Entscheidungen im Umgang mit Windows-Diensten auf Basis der ermittelten Rechte zu treffen, beispielsweise ob ein Benutzer einen Dienst starten, stoppen oder konfigurieren darf.

Typischerweise wird eine Instanz dieser Klasse nicht manuell erzeugt, sondern als Rückgabewert von win32_read_right_access_service() erhalten. Die enthaltenen Eigenschaften spiegeln die gewährten und verwehrten Zugriffsrechte gemäß der Windows-Sicherheits-API wider.

  • Verwendung: Auslesen von Zugriffsrechten für Dienst-Sicherheitsüberprüfungen.
  • Plattform: Nur unter Windows mit installierter win32service-Extension nutzbar.

Beispiele

Zugriffsrechte eines Windows-Dienstes auslesen

<?php
// Voraussetzung: win32service-Extension ist installiert und aktiv (nur Windows)
if (function_exists('win32_read_right_access_service')) {
    try {
        /** @var Win32Service\RightInfo $rightInfo */
        $rightInfo = win32_read_right_access_service('MyService', WINNT_SERVICE_MANAGER);

        if ($rightInfo instanceof Win32Service\RightInfo) {
            echo 'Zugriffsrechte erfolgreich ausgelesen.' . PHP_EOL;
            // Eigenschaften des Objekts inspizieren
            var_dump($rightInfo);
        }
    } catch (Win32Service\Win32ServiceException $e) {
        echo 'Fehler beim Auslesen der Zugriffsrechte: ' . $e->getMessage() . PHP_EOL;
    }
} else {
    echo 'win32service-Extension ist nicht verfügbar.' . PHP_EOL;
}
Zugriffsrechte erfolgreich ausgelesen. object(Win32Service\RightInfo)#1 (...) { ... }

Prüfen ob ein Dienst gestartet werden darf

<?php
// Nur Windows mit win32service-Extension
if (function_exists('win32_read_right_access_service')) {
    try {
        $rightInfo = win32_read_right_access_service('Spooler', WINNT_SERVICE_MANAGER);

        if ($rightInfo instanceof Win32Service\RightInfo) {
            // Zugriffsmaske auf Start-Recht prüfen
            // WIN32_SERVICE_START = 0x0010
            $accessMask = $rightInfo->accessmask ?? 0;
            if ($accessMask & 0x0010) {
                echo 'Der Dienst "Spooler" darf gestartet werden.' . PHP_EOL;
            } else {
                echo 'Kein Startrecht für den Dienst "Spooler".' . PHP_EOL;
            }
        }
    } catch (Win32Service\Win32ServiceException $e) {
        echo 'Fehler: ' . $e->getMessage() . PHP_EOL;
    }
}
Der Dienst "Spooler" darf gestartet werden.

// Wichtig · Fallstricke

Plattformbeschränkung: Diese Klasse und die gesamte win32service-Extension sind ausschließlich unter Windows verfügbar. PHP-Code, der diese Klasse verwendet, ist nicht portabel und sollte entsprechend abgesichert werden (z. B. mit extension_loaded('win32service')).

Sicherheitshinweis: Beim Auslesen und Auswerten von Dienst-Zugriffsrechten sollte stets mit minimalen Rechten gearbeitet werden (Principle of Least Privilege). Das Ergebnis dieser Klasse sollte nicht als alleinige Sicherheitsschranke verwendet werden, da Windows-Berechtigungen komplex und hierarchisch aufgebaut sind.

Die genaue Struktur der Eigenschaften von RightInfo hängt von der installierten Version der win32service-Extension ab. Es empfiehlt sich, die offizielle PECL-Dokumentation zur jeweiligen Version zu konsultieren.