Аналог sudo в windows 10
Я всегда работаю над учетной записью, отличной от администратора, на моем компьютере под управлением Windows. Иногда мне нужно установить программы, требующие доступа администратора. Поскольку в основном я использую командную строку Windows, есть ли команда Windows для эскалации привилегий, аналогичная команде терминала Linux sudo ?
для запуска командной оболочки в качестве администратора
Я обнаружил поднять сегодня, когда "выполняет команду с повышением привилегий UAC. Это полезно для работы внутри командной строки или с пакетными файлами. " Это не то же самое, что sudo , он меняет исполняющего пользователя на Администратора, но его синтаксис намного проще использовать, чем runas , и он может поддерживать текущий каталог, позволяя использовать относительные пути.
Цель Elevate - не работать или обходить UAC (User Account Control), а работать с ним. Пока UAC включен, имеет , чтобы быть каким-то приглашением в some в процессе. Если вам нужно полностью избавиться от запроса, вы должны отключить UAC .
Устранение болевых точек повышает эскалацию определенного процесса из непривилегированной оболочки, а затем продолжается как обычно. Без этого вам нужно запустить привилегированное командное приглашение с помощью правой кнопкой мыши> «Запуск от имени администратора» , который не может быть легко написан сценарием, прежде чем пытаться выполнить привилегированную команду.
Вы можете использовать команду runas , которая является похожей, или вы можете проверить sudo для Windows над SourceForge , который добавляет команду sudo.
Предположим, у вас есть два пользователя. Боб - обычный пользователь, а Джеймс - администратор.
Если вы входите в систему как Bob и используете «runas james acommand», команда запускается так, как если бы ее запускал Джеймс, поэтому он обращается к пользовательским настройкам Джеймса, и любые изменения пользователя переходят в James My Documents & папок настроек и т. д. Поэтому, если вы устанавливаете приложение, скажем, оно будет установлено как Джеймс, а не как Боб.
Если, с другой стороны, Боб делает «sudo acommand», команда все еще выполняется как Bob, но с повышенными разрешениями - точно так же, как команда sudo для Linux. Чтобы пользователь не мог судиться, вы должны определить группу пользователей sudoers, которая содержит список обычных пользователей, у которых есть разрешение на повышение с помощью sudo. Пользователям по-прежнему необходимо предоставить учетные данные перед повышением.
Иногда разница не важна, иногда это так, и я считаю, что обе команды могут быть полезны.
Если вы готовы перейти на альтернативные консоли, ConEmu (я автор). Одна из его функций - возможность запускать как увеличенные, так и невыполненные вкладки в одном окне ConEmu. Вкладки могут запускаться с разными учетными данными.
Для удобства пользователя существует пакетный файл csudo.cmd (который может быть легко принят в bash). Прочтите полное описание в вики проекта . Вкратце, когда вы запускаете какую-либо команду из существующей вкладки с невыполнением, например
ConEmu запустит dism на новой повышенной консоли /вкладке (с предыдущим приглашением UAC в окне Vista или Login в XP).
По умолчанию csudo запускает новую консоль в расколе (могут быть изменения с помощью редактирования содержимого csudo.cmd ).
И, конечно, вы можете переименовать его в sudo.cmd , если вам нравится слово "classic" sudo .
Три шага для добавления sudo.
Скопируйте следующий скрипт (Ctrl + C) и вставьте его в PowerShell (Alt + Space + E + P):
Он будет постоянно включать команду sudo в PowerShell.
- Прочитайте эту статью .
- Прочитайте комментарии.
- Взгляните на хранилище git репозитория Стивена и файл readme .
Примечание. Я смешал сценарий из обеих статей, чтобы создать вышеупомянутый скрипт. Скорее вручную вставив скрипт в блокнот, я добавил операторы Out-File для сохранения файлов ps1 и $profile из сценария.
Совет. Если вы не очень любите всплывающие окна UAC (например, я), сохраните следующее в файле * .reg и запустите его:
Если вы делаете это в Windows, то в дополнение к команде Run As, как упоминалось в нескольких других ответах, есть также способы сделать это с помощью мыши.
Если вы удерживаете клавишу Shift при щелчке правой кнопкой мыши по большинству исполняемых файлов в Windows, вы должны заметить еще несколько дополнительных опций. Один из них - это опция Run As. "(я думаю, что она называется« Run As Administrator »из Vista).
Вы также можете загрузить более продвинутую версию RunAs от Microsoft, называемую ShellRunAs , это улучшает встроенную команду RunAs, как в командной строке, так и в графическом режиме, в том числе позволяет вам сохранять учетные данные учетной записи
Surun - это бесплатное приложение с открытым исходным кодом, которое позволяет определенным программам работать с правами администратора, без предоставления пароля без изменения реестра пользователя или изменения переменных среды.
Когда я пользовался Windows XP, это приложение мне очень помогает. Beta работает под Windows 7.
Как вы, вероятно, обнаружили, runas позволит вам запускаться как другой пользователь, но он не может выполнять возвышение и не передает текущие каталоги, переменные окружения или длинные командные строки.
оболочка Hamilton C разрешает это с подлинным su и sudo. su позволяет запускать команду в качестве другого пользователя; sudo (на самом деле псевдоним su) позволяет вам выполнить команду повышенной. Вы также можете сделать то и другое, работая под повышенным уровнем как другой пользователь. Текущие каталоги, переменные окружения и длинные командные строки передаются посредством рукопожатия с общей памятью между su, выполняющимся в контексте вызывающего абонента, и копией самой работы, выполняемой как интерлюдия, с новыми учетными данными, которые затем запускают дочерние элементы. Полное раскрытие: я автор.
Этот скрипт выполняет задание:
Сохраните его как sudo.cmd , затем добавьте его в свой PATH
Примечание: runas означает в этом контексте «Запуск от имени администратора», а не «Запуск от имени другого пользователя»
взяты здесь и слегка отредактирован, чтобы удалить заголовок cscript.exe из вывода
Самое простое решение, на мой взгляд, заключается в том, чтобы использовать powershell для работы, которая является переносной и будет запрашивать пользователя с использованием UAC.
Вы можете просто запустить это в любой оболочке (cmd или powershell)
Замените рабочую замену sudo для терминала Cygwin mintty , чтобы поместить следующий скрипт в PATH пользователя:
Для меня это единственная жизнеспособная замена для повышения привилегий таких программ, как vim или cygrunsrv во время работы в терминале в Windows.
Следующий скрипт vbs делает трюк для меня. Я положил его на C:\Windows\System32
Пример использования в командной строке sudo net start service
Для него есть шоколадный пакет с удобным названием sudo . Вы можете установить пакет с шоколадным с помощью этой команды:
Затем в любой оболочке Windows /MS, которую вы должны использовать, вы можете использовать sudo , как ожидалось.
отключает действие UAC для процессов запускаемых удаленно. Устанавливать его надо на ПК, на котором будут удаленно запускаться приложения. После установки требуется перезагрузка.
Когда он установлен и вы запускаете что-то удаленно с правами администратора удаленного компьютера, то программа запускается с реальными администраторскими правами, без фильтра UAC.
Например с помощью того же psexec (или wmic) можно будет запускать удаленно приложения.
Не уверен, что это сработает в случае с ssh и telnet, т.к. сервер службы работает на удаленном компьютере.
Тут же ситуация достаточно интересная - при включенном UAC при запуске удаленного процесса нет возможности вывести окно "User Account Control", чтоб запросить повышение прав, потому что пользователь находится на другом компе. В этом случае UAC просто блокирует запуск приложения и удаленному пользователю возвращается ошибка запуска.
Поэтому либо отключаем UAC для удаленных приложений, либо запускаем какой-либо сервер, который будет работать с уже повышенными правами. В любом случае UAC отдыхает.
Других вариантов я не знаю.
Евгений, На сколько я знаю, runas не повышает привилегии.
Если вы запустите через runas с указанием пользователя, например Администратор, то программа запустится из-под Администратора, но без повышения привилегий. Штатного способа повысить привилегии из cmd.exe я не знаю.
Есть варианты с использованием простого скрипта на powershell и с использованием сторонних утилит.
И еще runas - специфическая утилита, например ему нельзя указать пароль в командной строке или из файла. Да, можно предварительно сохранить его, но этот вариант не всегда подходит.
PS: уже лет 5 я не интересовался вопросом повышения привилегий, так что мои познания, возможно, отстали от жизни.
С PowerShell локальным все достаточно несложно, например:
Start-Process "C:\Program Files\PowerShell\7\pwsh.exe" -Verb runAs -WorkingDirectory c:\ -wait
С удаленным компьютером все несколько сложнее
1. На удаленном компьютере запускаем
Set-Item -Path WSMan:\localhost\Client\TrustedHosts -Value ''
Вместо можно поставить и * но это чревато сами понимаете чем.
2. На локальном запускаем Invoke-Command -ComputerName $hostname -ScriptBlock < Ваш срипт здесь >-Credential $hostname\ladmin | Format-List
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
Я всегда работаю с учетной записью без прав администратора на моем компьютере с Windows. Иногда мне нужно установить программы, которые требуют доступа администратора. Поскольку я в основном использую командную строку Windows, существует ли команда Windows для повышения привилегий, аналогичная команде sudo терминала Linux?
запустить командную оболочку от имени администратора
Я обнаружил, что Elevate сегодня выполняет команду с повышением привилегий UAC.Это полезно для работы внутри командной строки или с пакетными файлами. « Это не то же самое, что sudo , оно меняет исполняющего пользователя на Администратора, но его синтаксис намного проще в использовании, чем runas , и он может сохранять текущий каталог позволяя использовать относительные пути.
Задача Elevate не обойти или обойти UAC (контроль учетных записей), а работать с ним. Пока UAC включен , в какой- то момент процесса должно быть какое-то приглашение. Если вам нужно полностью избавиться от подсказок, вы должны отключить UAC.
Болевая точка, которую облегчает повышение, - это эскалация определенного процесса из непривилегированной оболочки, а затем продолжение в обычном режиме. Без этого вам нужно запустить привилегированную командную строку, щелкнув правой кнопкой мыши> "Запуск от имени администратора", что не может быть легко написано в сценарии, перед попыткой привилегированной команды.
Вы можете использовать команду runas, которая в некотором роде похожа, или вы можете проверить проект sudo для Windows в SourceForge, который добавляет команду sudo.
Допустим, у вас есть два пользователя. Боб - обычный пользователь, а Джеймс - администратор.
Если вы вошли в систему как Bob и используете "runas james acommand", команда запускается так, как если бы она была запущена James, поэтому она получает доступ к пользовательским настройкам James, а любые пользовательские изменения переходят в папки « Мои документы и настройки» James и т.д. устанавливаем приложение, скажем, оно будет установлено как Джеймс, а не как Боб.
Если, с другой стороны, Боб выполняет команду "sudo acommand", команда все равно запускается как Bob, но с повышенными правами доступа - точно так же, как команда sudo в Linux. Чтобы любой пользователь не мог использовать sudo, вы должны определить группу пользователей sudoers, которая содержит список обычных пользователей, которые имеют разрешение на повышение с помощью sudo. Пользователи все еще должны предоставить учетные данные до повышения прав.
Иногда разница не важна, иногда это так, и я считаю, что обе команды могут быть полезны.
Читайте также: