Microsoft внедрит в Windows 11 поддержку команд sudo, использующихся в других системах на базе Unix, вроде Linux и macOS. С ее помощью можно запускать приложения с повышенными привилегиями безопасности и выполнять задачи администрирования системы. Такое нововведение символизирует углубление интеграции Windows с Linux, также открывает новые возможности для разработчиков.
Как сообщает 3DNews, в проекте, находящемся на стадии разработки и тестирования последних Canary-сборок Windows 11, предусматривается три режима запуска команд: в новом окне, с отключенным вводом и встроенный режим. Для воспроизведения функционала традиционной команды sudo используется именно встроенный режим, тем самым он позволяет выполнять команды с повышенными привилегиями без необходимости запуска отдельной сессии.
Продакт-менеджер Microsoft Джорди Адуми отметил, что внедрение команды sudo является ответом на запросы разработчиков, стремящихся к более эффективной работе с инструментами разработки. В скором времени планируется как расширить документацию по применению команды sudo в Windows, так и предоставить дополнительную информацию о безопасности ее использования в разных конфигурациях.
В свою очередь, добавление команды sudo в Windows 11 является шагом Microsoft в направлении интеграции своей ОС с Linux, начиная от включения полноценного Linux-ядра в Windows 10, интеграции Bash-оболочки и встроенного OpenSSH, заканчивая предложениями Linux-дистрибутивов Ubuntu, SUSE и Fedora в Windows.
Если человек настраивает сервер, это не новость; новость – если сервер настраивает человека.
Новый подкаст от Timeweb
Самое интересное в обзорах
Источник изображения: 3dnews.ru
Ключ к пониманию этого инновационного шага лежит в особенностях реализации команды sudo в рамках Windows. Проект, находящийся в стадии активной разработки и тестирования в последних Canary-сборках Windows 11, предусматривает три режима запуска команд: в новом окне, с отключённым вводом и встроенный режим. Именно встроенный режим наиболее тесно воспроизводит функциональность традиционной команды sudo, позволяя выполнять команды с повышенными привилегиями без необходимости запуска отдельной сессии.
Джорди Адуми (Jordi Adoumie), продукт-менеджер Microsoft, подчеркнул, что внедрение команды sudo является ответом на запросы разработчиков, стремящихся к более гладкому и эффективному процессу работы с инструментами разработки. В ближайшие месяцы компания планирует не только расширить документацию по использованию sudo в Windows, но и предоставить дополнительные сведения о безопасности использования этой команды в различных конфигурациях.
Sudo можно будет контролировать в настройках разработчика в будущей версии Windows 11 (источник изображения: Microsoft)
Появление кода проекта sudo на GitHub является ещё одним шагом Microsoft к поддержке открытого исходного кода и тесному сотрудничеству с разработчиками. Это отражает стремление компании к прозрачности и вовлечению сообщества в усовершенствование инструментов, которые формируют будущее разработки ПО.
Добавление команды sudo в Windows 11 — это очередная инициатива Microsoft по интеграции своей ОС с Linux, начиная с включения полноценного Linux-ядра в Windows 10, интеграции Bash-оболочки, встроенного OpenSSH, до предложения Linux-дистрибутивов Ubuntu, SUSE и Fedora в Windows.
Эти шаги не только стирают границы между различными ОС, но и открывают перед разработчиками безграничные возможности для создания, тестирования и развёртывания своих приложений в универсальной и гибкой среде. В целом, интеграция Unix-команды sudo в Windows 11 показывает готовность Microsoft к интеграции лучших практик и инструментов, зарекомендовавших себя в мире Linux и Unix.
Если вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.
Самые обсуждаемые публикации
В Windows 11 в обозримом будущем может появиться встроенная поддержка выполнения команд с автоматическим кратковременным повышением прав до суперпользователя. В Linux есть похожая команда – Sudo, и именно она может быть внедрена в Windows 11 в одной из ближайших сборок.
Была Windows, стал Linux
Пример использования Sudo в Linux
Microsoft, судя по всему, решила не отставать от конкурентов. Поддержка Sudo будет добавлена в привычный инструментарий Windows – в командную строку выполнения команд и оболочку PowerShell.
Никаких подробностей
Как именно будет функционировать Sudo в составе Windows с использованием ее посредством командной строки и утилиты PowerShell, к моменту выхода материала известно не было. Возможно, поддержка команды станет частью именно самой Windows 11, или же она каким-либо образом будет связана с подсистемой Windows Subsystem for Linux, появившейся весной 2019 г. и позволяющей запускать Linux-приложения и даже Linux-дистрибутивы непосредственно из-под Windows.
Microsoft хранит молчание, бета-тестеры, имеющие доступ к ранним сборкам Windows – тоже. Нововведение, похоже, достанется только Windows 11 – ее предшественница (Windows 10), явившая миру подсистему WSL, с весны 2023 г. не получает обновления функциональности.
Код уже готов
Зачем Microsoft понадобилась поддержка Sudo в Windows, пока неясно
Xeno утверждает, что нашел в коде следующие строки: SystemSettings_Developer_Mode_Setting_Sudo, Enable sudo, Enable the sudo command и Configure how sudo runs applications. Как именно он их обнаружил, Xeno не уточнил.
Откуда в Windows суперпользователь
Если предположить, что поддержку Sudo Microsoft встроит в Windows 11 без связи с подсистемой WSL, то, получится, что она продублирует уже имеющуюся в системе аналогичную возможность. В современных Windows есть пользователь «Администратор», учетная запись которого по умолчанию отключена. «Администратор» обладает существенно большим набором прав в системе по сравнению с обычным пользователем, а в Windows есть опция запуска любой программы от имени «Администратора».
Все уже придумано заранее
В утилите PowerShell аналогичное действие выполняется при помощи команды start-process. Пример: start-process “C:\Program Files\Google\Chrome\Application\chrome.exe” –verb runas.
Олег Лексин, начальник ИТ-службы Fix Price в интервью CNews: В первую очередь ритейлерам не хватает российской ERP-системы
Также можно вручную активировать в системе профиль «Администратор» использовать его в качестве основной учетной записи.
Активированная учетная запись «Администратор» в Windows 11 22H2
В этом случае команда «запустить от имени Администратора» больше никогда не потребуется.
Часто приходится переключаться между разными операционными системами во время работы. Чтобы не запоминать множество команд, я использую шпаргалку с основными командами, которой решил поделиться с вами.
В ней вы найдете основные команды для работы в терминале Windows, Linux и macOS. Также описаны базовые команды по работе с Systemctl, VirtualEnv и Git.
Основные команды
Удаление папки
rmdir /s /q папка_для_удаления
Linux и macOS:
rm -rf папка_для_удаления
Создание папки
mkdir новая_папка
Linux и macOS:
mkdir новая_папка
Создание виртуального окружения python через venv
python -m venv venv
Linux и macOS:
python3 -m venv venv
Виртуальное окружение python через venv
venv на Windows идет “из коробки”. Для установки на Linux и macOS возможно потребуется ввести команды:
sudo apt install -y python3-venv
sudo apt install -y build-essential libssl-dev libffi-dev python3-dev
Активация на Windows:
venv\Scripts\activate
Активация на Linux и macOS:
source venv/bin/activate
Деактивация (Linux, macOS и Windows):
deactivate
Команды Git
Инициация Git репозитория
git init
Привязка удаленного репозитория
git remote add origin ссылка_на_репозиторий
Отвязываем репозиторий
git remote rm origin ссылка_на_репозиторий
Привязываем другой репозиторий
git remote set-url origin git@github.com:username/projectname.git
Установка ветки по умолчанию
git config --global init.defaultBranch main
Клонирование репозитория
git clone ссылка_на_репозиторий
Просмотр состояния репозитория
git status
Добавление файлов в индекс
git add имя_файла_или_папки
Коммит изменений
git commit -m "сообщение коммита"
Обновление локального репозитория (pull)
git pull origin main
Отправка изменений в удаленный репозиторий (push)
git push origin main
Создание новой ветки и переключение на нее
git checkout -b новая_ветка
Просмотр списка веток
git branch
Переключение на существующую ветку
git checkout имя_ветки
Слияние веток
git merge имя_ветки
Создание репозитория на GitHub через командную строку
Для этого нужно использовать GitHub CLI. Сначала установите его, а затем выполните следующие команды:
Установка GitHub CLI
Windows (через winget):
winget install --id GitHub.cli
macOS (через Homebrew):
brew install gh
Linux (через пакетный менеджер):
Пример для Ubuntu:
sudo apt install gh
Авторизация в GitHub CLI
gh auth login
Создание репозитория
gh repo create имя_репозитория --public
gh repo create имя_репозитория --private
Другие полезные команды для Shell
Просмотр содержимого текущей директории
dir
Linux и macOS:
ls
Переключение директории
cd путь_к_папке
Копирование файлов
copy исходный_файл целевой_файл
Linux и macOS:
cp исходный_файл целевой_файл
Перемещение файлов
move исходный_файл целевой_файл
Linux и macOS:
mv исходный_файл целевой_файл
Вывод содержимого файла
type имя_файла
Linux и macOS:
cat имя_файла
Создание и редактирование файлов
echo текст > имя_файла
notepad имя_файла
Linux и macOS:
echo "текст" > имя_файла
nano имя_файла
Блок терминальных команд для Ubuntu (использую чаще всего)
Обновление и установка программного обеспечения
Обновление списка пакетов
sudo apt update
Эта команда обновляет список доступных пакетов и их версий, но не устанавливает и не обновляет никаких пакетов.
Обновление установленных пакетов
sudo apt upgrade
Эта команда обновляет все установленные пакеты до самых новых версий, которые доступны в репозиториях.
sudo apt install <имя_пакета>
Эта команда устанавливает указанный пакет. Например, чтобы установить браузер Firefox, выполните:
sudo apt install firefox
sudo apt remove <имя_пакета>
Эта команда удаляет указанный пакет, но сохраняет его конфигурационные файлы.
Полное удаление пакетов
sudo apt purge <имя_пакета>
Эта команда удаляет указанный пакет вместе с его конфигурационными файлами.
Очистка ненужных пакетов
sudo apt autoremove
Эта команда удаляет ненужные пакеты, которые были установлены как зависимости и больше не требуются.
Управление системными службами
sudo systemctl start <имя_службы>
Эта команда запускает указанную службу. Например:
sudo systemctl start apache2
sudo systemctl stop <имя_службы>
sudo systemctl restart <имя_службы>
Проверка статуса службы
sudo systemctl status <имя_службы>
Включение службы при загрузке
sudo systemctl enable <имя_службы>
Отключение службы при загрузке
sudo systemctl disable <имя_службы>
Не забудьте добавить эту шпаргалку в закладки и оценить ее лайком, если она оказалась полезной для вас.
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
Для пользователя Linux командная строка Windows кажется чем-то непривычным и неудобным. С появлением WSL казалось, что проблема использования Bash решена, но запуск виртуальной машины требует времени, да и пути в WSL отличаются от Windows. Плюс скорость файловых операций на виртуальной машине хуже.
Ещё есть возможность использовать Bash через MSYS2, но мне хотелось найти что-то более компактное и легковесное, а также простое в настройке и установке.
Так как я часто использовал Linux на роутерах, то познакомился с BusyBox, набор UNIX-утилит командной строки, используемой в качестве основного интерфейса во встраиваемых операционных системах. Оказалось, есть версия BusyBox для Windows. В 2020 году появился Windows Terminal, а в нем есть возможность создавать вкладку с запуском конкретной программы.

Сложив эти два факта, пришла очевидная мысль, использовать BusyBox, содержащий в себе Bash, в Windows Terminal как отдельную консоль.


У этого подхода был один минус, при запуске терминала не из конкретной папки, а из ярлыка на рабочем столе или из панели задач.

То адрес рабочей папки был C:/Windows/System32
, и если случайно ввести команду удаления или создания файла, то мы портим важную системную папку. Обойти возможно используя аналог .bashrc
или /etc/profile
или .profile
.

Но просто создать файл .profile
мало, BusyBox для Windows их не считывает, для этого необходимо добавить путь к этому файлу в ENV
в “Переменные среды”.

Теперь мы можем написать скрипт, который будет настраивать рабочую директорию при запуске консоли.
#!/bin/bash
domain=$(echo $PWD | tr '[:upper:]' '[:lower:]')
if [ $domain = "c:/windows/system32" ]; then
cd $HOME
fi
Теперь если мы запустили терминал из ярлыка или панели задач, то рабочей директорией по умолчанию становится домашняя папка пользователя, а если мы запускаем из конкретной папки то, она и становится рабочей директорией.
Мы получили Bash в Windows Terminal с удобной начальной директорией.