No history yet

Механизмы повышения прав

Повышение прав в Linux

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

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

Например, для обновления списка пакетов в Debian-based дистрибутивах вы бы выполнили sudo apt update вместо того, чтобы сначала входить в сессию root.

Настройка sudo

Правила, определяющие, кто и какие команды может выполнять через sudo, хранятся в файле /etc/sudoers. Редактировать этот файл напрямую опасно: синтаксическая ошибка может заблокировать доступ к sudo для всех пользователей, и для исправления придется загружаться в однопользовательском режиме. Для безопасного редактирования используется специальная утилита — visudo.

# Запуск редактора для файла sudoers
sudo visudo

Внутри файла sudoers вы увидите строки, похожие на эту:

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin  ALL=(ALL) ALL

Здесь %admin ALL=(ALL) ALL означает, что любой пользователь из группы admin может выполнять любую команду от имени любого пользователя на любом хосте. Чтобы дать пользователю alex права на выполнение всех команд, нужно добавить строку: alex ALL=(ALL) ALL

По умолчанию, после ввода пароля sudo запоминает сессию на 15 минут. Это время можно изменить, добавив в sudoers строку Defaults timestamp_timeout=X, где X — время в минутах. Установка timestamp_timeout=0 заставит sudo запрашивать пароль при каждом вызове.

Повышение прав в Windows

В Windows также существует механизм для запуска программ от имени другого пользователя, включая администратора. Это знакомый многим пункт контекстного меню «Запуск от имени администратора». Его аналогом в командной строке является команда runas.

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

После выполнения этой команды система запросит пароль пользователя Administrator, и откроется новое окно командной строки с повышенными правами.

Lesson image

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

В PowerShell можно запустить процесс с повышенными правами с помощью команды Start-Process, используя параметр -Verb RunAs.

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

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

Quiz Questions 1/5

В чем заключается основной принцип наименьших привилегий?

Quiz Questions 2/5

Почему использование sudo считается более безопасным, чем прямой вход в систему под пользователем root?

Использование инструментов повышения прав вместо постоянной работы под суперпользователем — это ключевой навык для безопасного администрирования систем.