Что такое команда sudo в Linux?

«Что такое команда sudo в Linux?» — вопрос из категории Linux и командная строка, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

sudo (SuperUser DO) — команда в Linux и Unix-подобных системах, позволяющая выполнять другие команды с правами суперпользователя (root). Это основной инструмент для выполнения привилегированных операций без необходимости постоянного входа в систему под учетной записью root.

Ключевые аспекты для тестировщика:

  1. Безопасность и аудит: Все команды, выполненные через sudo, логируются (обычно в /var/log/auth.log или /var/log/secure). Это критично для расследования инцидентов. При тестировании систем, где используются скрипты с sudo, нужно проверять корректность логгирования.
  2. Настройка прав: Доступ на использование sudo настраивается в файле /etc/sudoers (редактируется через visudo). Можно ограничить пользователя выполнением только конкретных команд. Например, пользователь-тестировщик может иметь право только на перезапуск определенного сервиса:
    tester ALL=(ALL) /usr/bin/systemctl restart my_test_service
  3. Использование в скриптах и CI/CD: В скриптах автоматизации (например, для развертывания тестового стенда) часто требуется sudo. Важно обеспечить безопасную передачу пароля (например, через переменные окружения в защищенных пайплайнах) или настроить выполнение без пароля для конкретных команд.

Пример типичного сценария в работе:

# Установка инструментов, необходимых для тестирования (требует прав root)
sudo apt-get update
sudo apt-get install -y jmeter postgresql-client

# Просмотр логов приложения, которые доступны только root
sudo tail -f /var/log/myapp/error.log

# Изменение конфигурационного файла, принадлежащего root
sudo nano /etc/myapp/config.yaml

Альтернативы и связанные команды:

  • su — переключение на другого пользователя (по умолчанию на root), но требует знания пароля целевого пользователя.
  • sudo -i или sudo su — запуск интерактивной оболочки root.

Понимание sudo необходимо для работы с тестовыми средами, анализа логов и написания скриптов автоматизации.