Вопрос Есть ли команда «sudo» для Windows?


Я всегда работаю над учетной записью, отличной от администратора, на моем компьютере под управлением Windows. Иногда мне нужно установить программы, требующие доступа администратора. Поскольку в основном я использую командную строку Windows, есть ли команда Windows для эскалации привилегий, аналогичная команде терминала Linux sudo?


414
2017-09-17 09:24


происхождения


Я считаю, что термин, который вы ищете, - это «повышенный» доступ. Даже несмотря на то, что ваши учетные данные имеют разрешение администратора, процессы под вашими учетными данными не имеют прав администратора, пока вы не выполните команду «sudo». В Windows они называют это «поднять». - surfasb
Просто используйте su и ваша команда. Он открывает новый экземпляр powershell, который работает как admin. - IGRACH
@IGRACH не на моей машине ... - jiggunjer


ответы:


беги как команда.

runas [{/profile|/noprofile}] [/env] [/netonly] [/smartcard] [/showtrustlevels] [/trustlevel] /user:UserAccountName program

Просто беги:

runas /noprofile /user:Administrator cmd 

для запуска командной оболочки в качестве администратора


254
2017-09-17 09:29



Возможно, вы захотите загрузить профиль (например, включая переменные среды) для любого расширенного использования. В этом случае /noprofile, - Richard
Это не работает для меня. После того, как я набрал свой пароль, командная строка закрыта. - Jonas
не спрашивает ли пароль администратора? sudo просит ваш пароль! - n611x007
К сожалению, это серьезно устарело. Runas просто запускает команды под другим набором учетных данных. Несмотря на то, что ваши учетные данные имеют разрешения администратора, это не означает, что все процессы под вашими учетными данными выполняются как admin. - surfasb
+1 для «устаревшего», поскольку runas не может обойти UAC. Вместо этого нажмите кнопку Windows, введите cmd и нажмите Ctrl + Shift + Enter. - mellow-yellow


я обнаружил возвысить сегодня «выполняет команду с повышением привилегий UAC. Это полезно для работы внутри командной строки или с пакетными файлами». Это не то же самое, что sudo, он меняет исполняющего пользователя на Администратора, но его синтаксис намного проще использовать, чем runas, и он может поддерживать текущий каталог, позволяя использовать относительные пути.

Synopsis:
  elevate [(-c | -k) [-n] [-u]] [-w] command

Options:
  -c  Launches a terminating command processor; equivalent to "cmd /c command".
  -k  Launches a persistent command processor; equivalent to "cmd /k command".
  -n  When using -c or -k, do not pushd the current directory before execution.
  -u  When using -c or -k, use Unicode; equivalent to "cmd /u".
  -w  Waits for termination; equivalent to "start /wait command".

Цель Elevate - не работать или обходить UAC (контроль учетных записей пользователей), а работать с ним. Пока UAC включен имеет быть подсказкой в некоторые в этом процессе. Если вам нужно полностью избавиться от подсказки, вам нужно отключить UAC,

Устранение болевых точек повышает эскалацию определенного процесса из непривилегированной оболочки, а затем продолжается как обычно. Без этого вам нужно запустить привилегированное командное приглашение с помощью щелкните правой кнопкой мыши> «Запуск от имени администратора», который не может быть легко написан сценарием, прежде чем пытаться выполнить привилегированную команду.


112
2018-04-12 06:42



Это идеально подходит для «Elevate without prompting» в secpol.msc. Вместе они делают то же самое, что и %wheel ALL=(ALL) NOPASSWD: ALL в судо. - sayap
@sayap, чтобы быть понятным, вы имеете в виду это: ss64.com/nt/syntax-uac.html? - matt wilkie
Единственная проблема, с которой я сталкиваюсь с elevate (v1.3.0), заключается в том, что она не возвращает код ошибки из программы, которую он поднимает. - Ken
Sudo.bat: @elevate %* => прибыль! - Joe DF
Было бы неплохо упомянуть, что это внешняя утилита, отсутствующая OOTB. - Hi-Angel


Вы можете использовать беги как команда, которая является подобной, или вы можете проверить sudo для Windows над проектом SourceForge который добавляет команду sudo.

Разница тонкая:

Допустим, у вас есть два пользователя. Боб - обычный пользователь, а Джеймс - администратор.

Если вы входите в систему как Bob и используете «runas james acommand», команда запускается, как если бы ее запускал Джеймс, поэтому он обращается к пользовательским настройкам Джеймса, и любые изменения пользователя попадают в James Мои документы & settings и т. д. Поэтому, если вы устанавливаете приложение, скажем, оно будет установлено как Джеймс, а не как Боб.

Если, с другой стороны, Боб делает «sudo acommand», команда все еще выполняется как Bob, но с повышенными разрешениями - точно так же, как команда sudo для Linux. Чтобы пользователь не мог судиться, вы должны определить группу пользователей sudoers, которая содержит список обычных пользователей, у которых есть разрешение на повышение с помощью sudo. Пользователям по-прежнему необходимо предоставить учетные данные перед повышением.

Иногда разница не важна, иногда это так, и я нахожу, что обе команды могут быть полезны.


66
2017-09-17 09:28



Ты уверен? Когда я запускаю sudo в ubuntu, если моя текущая тема находится в ~/.themes то приложение sudo-ed не сможет получить доступ к этой теме, потому что это не /home/root/.themes, и будет использовать уродливую gtk-тему по умолчанию. - hasen
@hasen j - ваша проблема только потому, что ~ / .themes оценивает до запуска команды (и, следовательно, до того, как она переключится на root). - Jared
Другое решение, за исключением размещения на GitHub, - это windosu: github.com/tehsenaus/windosu Я просто нашел его, и он отлично работает. Любимая вещь - это очень легко установить. Просто «npm install -g windosu». - Venryx


Вы также можете использовать Сценарий Elevation PowerToys,


39
2017-09-17 13:11



Удивительно - именно то, что я искал. Я не хотел запускать, поскольку команда имеет другого пользователя, только для запуска с повышенными привилегиями. - orip
Правильное решение этой проблемы! Кто хочет, чтобы Runas с его грязным синтаксисом? - Stabledog
Я часто хотел, чтобы команда elevate была встроена в окна. Это фантастический инструмент. - nhinkle♦
теперь есть Коллекция Elevation PowerToys тем же автором, из которого Создание самовыравнивающегося скрипта имеет особое значение. - matt wilkie
@barlop, конечно, нет. Это победит цель ОАК. - nhinkle♦


Если вы готовы перейти на альтернативные консоли, ConEmu (Я автор). Одна из его функций - возможность запускать как увеличенные, так и невыполненные вкладки в одном окне ConEmu. Вкладки могут запускаться с разными учетными данными.

Для удобства пользователя имеется пакетный файл csudo.cmd (который может быть легко принят в bash). Прочтите полное описание в Вики-деятельность, Вкратце, когда вы запускаете какую-либо команду из существующей вкладки без повышения, например

csudo dism /online /enable-feature /featurename:NetFX3 /All /Source:D:\sources\sxs /LimitAccess

ConEmu начнет dism в новой повышенной консоли / вкладке (с предыдущим приглашением UAC в окне Vista или Login в XP).

По умолчанию csudo запускает новую консоль в расколе (могут быть изменения посредством редактирования csudo.cmd содержание).

И, конечно, вы можете переименовать его в sudo.cmd если вам нравится "классический" sudo слово.

sudo in ConEmu/Windows


25
2017-10-26 07:52



csudo давно был включен в дистрибутив ConEmu. Ссылка не требуется вообще. - Maximus
проблема в том, что новая консольная вкладка становится непригодной после команды sudo'd. Поэтому вы не можете продолжать работу на вкладке с повышенными значениями, просто press enter or esc to exit сообщение. - jiggunjer
Конечно, вы не можете. Даже в Unix вы возвращаетесь к не-поднятому терминалу после sudo команда выполняет свою работу! Вы идете неправильно. - Maximus
1) если вы откроете новое окно или вкладку, вы можете сохранить ее, пользователь выберите, хотите ли они продолжить. 2) На моем ubuntu мне не нужно каждый раз судо, возвышение длится несколько минут, я думаю. 3) у этого приложения есть миллион вариантов, но ничего для этого? Может быть, я испорчен. - jiggunjer


Быстрый метод:

Три шага для добавления sudo.

  1. Откройте PowerShell.

  2. Скопируйте следующий скрипт (Ctrl + C) и вставьте его в PowerShell (Alt + Space + E + P):

$script_path="$HOME\Documents\Scripts"; if (!(test-path $script_path)) {New-Item -ItemType directory $script_path} if (!(test-path $profile)) { new-item -path $profile -itemtype file -force }". $script_path\sudo.ps1" | Out-File $profile -append; "function sudo(){if (`$args.Length -eq 1){start-process `$args[0] -verb `"runAs`"} if (`$args.Length -gt 1){start-process `$args[0] -ArgumentList `$args[1..`$args.Length] -verb `"runAs`"}}" | Out-File $script_path\sudo.ps1; powershell
  1. Удар Войти,

Это позволит sudo команды в PowerShell.

Применение:

sudo <process-name> [param1 [param2 [param3]]]

Примеры:

sudo explorer
sudo notepad
sudo powershell
sudo cmd
sudo taskmgr
sudo tasklist
sudo taskkill /IM Skype.exe /PID 8496

Длительный метод обучения:

Примечание. Я смешал сценарий из обеих статей, чтобы создать вышеупомянутый скрипт. Скорее вручную вставляя скрипт в блокнот, я добавил Out-File заявления для сохранения ps1 а также $profile файлов из сценария.

Совет. Если вы не очень любите всплывающие окна UAC (например, я), сохраните следующее в файле .reg и запустите его:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"ConsentPromptBehaviorAdmin"=dword:00000000

23
2017-08-28 10:36



Мне нравится решение powershell для этого вопроса. Это должен быть самый простой способ поднять что-то. Существующие файлы .bat могут быть легко преобразованы в POSH - Mitchell Skurnik
Получил эту ошибку в окнах 10: . : File C:\Users\User\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 cannot be loaded because running scripts is disabled on this system. - sowrov
@sowrov, см. [эту статью] (www.faqforge.com/windows/windows-powershell-running-scripts-is-disabled-on-this-system/). По умолчанию сценарии PowerShell отключены при любой установке Windows. Вам нужно включить его с помощью этой команды set-executionpolicy remotesigned, Другие варианты, кроме remotesigned описаны в официальные документы, - vulcan raven
Читатели отмечают, что этот скрипт ps является оберткой для powershell -c start -verb runas program.exe функциональность. Также обратите внимание не может поднять например, с подсказкой cmd (изначально). Powershell - лучший собственный вариант. - jiggunjer


Если вы делаете это в Windows, то в дополнение к команде Run As, как указано в нескольких других ответах, есть также способы сделать это с помощью мыши.

Если вы удерживаете сдвиг когда вы щелкните правой кнопкой мыши на большинстве исполняемых файлов в Windows, вы должны заметить еще несколько дополнительных опций. Одним из них является "Run As..."(я думаю, что это называется"Run As Administrator«начиная с Vista»).

Вы также можете загрузить более продвинутую версию RunAs от Microsoft, называемую ShellRunas, это улучшает встроенную команду RunAs, как в командной строке, так и в графическом режиме, в том числе позволяет вам сохранять учетные данные учетной записи


20
2017-09-17 11:22





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

Когда я пользовался Windows XP, это приложение мне очень помогает. Бета работает под Windows 7.


3
2017-11-17 15:24



surun отлично справляется. Однако иногда под Windows 8 и 8.1 его значения по умолчанию не идеальны. Поскольку он заменяет функцию запуска Windows как функцию, вы не можете запустить командную строку, щелкнув правой кнопкой мыши на стартовом экране. - Wolf


Как вы, вероятно, обнаружили, runas позволит вам работать как другой пользователь, но он не может выполнять возвышение и не передает текущие каталоги, переменные окружения или длинные командные строки.

Оболочка Hamilton C решает это с подлинным su и sudo. su позволяет запускать команду в качестве другого пользователя; sudo (на самом деле псевдоним su) позволяет вам выполнить команду повышенной. Вы также можете сделать то и другое, работая под повышенным уровнем как другой пользователь. Текущие каталоги, переменные окружения и длинные командные строки передаются посредством рукопожатия с общей памятью между su, выполняющимся в контексте вызывающего абонента, и копией самой работы, выполняемой как интерлюдия, с новыми учетными данными, которые затем запускают дочерние элементы. Полное раскрытие: я автор.


3
2017-09-06 15:01





Этот скрипт выполняет задание:

@echo Set objShell = CreateObject("Shell.Application") > %temp%\sudo.tmp.vbs
@echo args = Right("%*", (Len("%*") - Len("%1"))) >> %temp%\sudo.tmp.vbs
@echo objShell.ShellExecute "%1", args, "", "runas" >> %temp%\sudo.tmp.vbs
@cscript //NoLogo %temp%\sudo.tmp.vbs

Сохраните его как sudo.cmd затем добавьте его в свой PATH

Обратите внимание runas означает в этом контексте «Запуск от имени администратора», а не «Запуск от имени другого пользователя»,

Взято отсюда и слегка отредактирован, чтобы удалить заголовок cscript.exe с вывода


1
2018-01-10 21:08



Это создает новую консоль. Новое окно исчезнет после завершения команды sudo'd, так что вы даже не сможете читать результат. - jiggunjer
К сожалению, да. Но он может быть использован для некоторых основных команд (копирование), инструментов графического интерфейса пользователя или открытия админ-команд. - Charles Milette


На мой взгляд, простейшее решение заключается в том, чтобы использовать powershell для выполнения этой работы, которая является переносной и подскажет пользователю использование UAC.

Вы можете просто запустить это в любой оболочке (cmd или powershell)

powershell Start-Process -verb runAs path-to-your.exe "-all -args -in -quotes"

1
2017-11-20 19:58