Файл `sudoers` — это конфигурационный файл системы Linux, который управляет правами доступа пользователей к командам с использованием утилиты `sudo`. Этот файл определяет, кто может выполнять какие команды с повышенными привилегиями и при каких условиях.
### Устройство файла sudoers
Файл `sudoers` находится по адресу `/etc/sudoers` и должен редактироваться с помощью утилиты `visudo`, которая проверяет синтаксис файла перед сохранением. Это помогает избежать ошибок, которые могут заблокировать доступ к `sudo`.
#### Основные составляющие конфигурации в файле sudoers:
1. **Строки с правами доступа пользователей**:
- Формат: `user host = (runas) command`
- `user` — имя пользователя или группа пользователей.
- `host` — имя хоста (обычно это `ALL`, что означает любой хост).
- `runas` — имя пользователя, от имени которого будет выполняться команда (можно указать `ALL`).
- `command` — команда или набор команд, которые может выполнять пользователь.
2. **Alias'ы**:
- Можно определить алиасы для пользователей, групп, хостов и команд, что упрощает управление правами.
3. **Комментарии**:
- В `sudoers` можно оставлять комментарии с помощью символа `#`.
### Пример прав для пользователя `postgres`
Если вы хотите предоставить пользователю `postgres` возможность выполнять любые команды от имени администратора, вы можете добавить следующую строку в файл `sudoers`:
```bash
postgres ALL=(ALL) ALL
```
Этот пример позволяет пользователю `postgres` выполнять любые команды (`ALL`) на любом хосте (`ALL`) от имени любого пользователя (`(ALL)`).
#### Более ограниченный доступ
Если вам нужно предоставить доступ только к определенным командам, например, к командам PostgreSQL, это может выглядеть так:
```bash
postgres ALL=(ALL) /usr/bin/systemctl restart postgresql, /usr/bin/systemctl start postgresql, /usr/bin/systemctl stop postgresql
```
### Полезные ссылки
Для более детального изучения конфигурации файла `sudoers` и создания более сложных правил, вы можете обратиться к официальной документации `sudo`:
- [Sudoers manual](https://www.sudo.ws/man/1.8.31/sudoers.man.html)
Также есть многие практические руководства и блоги на тему конфигурации `sudo` и `sudoers`, которые могут помочь вам разобраться.