Предоставление доступа к файлу службы Windows

338
Excludos

Я пытаюсь запустить соединение с openssh с помощью службы. К сожалению, openssh требует, чтобы ключ аутентификации был доступен для чтения только одному пользователю, который намеревается использовать его ... (если есть способ пропустить эту проверку, я не нашел его). Это нормально работает с обычными пользователями, используя:

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

Службы Windows работают с собственным полупользователем, и я совершенно не в состоянии предоставить этому пользователю правильные права доступа к файлам.

редактировать: если у кого-то есть хорошие идеи для других или с открытым исходным кодом или свободно использовать ssh-программы или библиотеки, которые могут быть использованы для создания туннелей с ключами аутентификации, я весь слух. Кажется, у многих из них проблемы с поддержкой окон.

0
Привет! Какая учетная запись в настоящее время настроена для работы вашей службы? Что вы уже пытались предоставить этой учетной записи разрешение на чтение этого файла, и каков был результат? Что касается вашего редактирования: мы не будем рекомендовать программное обеспечение, так как это не по теме для SU. Ƭᴇcʜιᴇ007 6 лет назад 0
На вкладке «Вход» в свойствах службы вы можете изменить, какой пользователь запускает службу. или вы пытались: icacls ./test.txt / grant: r "СИСТЕМА": "(R)" Garr Godfrey 6 лет назад 0
@ Ƭᴇcʜιᴇ007 Он настроен на работу как «локальная система». Поскольку служба создается программно на разных компьютерах, я не смогу выбрать, каким пользователем она будет работать Excludos 6 лет назад 0
@GarrGodfrey На первый взгляд кажется, что это работает, поскольку не выдает никаких немедленных ошибок, но фактическое соединение ssh по какой-то причине не работает. Я буду продолжать тренироваться, чтобы посмотреть, смогу ли я вывести какие-либо дополнительные ошибки (или, лучше, заставить это работать). Это кажется действительно простым решением, если бы это было все, что было нужно. Excludos 6 лет назад 0
SYSTEM - это имя пользователя для «Локальной системы». Но сервис, который не настроен на интерактивную работу, имеет другие ограничения. Garr Godfrey 6 лет назад 1
Я получил это на работу! Решение @GarrGodfrey сработало отлично! Большое спасибо. И спасибо за объяснение. Я не знал, как это работает. Excludos 6 лет назад 0

1 ответ на вопрос

1
Garr Godfrey

Размещение в качестве ответа, чтобы его было проще найти (изначально в комментариях).

Службы Windows с именем пользователя по умолчанию, запускаемые под ним, просто «SYSTEM». Таким образом, метод командной строки для установки разрешений:

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

Похожие вопросы