
Gibt es eine Möglichkeit, den Lese- und/oder Schreibzugriff auf einen bestimmten Ordner in Windows zu verhindern und nur einem bestimmten Dienst/Prozess Zugriff darauf zu gewähren?
Es scheint, dass die Berechtigungen benutzerbasiert und nicht dienstbasiert sind, aber ich würde gerne wissen, ob es trotzdem eine Möglichkeit gibt, eine solche Funktionalität zu erreichen.
Antwort1
Ja, es gibt eine Möglichkeit, dies in Windows 7 zu tun, obwohl es möglicherweise notwendig ist, den Dienst neu zu konfigurieren, was ein (wahrscheinlich ziemlich geringes) Risiko der Entstehung eines Kompatibilitätsproblems mit sich bringt.
Die mit einem Dienst verknüpfte Sicherheits-ID kann wie folgt referenziert werden:
NT SERVICE\SERVICENAME
wobei servicename
durch den tatsächlichen Namen des Dienstes ersetzt wird (wird im Verwaltungstool „Dienste“ als „Dienstname“ angezeigt und unterscheidet sich vom Anzeigenamen, der in der Hauptliste der Dienste angezeigt wird). Wenn Sie die GUI zum Ändern der Sicherheitseinstellungen verwenden und der Computer einer Domäne angehört, müssen Sie den Suchbereich auf den lokalen Computer ändern. Beachten Sie auch, dass dies nur für aktuell installierte Dienste funktioniert.
Mit dem folgenden Befehl können Sie die SID ermitteln, die einem bestimmten Dienstnamen zugeordnet ist, unabhängig davon, ob ein solcher Dienst installiert ist oder nicht sc showsid
:
C:\working>sc showsid wjkjk
NAME: wjkjk
SERVICE SID: S-1-5-80-492907775-8774055-3223757035-3566066944-1037782649
Wenn Sie mit dem Befehl die Sicherheit einer Datei oder eines Ordners festlegen, icacls
können Sie eine SID durch das Präfix angeben *
, z. B. *S-1-5-80-492907775-8774055-3223757035-3566066944-1037782649
.
Damit der Dienst mit dieser Sicherheits-ID auf Dateien zugreifen kann, muss er mit dem Dienst-SID-Typ „uneingeschränkt“ oder „eingeschränkt“ konfiguriert sein. Wenn er mit dem Dienst-SID-Typ „keine“ konfiguriert ist, funktioniert die Dienst-SID nicht. Sie können den Dienst-SID-Typ eines installierten Dienstes mit dem folgenden sc qsidtype
Befehl überprüfen:
C:\working>sc qsidtype wuauserv
[SC] QueryServiceConfig2 SUCCESS
SERVICE_NAME: wuauserv
SERVICE_SID_TYPE: UNRESTRICTED
Wenn der Diensttyp „keine“ ist, können Sie ihn mit dem folgenden sc sidtype
Befehl in „uneingeschränkt“ ändern:
C:\working>sc qsidtype psexesvc
[SC] QueryServiceConfig2 SUCCESS
SERVICE_NAME: psexesvc
SERVICE_SID_TYPE: NONE
C:\working>sc sidtype psexesvc unrestricted
[SC] ChangeServiceConfig2 SUCCESS
C:\working>sc qsidtype psexesvc
[SC] QueryServiceConfig2 SUCCESS
SERVICE_NAME: psexesvc
SERVICE_SID_TYPE: UNRESTRICTED
Dies wird erst wirksam, wenn der Dienst neu gestartet wird.
Notiz:Du solltestnichtÄndern Sie den SID-Typ eines Dienstes von „keine“ in „eingeschränkt“. Dies führt mit ziemlicher Sicherheit zu Fehlfunktionen des Dienstes. Das Ändern des Typs von „keine“ in „uneingeschränkt“ führt mit viel geringerer Wahrscheinlichkeit zu Problemen. Wenn der SID-Typ des Dienstes bereits „eingeschränkt“ oder „uneingeschränkt“ ist, sollten Sie ihn nicht ändern.
Antwort2
Es gibt einen Pseudo-„Benutzer“, SERVICE
den alle Dienste verwenden, sodass Sie den Zugriff einfach einschränken können, indem Sie nur diesem „Benutzer“ den Zugriff erlauben.
Dies ist jedoch nicht ganz das, was Sie gefragt haben, da es sich nicht um einen einzelnen spezifischen Dienst handelt, sondern um alle Dienste. Es gibt jedoch keinen Standardmechanismus zur Beschränkung auf einen einzelnen Dienst.MaiEs wäre mit einigem Aufwand möglich, einen Dienst zu zwingen, beim Start eine andere ID zu verwenden - ich würde es nicht empfehlen.