Erteilen des Windows-Dienstdateizugriffs

568
Excludos

Ich versuche, eine Verbindung mit openssh unter Verwendung eines Dienstes herzustellen. Leider erfordert openssh, dass der Authentifizierungsschlüssel nur von dem einen Benutzer gelesen werden kann, der beabsichtigt, dies zu tun. Verwenden Sie ihn (wenn es eine Möglichkeit gibt, diese Überprüfung zu überspringen, habe ich sie nicht gefunden). Dies funktioniert gut mit normalen Benutzern.

icacls .\private.key /inheritance:r icacls .\private.key /grant:r "%username%":"(R)" 

Windows-Dienste verfügen über einen eigenen Halbbenutzer, und ich bin völlig unfähig, diesem Benutzer die richtige Dateiberechtigung zu erteilen.

Bearbeiten: Wenn jemand gute Ideen für andere OpenSource-Programme hat oder frei ist, SSH-Programme oder -Bibliotheken zu verwenden, die zum Erstellen von Tunneln mit Authentifizierungsschlüsseln verwendet werden können, bin ich ganz Ohr. Anscheinend haben viele Probleme, Fenster richtig zu unterstützen.

0
Hallo! Welches Konto wird derzeit als Dienst ausgeführt? Was haben Sie bereits versucht, diesem Konto die Berechtigung zum Lesen dieser Datei zu gewähren, und was war das Ergebnis? In Bezug auf Ihre Bearbeitung: Wir werden keine Software empfehlen, da dies für SU keine Selbstverständlichkeit ist. Ƭᴇcʜιᴇ007 vor 6 Jahren 0
Auf der Registerkarte "Anmelden" der Diensteigenschaften können Sie ändern, unter welchem ​​Benutzer der Dienst ausgeführt wird. oder hast du es versucht: icacls ./test.txt / grant: r "SYSTEM": "(R)" Garr Godfrey vor 6 Jahren 0
@ Ƭᴇcʜιᴇ007 Es ist so eingestellt, dass es als "lokales System" ausgeführt wird. Da der Dienst auf verschiedenen Computern programmgesteuert erstellt wird, kann ich nicht auswählen, unter welchem ​​Benutzer er ausgeführt wird Excludos vor 6 Jahren 0
@GarrGodfrey Auf den ersten Blick scheint es zu funktionieren, da es keine sofortigen Fehler ausgibt, aber die eigentliche SSH-Verbindung funktioniert aus irgendeinem Grund nicht. Ich werde weiter rumspielen, um zu sehen, ob ich weitere Fehler herausfinden kann (oder besser, damit es funktioniert). Es scheint eine wirklich einfache Lösung zu sein, wenn dies alles war, was benötigt wurde. Excludos vor 6 Jahren 0
SYSTEM ist der Benutzername für das "lokale System". Ein Dienst, der nicht interaktiv eingestellt ist, hat jedoch andere Einschränkungen. Garr Godfrey vor 6 Jahren 1
Ich habe es geschafft zu arbeiten! @GarrGodfrey-Lösung hat perfekt funktioniert! Danke vielmals. Und danke für die Erklärung. Mir war nicht bewusst, dass es so funktioniert. Excludos vor 6 Jahren 0

1 Antwort auf die Frage

1
Garr Godfrey

Posting als Antwort, damit es einfacher gefunden werden kann (ursprünglich in Kommentaren).

Der Standard-Benutzername, unter dem Windows-Dienste ausgeführt werden, lautet einfach "SYSTEM". So kann die Befehlszeilenmethode Berechtigungen festlegen:

icacls .\private.key /inheritance:r icacls .\private.key /grant:r "SYSTEM":"(R)"