GSUDO является эквивалентом sudo
для Windows, с аналогичным пользовательским опытом, что и исходный Unix/Linux Sudo. Позволяет запустить команду (или повторно запускать вашу текущую оболочку) с повышенными разрешениями, в текущем окне консоли или новой.
Просто приготовьте gsudo
(или sudo
Alias) к вашей команде, и он будет работать с повышенным. Для PowerShell Используйте этот синтаксис: gsudo { ScriptBlock }
Одно всплывающее окно UAC появится каждый раз. Вы можете увидеть меньше всплывающих часов, если вы включите кэш GSUDO.
Он обнаруживает вашу текущую оболочку и поднимает вашу команду как нативные команды оболочки. (Поддерживает Cmd
, PowerShell
, WSL
, git-bash
, MinGW
, Cygwin
, Yori
, Take Command
, BusyBox
& NuShell
.)
Gsudo - Sudo для Windows
Использование из PowerShell / PowerShell Core
Использование от WSL (подсистема Windows для Linux)
Модуль PowerShell
Оглавление
Демо
Функции
Установка
Использование
Конфигурация
Кэш дипломов
Известные проблемы
Часто задаваемые вопросы
Пожалуйста, поддержите GSUDO! ?
Расширенная документация доступна по адресу: https://gerardog.github.io/gsudo/
(с gsudo config CacheMode auto
)
Повышенные команды показаны в текущей консоли. Нет нового окна (если вы не указали -n
)
Кэш учетных данных: gsudo
может много раз поднять, показывая только одно всплывающее окно UAC, если пользователь выбирает, чтобы включить кеш.
Обнаружает вашу текущую оболочку (поддерживает CMD
, PowerShell
, WSL
, Bash for Windows
(GIT-Bash/Mingw/MSYS2/Cygwin), Yori
, Take Command
и NuShell
) и правильно поднимает вашу команду.
Поддержки используются на сценариях:
Выходы STDOUT /STDERR могут быть зафиксированы или захвачены (например, gsudo dir | findstr /c:"bytes free" > FreeSpace.txt
) и также коды выхода ( %errorlevel%
). Если gsudo
не может поднять, код выхода будет 999.
Если gsudo
вызывает из уже повышенной консоли, она просто запустит команду (она не пройдет). Таким образом, вам не нужно беспокоиться, если вы запустите gsudo
или сценарий, который использует gsudo
из уже повышенной консоли. (Всплывающее окно UAC не появится, так как не требуется высота)
gsudo !!
Поднимает последнюю выполненную команду. Работает над CMD, Git-Bash, Mingw, Cygwin (и PowerShell только с модулем GSUDO)
Использование Scoop: scoop install gsudo
Использование Winget: winget install gerardog.gsudo
Использование Chocolatey: choco install gsudo
Запуск этой строки: (скрипт):
PowerShell -command "Set -ExecutionPolicy RemoteSigned -Scope процесс; [net.servicePointManager] :: SecurityProtocol = 'tls12'; iwr -Useb https://raw.githubusercontent.com/gerardog/gsudo/master/installgsudo.pes1
Портатив:
Скачать gsudo.portable.zip
из последнего релиза
Извлеките папку, соответствующую архитектуре процессора (x64, x86 или ARM64) из файла Zip в подходящий каталог на вашем компьютере.
При желании добавьте этот каталог в переменную среды пути вашей системы, если он еще не доступен.
Пожалуйста, перезапустите все окна консоли после установки, чтобы убедиться, что переменная среды PATH
будет обновлена.
ПРИМЕЧАНИЕ: gsudo.exe
портативный. Сервис Windows не требуется или изменение системы не проводится, за исключением добавления его в путь.
gsudo [options] # запускает вашу текущую оболочку ulectgeedgsudo [options] {command} [args] # runs {command} с повышенным разрешением кэша [on | on | OFF | Справка] # Запускает/останавливает сеанс кеша учетных данных. (меньше всплывающих окон UAC) Статус GSUDO [--JSON | Фильтр] # Показывает текущего пользователя, кэша и консоли Status.gsudo !! # Перезапустить последнюю команду как администратор. (YMMV)
Новые варианты окна: -n | -Новый # запускает команду в новой консоли/окне (и немедленно возвращается). -W | -Ведь # Когда в новой консоли, подождите, пока команда закончится. -KeepShell # После запуска команды оставьте поднятую оболочку открытой. -KeepWindow # После запуска команды в новой консоли попросите KeyPress перед закрытием консоли/Window. -USER {usr} # запустить как указанный пользователь. Просит пароль. Для местных администраторов показывает UAC, если '-i Medium' -i | --Integrity {v} # Укажите уровень целостности: Недоверенный, низкий, средний, средний флаг, высокий (по умолчанию), система -s | -Система # запустить в качестве локальной системной учетной записи (NT AuthoritySystem). -Ti # Run в качестве члена NT ServiceTrustedInstaller -k # убивает все кэшированные полномочия. В следующий раз, когда GSUDO будет запускать всплывающее окно UAC. -Обратите внимание # обнаружение раковины. Предположим, что Cmd Shell или Cmd {Command}. -Loadprofile # При повышении команд PowerShell, загрузите профиль пользователя. Другие параметры:-loglevel {val} # Установить минимальный уровень журнала для отображения: All, Debug, Info, Warning, Error, нет -Debug # включить режим отладки. -Copyns # подключить сетевые диски с повышенным пользователем. ПРЕДУПРЕЖДЕНИЕ: ПРОСМОТРИТЕЛЬНЫ -Copeev # (устарела) Копируйте переменные среды для повышенного процесса. (Не требуется в режиме консоли по умолчанию) --Chdir {dir} # Измените текущий каталог на {dir}, прежде чем запустить команду.
Примечание. Вы можете использовать в любом месте псевдоним sudo
, созданного установщиками.
Примеры:
GSUDO # поднимает текущую оболочку в текущем окне консоли (поддерживает CMD/PowerShell/PWSH Core/Yori/Take Command/Git -Bash/Cygwin) GSUDO -N # Запустите текущую оболочку, повышенную в новом консольном окне. ./Do-something.ps1 # запуск в новом окне и ждать, пока isitgsudo notepad %windir %system32diversetchosts # запуск windows appsudo notepad # sudo псевдоним встроенный # redirect/pipe вход/вывод/ошибка Пример GSUDO dir | findstr /c: "bytes free"> freespace.txt Gsudo config Loglevel "error" # Настройка пониженной подсказки конфигурации logginggSudo "$ p [uleted] $ g" # Настроить настраиваемое приглашение на конфигурацию поднятого приглашения Авто
gsudo
обнаруживает, если вы используете из PowerShell, и поднимает команды PS (если -d
не используется для повышения команд CMD).
Команда для поднятия будет работать в другом процессе, поэтому она не может получить доступ к родительским $variables
и сферу.
Чтобы поднять команды или блок сценария: оберните его в {Curly Brace} .
# Синтаксис: GSUDO {ScriptBlock} gsudo [options] {scriptblock} [-args $ argery1 [..., $ armeryn]];# Примеры: gsudo {worp-output "hello world"}# pass аргументы с -args $ mystring = "hello world" gsudo { Выписать-выпуск $ args [0]} -args $ mystring # вывод сериализуется как psobjects с свойствами. $ Services = gsudo {get-service 'wsearch', 'winmgmt'} Написать $ services.displayName# входы тоже: пример повышенной итерации списка. | gsudo {$ input.creationtime}
Альтернативные синтаксисы:
# ПРОДАТЬ ЗАДЕЛЕНИЯ (не переменные по ссылке), префиксируя `$ с использованием:`. Т.е. $ myString = "hello world" invoke-gsudo {write-output $ using: mystring} # Синтаксис: Invoke-Gsudo [-ScriptBlock] <ScriptBlock> [[-ArgumentList] <Object []>] [-InputObject <sobject>] [-Dultprofile | -Напрофиль] [-Credential <pscredential>]
- PowerShell function. - Performs auto serialization of inputs & outputs. - You can prefix variables with the `$using:` scope modifier (like `$using:variableName`) and their serialized value is applied. - Use `-LoadProfile` or `-NoProfile` to override profile loading or not. - Use `-Credential` option for Run As User (same as `-u` but for `Get-Credentials`). - Better forwarding of your current context to the elevated instance (current Location, $ErrorActionPreference)
Использование: gsudo 'String Literal'# переменные замены Пример: $ file = 'c: my secret.txt'; $ algorithm = 'md5'; $ hash = gsudo "(get -filehash '$ file' -algorithm $ algorithm) .hash"# или $ hash = gsudo "(get -filehash" "$ file" "-algorithm $ algorithm) .Hash "
Принимает строковую буквальную команду с командой для поднятия.
Возвращает список строк.
Необязательно: импортный модуль gsudoModule.psd1
в ваш профиль PowerShell:
# Добавьте следующую строку в свой импорт-модуль $ «gsudomodule»# или run: write-opput "` nimport-module `" gsudomodule` "" | Add-Content $ профиль
Для этого добавьте эту строку в ваш профиль (после импорта gsudoModule
):
SET-ALIAS ARMED GSUDOPROMPT
Если вы еще не настроили свою подсказку PowerShell (например, установив Oh-My-Posh), вы можете легко добавить красный #
, указывающий, что текущий процесс повышен:
Test-IsGsudoCacheAvailable
возвращает true, если активен кэш GSUDO (это означает, что повышение без UAC возможно).
Test-IsProcessElevated
: Возвращает True, если текущий процесс повышен.
Test-IsAdminMember
: возвращает True, если нынешний пользователь является членом групп Local Administrators
, что означает, что он может подняться.
Добавляет синтаксис автоматического полного в GSUDO в PowerShell. Кроме того, он предлагает 3 предыдущих команды, что делает ваш рабочий процесс более гладким, чем когда -либо!
Позволяет gsudo !!
На PowerShell, чтобы поднять последнюю выполненную команду.
Добавляет функции:
На WSL возвышение и root
- это разные понятия. root
разрешает полное управление WSL, но не системой Windows. Используйте нативную su
или sudo
от WSL, чтобы получить root
доступ. Чтобы получить привилегию администратора в окне Windows, вам нужно поднять процесс WSL.exe. gsudo
позволяет это (появится всплывающее окно UAC).
На WSL BASH придуйте gsudo
для поднятия команд WSL или gsudo -d
для команд CMD .
# elepate default shellpc: ~ $ gsudo # Запустите upted wsl commandpc: ~ $ gsudo mkdir/mnt/c/windows/myfolder# запустить upted windows commandpc: ~ $ gsudo -d notepad c:/windows/system32/drivers/etc/hosts ПК: ~ $ gsudo -d "Блокнот C: WindowsSystem32diversetchosts"# тест для GSUDO и Command SuccestReTval = $?; If [$ retval -eq 0]; тогда «успех»; elif [$ retval -eq $ ((999 % 256))]; Затем # GSUDO сбой код выхода (999) читается как 231 по команде WSL (999 MOD 256) Echo "GSUDO не удалось поднять!"; elseecho "не удалось с выходом с кодом выхода $ retval"; fi;
Gsudo config # Показать текущие настройки и значения конфигурации. Gsudo config {key} [-global] [value] # Читать или написать настройку пользователя Gsudo config {key} [--global]-reset # сброс конфигурации к значению по умолчанию -Глобал # влияет на всех пользователей (переопределяет настройки пользователей)
Credentials Cache
, если он включен и активен, позволяет увеличить несколько раз из родительского процесса только с одним всплывающим окном UAC. Через 5 минут без возвышений сеанс кэша закрывается автоматически (настраивается тайм -аут через gsudo config CacheDuration
).
Хотя это очень удобно, важно понять его потенциальные риски безопасности. Даже если сам GSUDO безопасен, присущая уязвимость заключается в процессе хоста. Если ваша система уже скомпрометирована в результате вредоносного процесса, она может манипулировать разрешенным процессом (например, CMD/PowerShell) и заставить активный экземпляр Gsudo Cache поднять привилегии без запуска подсказки UAC.
Этот риск является компромиссом для использования кеша учетных данных. Кэш безопасен для использования, если вы уверены, что в вашей системе нет вредоносных процессов.
Вот режимы Credentials Cache
:
Explicit:
(по умолчанию) на каждом возвышении показано всплывающее окно UAC, если не начинается сеанс кэша вручную ...
Чтобы запустить или остановить сеанс кэша: gsudo cache {on | off}
Это режим по умолчанию. (Используйте gsudo config CacheMode Explicit
чтобы вернуться к этому значению).
Auto:
похож на Unix-Sudo. Первая высота показывает всплывающее окно UAC и автоматически запускает сеанс кеша .
Запустите gsudo config CacheMode Auto
, чтобы использовать этот режим.
Disabled:
на каждом возвышении показано всплывающее окно UAC, и попытка запустить сеанс кеша, вынесет ошибку.
Запустить gsudo config CacheMode Disabled
для использования этого режима.
В любом случае, вы можете остановить все сеансы кеша с gsudo -k
.
Узнать больше
Повышенные экземпляры не имеют доступа к сетевым акциям, подключенным к невыполненному пространству. Это не проблема gsudo
, а то, как работает Windows. Используйте --copyNS
для воспроизведения сетевых акций в повышенный сеанс, но это не двунаправленное и интерактивное (может запрашивать пользователь/пароль).
gsudo.exe
может быть размещен на сетевой общей обмене и вызывает как serversharegsudo {command}
но не работает, если ваша текущая папка является сетевым диском. Например, не отображайте servershare
по Z:
а затем Z:>gsudo do-something
.
Пожалуйста, сообщите о проблемах в разделе «Проблемы».
Почему он называется gsudo
вместо просто sudo
?
Когда я создал gsudo
, были другие пакеты sudo
на большинстве менеджеров по популярным пакетам Windows, таких как Chocolatey
и Scoop
, поэтому у меня не было другого выбора, чтобы выбрать другое имя. Установщики gsudo
создают псевдоним для sudo
, поэтому не стесняйтесь использовать sudo
в вашей командной строке, чтобы вызвать gsudo
.
Почему вы мигрировали с .Net Framework 4.6
на .Net Core 7.0
?
Начиная с v1.4.0, он построен с использованием .Net 7.0
Nativeaot. Он загружается быстрее и использует меньше памяти и работает на машинах без какого -либо установленного времени выполнения .NET. Предыдущие версии <v1.3.0
использовали .NET 4.6, потому что он был включен в каждую установку Windows 10/11.
gsudo
порт *nix sudo
?
Нет. gsudo
напоминает об оригинальном SUDO относительно ожиданий пользователей. Многие функции sudo
являются *nix
-специфичными и никогда не могут иметь аналог Windows
. Другие функции (такие как sudoers
) потенциально могут быть реализованы, но не на данный момент.
Каковы требования? Это работает в Windows 7/8?
Это работает на Win7 SP1. Некоторые функции могут работать только в Windows 10/11, например, повышение как TrustEnstaller.
Как я могу вернуться на предыдущий уровень безопасности после использования GSUDO?
Так же, как и с Unix/Linux sudo
: gsudo
не изменяет текущий процесс, вместо этого он запускает новый процесс с различным уровнем разрешений/целостности. Чтобы вернуться на предыдущий уровень, просто закончите новый процесс. Для Command Prompt
или PowerShell
просто введите exit
.
Пожалуйста, дайте нам звезду!
Помогите распространить информацию, упомянув gsudo
в социальных сетях!
Спонсировать или пожертвовать