Команды
sudo в Linux: запуск команд от root, sudo -l и /etc/sudoers
sudo запускает команду от имени другого пользователя, обычно root. Права на это описаны в
/etc/sudoers, а каждый вызов записывается в журнал.
Основные команды
| Команда | Что делает |
|---|---|
sudo команда | выполнить от root (спросит ваш пароль) |
sudo -u postgres команда | от имени другого пользователя |
sudo -i | интерактивная оболочка root |
sudo -l | что мне разрешено запускать |
sudo -k | забыть сохранённый пароль (по умолчанию помнит ~15 минут) |
sudo !! | повторить предыдущую команду через sudo |
su - alice | переключиться на пользователя alice (спросит её пароль) |
/etc/sudoers
# пользователь хосты=(от кого) команды
alice ALL=(ALL:ALL) ALL
bob ALL=(root) /usr/bin/systemctl restart nginx
%admins ALL=(ALL) NOPASSWD: ALL
%admins— группа;NOPASSWD:— без запроса пароля;- дополнительные правила кладут в
/etc/sudoers.d/.
Редактируйте только через sudo visudo: он проверяет синтаксис. Ошибка в sudoers может отрезать
доступ к root.
Журнал
sudo: deploy : TTY=pts/1 ; PWD=/home/deploy ; USER=root ; COMMAND=/usr/bin/cat /etc/shadow
Записи лежат в /var/log/auth.log (Debian, Ubuntu) или /var/log/secure (RHEL). Неожиданные
команды через sudo — один из главных признаков взлома.
Опасные правила
Разрешение запускать «одну программу» через sudo — это root, если программа умеет запускать другие команды:
| Разрешено | Как получить оболочку root |
|---|---|
vim, less, man | :!/bin/bash, !sh |
find | sudo find . -exec /bin/sh \; -quit |
python3, perl, ruby | sudo python3 -c 'import os; os.system("/bin/sh")' |
tar, zip, git, awk | через параметры, запускающие команды |
| скрипт, доступный на запись | изменить скрипт |
Справочник таких приёмов — GTFOBins. Поэтому первая команда пентестера после получения
оболочки — sudo -l.
Правило защиты: разрешайте через sudo только конкретные команды с конкретными аргументами и никогда не разрешайте редакторы, интерпретаторы и программы, способные запускать другие команды.
Обновлено 20 октября 2026 г.