No history yet

Повышение привилегий

Путь к root: Повышение привилегий

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

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

Linux: su против sudo

В мире Linux есть два основных способа стать суперпользователем (часто называемым root).

Более старый подход — команда su (substitute user, или «заместить пользователя»). При вводе su без аргументов система попытается переключить вас на пользователя root и запросит его пароль. Это просто и прямолинейно, но не очень гибко и небезопасно, так как требует разглашения пароля root нескольким пользователям.

Современный и более безопасный метод — это sudo (superuser do, или «суперпользователь, сделай»). Эта команда позволяет выполнить одну конкретную команду с правами root, при этом запрашивая пароль вашего собственного пользователя. Главное преимущество sudo заключается в его гибкости, которая настраивается через специальный файл sudoers .

# Обновление списка пакетов с помощью sudo
sudo apt-get update
# Система запросит пароль пользователя 'your_user', а не 'root'.

sudo не только выполняет отдельные команды. Если вам нужен полноценный сеанс с правами root, можно использовать флаги -s или -i.

sudo -s запускает командную оболочку от имени root, но сохраняет переменные окружения вашего текущего пользователя (например, домашний каталог HOME останется прежним). sudo -i эмулирует полноценный вход в систему: запускается оболочка root и загружается его собственное окружение. Это более чистый способ «стать» root на время.

КомандаНазначениеТребуемый парольОкружение (переменные среды)
suПереключиться на пользователя rootПароль rootОкружение root
sudo командаВыполнить одну команду от имени rootПароль текущего пользователяОкружение текущего пользователя
sudo -sЗапустить оболочку от имени rootПароль текущего пользователяОкружение текущего пользователя
sudo -iЗапустить оболочку входа от имени rootПароль текущего пользователяОкружение root

Windows: RunAs и UAC

В Windows повышение привилегий тесно связано с механизмом User Account Control (UAC). Даже если вы вошли в систему как администратор, большинство программ по умолчанию запускаются с обычными правами. Когда приложению требуются права администратора, UAC показывает диалоговое окно с запросом подтверждения. Это защищает систему от несанкционированных изменений.

В командной строке (CMD или PowerShell) для запуска процесса от имени другого пользователя используется команда runas.

# Запуск блокнота от имени администратора на локальной машине
runas /user:Administrator notepad.exe

# Система запросит пароль для пользователя Administrator.

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

В PowerShell можно запустить новый процесс с правами администратора, используя Start-Process с параметром -Verb RunAs. Это программный аналог клика правой кнопкой мыши по иконке и выбора «Запуск от имени администратора».

# Запускает новый экземпляр PowerShell с правами администратора.
Start-Process powershell -Verb RunAs

Этот метод инициирует тот самый запрос UAC, который вы привыкли видеть в графическом интерфейсе. После подтверждения откроется новое окно PowerShell, уже обладающее полными административными правами.

Quiz Questions 1/4

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

Quiz Questions 2/4

В чем ключевое отличие команды sudo от su в Linux?