Вопрос или проблема
Я устанавливаю приложение для удаленного управления на более чем 100 машинах.
Текущие вошедшие пользователи не могут “Запускать от имени администратора”.
Я использую команду runas для запуска от имени локального администратора, но при этом запрашивается пароль.
Вот моя пакетная команда.
@Echo Off
runas /user:localadmin "c:\users\localuser\desktop\control.exe"
Timeout /t 10 >nul
Del "c:\users\localuser\desktop\Install.bat","c:\users\localuser\desktop\control.exe"
Exit
Когда я запускаю это, я получаю “Введите пароль для localadmin:”
Мне всегда нужно вводить пароль.
Затем все продолжается нормально.
Как я могу автоматизировать ввод?
Можно ли автоматизировать ввод пароля?
Да, но любой метод, который вы хотите использовать, так или иначе будет хранить пароль, так что умный пользователь сможет его извлечь.
Один из способов – сохранить пароль в текстовом файле вместе с символом переноса строки (новая строка), а затем использовать команду следующим образом:
runas /user:localadmin "c:\users\localuser\desktop\control.exe" < password.txt
Что это делает, так это использует password.txt в качестве ввода, как если бы его вводил пользователь в консоли. Каждое нажатие клавиши, которое производит символ, будет передано в вашу команду.
Недостаток в том, что вы храните пароль в текстовом файле, который можно открыть. Вы можете сгенерировать password.txt (или как вы назовете файл) в своем скрипте, но тогда ваш скрипт будет содержать пароль в открытом виде, что тоже не идеально.
Если ваши компьютеры подключены к домену, будет гораздо интереснее распространять установщик через групповую политику. Это позволяет вам просто перезагрузить компьютер, чтобы установить программное обеспечение.
Это не совсем отвечает на вопрос, так как, насколько я знаю, это не так просто реализовать, однако, это самые близкие обходные пути, которые я смог найти.
Одно решение – поместить пароль в буфер обмена сразу перед этим, чтобы было легко вставить с помощью Ctrl+V или Shift+Ins:
echo mypassword | clip
runas ...
Другой способ – использовать опцию savecred
, чтобы пароль запрашивался в первый раз и сохранялся в хранилище Windows, а затем автоматически извлекался из хранилища для последующих вызовов.
runas /savecred ...
Обратите внимание, что я пытался сначала добавить пароль в хранилище с помощью такой команды перед выполнением runas
, но этот трюк не сработал.
vaultcmd "/addcreds:Windows Credentials" "/credtype:{xxx-xxx-xxx-xxx-xxx}" "/identity:localhost\UserMe" "/resource:Domain:interactive=localhost\UserMe" "/authenticator:mypassword"
Ответ или решение
Когда вы сталкиваетесь с необходимостью автоматизации ввода пароля для команды runas
, это может быть вызовом в области управления IT. Рассмотрим основные методы, которые могут помочь вам в этой ситуации, а также риски, связанные с ними.
Проблема
Ваша задача состоит в автоматизации запуска приложения с правами администратора на 100+ машинах, где текущие пользователи не имеют прав для запуска процессов от имени администратора. При использовании команды runas
, вам постоянно требуется ввод пароля для локального администратора, что потребляет время и неэффективно во множестве машин.
Возможные Решения
1. Ввод пароля из текстового файла
Один из способов обойти необходимость ручного ввода пароля — это хранить пароль в текстовом файле и перенаправлять его как ввод в команду:
runas /user:localadmin "c:\users\localuser\desktop\control.exe" < password.txt
Преимущества:
- Автоматизация ввода пароля.
Недостатки:
- Хранение пароля в текстовом файле создает уязвимость, так как любой пользователь может ознакомиться с ним. Хотя можно создать и удалить файл в рамках скрипта, это также не идеальный вариант безопасности.
2. Использование clip
для копирования пароля
Другим подходом является использование буфера обмена для временного хранения пароля:
echo mypassword | clip
runas /user:localadmin "c:\users\localuser\desktop\control.exe"
В этом случае вы сможете вставить пароль, используя комбинации клавиш Ctrl+V или Shift+Ins.
Преимущества:
- Упрощает процесс ввода пароля вручную.
Недостатки:
- Все еще есть риск того, что кто-то может получить доступ к буферу обмена.
3. Использование параметра savecred
Можно использовать параметр /savecred
, чтобы сохранить пароль в хранилище учетных данных Windows, что делает его доступным для последующих запусков без необходимости повторного ввода.
runas /savecred /user:localadmin "c:\users\localuser\desktop\control.exe"
Преимущества:
- После первого ввода пароля он будет сохранен и доступен для всех будущих вызовов, что упрощает автоматизацию.
Недостатки:
- Это также создает потенциальные риски безопасности, так как любой пользователь или процесс с доступом к этой учетной записи может получить доступ к сохраненным учетным данным.
4. Использование групповой политики
Если ваши машины присоединены к домену, самым безопасным и эффективным методом развертывания программного обеспечения будет использование групповой политики (GPO). Это позволяет установить приложение на всех машинах без необходимости ввода пароля вручную.
- Создайте пакет установки или скрипт, который будет запускаться в момент загрузки системы.
Заключение
Автоматизация ввода пароля для запуска приложений с повышенными привилегиями всегда несет в себе определенные риски. Выбор метода зависит от конкретной ситуации и уровня угрозы безопасности в вашей сети. Если возможно, лучше всего передавать такие задачи через централизованные методы управления, такие как групповые политики, что сводит к минимуму риск компрометации учетных данных.