sudo
superuser do · повышение привилегий в Unix
Что это
sudo (superuser do) — программа в Unix/Linux, позволяющая обычному пользователю выполнить команду с правами root (или другого пользователя), если это разрешено политикой в файле /etc/sudoers.
История
- ~1980 — написан Bob Coggeshall и Cliff Spencer в SUNY/Buffalo
- 1994 — сопровождение взял Todd C. Miller, активный мейнтейнер по сей день
- Часть стандартного набора почти всех дистрибутивов Linux/BSD/macOS
Как выглядит
sudo apt update
sudo systemctl restart nginx
sudo -u postgres psql
sudo -i # интерактивный shell как root
sudo -s # shell с сохранением окружения
sudoers
Файл /etc/sudoers задаёт, кто и что может. Редактируется через visudo (проверяет синтаксис перед сохранением, не даёт запороть систему).
# user hosts=(runas) commands
ivan ALL=(ALL) ALL
admin ALL=(ALL) NOPASSWD: /usr/bin/systemctl
Особенности
- Требует пароль твоего пользователя, не root'а
- Кэширует аутентификацию на 5-15 минут (настраивается)
- Пишет все команды в syslog / auth.log — аудит
- Поддерживает LDAP, SSSD, ролевые модели