Обзор sudo
В системах Linux пользователь root имеет все права. Однако выполнение всех задач от имени root может быть рискованным, поскольку это может привести к серьезным повреждениям системы. `sudo` — это важный механизм безопасности, который временно предоставляет обычным пользователям необходимые административные права, минимизируя риски безопасности и позволяя управлять системой.
Как работает sudo
`sudo` запрашивает у пользователя пароль (ваш собственный пароль, а не пароль root) при выполнении команды `sudo`, и если этот пароль правильный, выполняет соответствующую команду с правами root или другого пользователя в соответствии с правилами, определенными в файле `sudoers`. После авторизации вы можете использовать `sudo` без повторного ввода пароля в течение определенного времени (по умолчанию 5 минут).
Основные функции sudo
- **Укрепление безопасности**: предотвращает необходимость входа в учетную запись root, снижая риски безопасности.
- **Отслеживание ответственности**: все команды, выполненные через `sudo`, записываются в журнал, что позволяет отслеживать, кто и когда выполнил какую-либо административную команду.
- **Детализированный контроль прав**: файл `sudoers` позволяет точно контролировать, какие команды могут выполняться с правами root конкретными пользователями или группами.
- **Упрощение повторного ввода пароля**: после авторизации вы можете использовать `sudo` в течение определенного времени без ввода пароля, что удобно.
🔑 Файл sudoers
/etc/sudoers
Все настройки прав для `sudo` определяются в файле `/etc/sudoers`. Этот файл очень чувствителен, поэтому **обязательно используйте команду `visudo` для редактирования.** `visudo` автоматически проверяет синтаксис, предотвращая сбой функции `sudo` из-за неверных настроек.
Основные параметры команды sudo
Команда `sudo` может управлять способом выполнения команд с помощью различных параметров, помимо повышения прав.
1. Основное использование
2. Параметры, связанные с пользователем и оболочкой
3. Параметры, связанные с аутентификацией и списком
Сгенерированная команда:
Комбинируйте команды.
Описание:
`sudo` Запускает команду.
Комбинируйте эти опции, чтобы виртуально выполнять команды с помощью ИИ.
Настройки файла sudoers (использование visudo)
`sudo` права управляются файлом `/etc/sudoers`. Вместо того чтобы редактировать этот файл напрямую, его нужно безопасно редактировать с помощью команды `visudo`. `visudo` проверяет синтаксис, предотвращая повреждение функции `sudo` из-за ошибок.
Редактирование файла sudoers
sudo visudo
Безопасно редактирует файл `sudoers` с правами root. Основным редактором может быть `vi`.
Общий формат файла sudoers
Элементы файла `sudoers` определяются в формате `User Host=(RunAs) NOPASSWD: Command`. Наиболее распространенная настройка позволяет пользователям, входящим в определенную группу, выполнять все команды с правами `sudo`.
Примеры настроек
Вот несколько примеров настроек, которые часто встречаются в файле `sudoers`.
- `%sudo ALL=(ALL:ALL) ALL`: Разрешает всем пользователям, входящим в группу `sudo`, выполнять любые команды (ALL) от имени любого пользователя (ALL) и группы (ALL) на любом хосте (ALL). (Требуется пароль)
- `username ALL=(ALL) NOPASSWD: /usr/bin/apt update`: Разрешает пользователю `username` выполнять команду `apt update` с правами root без ввода пароля.
Примеры использования
Изучите различные примеры использования команды `sudo`, чтобы выполнять системные задачи с правами администратора.
Обновление пакетов системы
sudo apt update
Команда для обновления списка пакетов системы требует прав администратора, поэтому используется `sudo`.
Копирование файла в определенную директорию
sudo cp my_config.conf /etc/
Копирует файл `my_config.conf` в директорию `/etc/`, в которой обычно нет прав на запись.
Выполнение команды от имени другого пользователя
sudo -u www-data ls /var/www/html
Выполняет команду `ls /var/www/html` с правами пользователя `www-data` (обычно процесса веб-сервера), чтобы протестировать права доступа к файлам этого пользователя.
Переключение на оболочку root
sudo -i
Введите пароль текущего пользователя, чтобы получить оболочку, полностью переключенную на окружение пользователя root. После завершения работы вы можете ввести `exit`, чтобы вернуться к исходному пользователю.
Проверка прав sudo текущего пользователя
sudo -l
Проверьте, какие команды текущий вошедший пользователь может выполнять через `sudo`, и требуется ли для этого пароль.