16

Как запускать скрипты от root`a в windows?

Mike
  • 874
  • cmd запустить от имени администратора. – Moonvvell Jan 15 '16 at 13:20
  • Я запускаю скрипт на python`e через cmd от администратора для записи программу в автозагрузку через реестр, он пишет мне "Отказано в доступе" – Mike Jan 15 '16 at 13:24
  • 1
    Вчера был подобный вопрос уже. Как раз о питоне и ветке HKEY_CURRENT_USER. http://ru.stackoverflow.com/questions/482768/%D0%9A%D0%B0%D0%BA-%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2%D0%B8%D1%82%D1%8C-%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D1%8C-%D0%B2-%D1%80%D0%B5%D0%B5%D1%81%D1%82%D1%80 может поможет чем то ) – Moonvvell Jan 15 '16 at 13:29

4 Answers4

15
runas /user:username "command.exe /parameters"

runas /user:mymachine\administrator cmd.exe - запустить интерпретатор команд cmd.exe от имени пользователя "administrator" компьютера "mymachine". При выполнении команды, будет запрошен пароль пользователя, от имени которого должна выполняться задача.

runas /noprofile /env /user:mydomain\admin " mmc %windir%\system32\diskmgmt.msc " - запустить консоль mmc с оснасткой "Управление дисками" от имени пользователя "admin" в домене "mydomain". Профиль пользователя не загружается, и используются текущие переменные среды. Загрузка профиля пользователя необходима только тогда, когда будет выполняться задача, которой требуются какие-либо данные из него. Если задан параметр /env то переменные окружения наследуются из среды текущего пользователя.

runas /savecred /user:admin@mydomain regedit.exe - запустить редактор реестра "regedit.exe" от имени пользователя "admin" домена "mydomain" с запоминанием введенного пароля. При наличии параметра /savecred, введенный пароль запоминается в реестре в зашифрованном виде и в дальнейшем запрашиваться не будет .

runas /showtrustlevel - отобразить уровни доверия, существующие в системе. В ответ будет отображаться перечень в виде:

В системе доступны следующие уровни доверия:
0x20000 (Обычный пользователь)

Кроме значения trustlevel равного 0x20000 можно пользоваться значениями 0x10000, соответствующему минимальному набору привилегий и 0x40000, стандартному для данного пользователя набору. Для просмотра отличий разных уровней доверия можно воспользоваться командой Whoami, выполняя ее в сеансе командного процессора, запускаемого с каждым из уровней trustlevel

runas /trustlevel:0x20000 cmd.exe - запустить командный процессор cmd.exe с использованием уровня доверия, полученного в предыдущем примере.

runas /trustlevel:0x40000 cmd.exe - запустить командный процессор cmd.exe с использованием стандартного уровня доверия.

Примечание: в сеансе командной строки, запущенной с использованием параметра /trustlevel, список привилегий соответствующий каждому уровню доверия можно получить с использованием команды whoami /priv, а полные сведения об учетной записи - whoami /ALL

Примечание: параметр /profile несовместим с параметром `/netonly.

Примечание: параметр /savecred несовместим с параметром /smartcard.

Вот вариант с передачей пароля:

echo пароль | runas /netonly /user:workgroup\user "command.exe"
VenZell
  • 19,872
Hermann Zheboldov
  • 1,136
  • 10
  • 22
1

Команды аналогичной "sudo" нет.

Для Winows Vista-10:

Можно запустить cmd от имени администратора или выбрать это в свойствах ярлыка.

Если cmd запущена с правами администратора, в заголовке окна появляется слово "Администратор"; команда whoami /groups показывает в последней строке SID S-1-16-12288 вместо S-1-16-8192; команды net session или dir C:\Windows\Temp работают (имеют доступ). В этом случае cmd и скрипт имеют максимальные права администратора, но не имют неограниченного доступа. В свойствах папки / безопасность и также для ключей реестра можно запретить доступ также для администратора. Администратор имеет возможность изменить эти настройки, но до того они действуют. Но в редких случаях прав администратора действительно не хватает, это самозащита Windows.

Большинство программ также получают права администратора, если их запустить в cmd от администратора. Исключение - Windows Explorer имеет всегда ограниченные права. Проверить это можно в Диспетчере Задач / Подробности / скрытый столбец "С более высоким уровнем разрешений" или в ProcessExplorer / скрытый столбец "Process Image/Integrity Level"

runasподходит только для Windows XP/2003, но не меняет ничего в Windows Vista - 10 из-за UAC (User Account Control).

Смотрите также https://stackoverflow.com/questions/1894967/how-to-request-administrator-access-inside-a-batch-file

0

Есть sudo для windows https://chocolatey.org/packages/Sudo. А еще менеджер пакетов chocolatey)

0

Можно создать "sudo.cmd" скрипт:

@ECHO off

set command=%~$PATH:1 set tmpfile="%temp%\tmp-sudo-%~nx1.vbs" set params=

:loop shift if [%1]==[] goto afterloop if [%1]==[%~1] (set params=%params% %1) else (set params=%params% "%1") goto loop

:afterloop set params=%params:~1% echo Set objShell = CreateObject("Shell.Application")> %tmpfile% echo objShell.ShellExecute "%command%", "%params%", "", "runas">> %tmpfile% cscript //D //Nologo //T:30 %tmpfile%

del %tmpfile%

Использование: sudo command

sudo cmd.exe

sudo cmd.exe /K net session

sudo calc.exe

скриншот