GROG.sudo
Sudo
Роль для управления sudo.
Эта роль использует sudoers.d для управления возможностями sudo ваших пользователей. У каждого пользователя есть свой файл в sudoers.d. Это означает, что роль может использоваться из нескольких ролей для добавления и управления новыми пользователями, не мешая другим пользователям и ролям.
Однако значения по умолчанию и псевдонимы могут управляться только из одного места и не должны указываться, если вы добавляете эту роль в зависимости вашей роли.
Следующие роли были разработаны, чтобы удобно работать вместе с этой ролью:
- user, для управления пользователями.
- authorized-key, для управления авторизованными ключами.
Роль management-user объединяет все эти роли в одну, легко используемую роль.
Требования
- Хосты должны быть подготовлены для использования ansible (иметь python и т.д.)
- Права суперпользователя, т.е.
become: yes
Переменные роли
Переменная | Описание | Значение по умолчанию |
---|---|---|
sudo_package |
Установить sudo, если он не доступен | yes |
sudo_list |
Список пользователей и их настроек sudo (см. детали!) | [] |
sudo_list_host |
Список пользователей и их настроек sudo (см. детали!) | [] |
sudo_list_group |
Список групп и их настроек sudo (см. детали!) | [] |
sudo_grouplist |
Список групп и их настроек sudo (см. детали!) | [] |
sudo_grouplist_host |
Список групп и их настроек sudo (см. детали!) | [] |
sudo_grouplist_group |
Список групп и их настроек sudo (см. детали!) | [] |
sudo_default_sudoers |
Восстановить оригинальный файл sudoers при изменениях? | no |
sudo_default_sudoers_src_path |
Путь (локальный) к оригинальному файлу sudoers | путь к включенному файлу по умолчанию |
sudo_defaults |
Список значений по умолчанию (см. детали!) | [] |
sudo_host_aliases |
Список псевдонимов хостов (см. детали!) | [] |
sudo_user_aliases |
Список псевдонимов пользователей (см. детали!) | [] |
sudo_runas_aliases |
Список псевдонимов run as (см. детали!) | [] |
sudo_cmnd_aliases |
Список псевдонимов команд (см. детали!) | [] |
sudo_sudoersd_dir |
Каталог sudoers.d | '/etc/sudoers.d' |
sudo_sudoersd_owner |
Владелец каталогов и файлов | 'root' |
sudo_sudoersd_group |
Группа каталогов и файлов | 'root' |
Подробности о sudo_defaults
Значения по умолчанию для sudo можно указать в виде простого списка или словаря. Использование более сложной нотации словаря позволяет применять фильтры к значениям по умолчанию. Обе версии могут быть объединены.
Каждый элемент в словаре может иметь следующие атрибуты:
Переменная | Описание | Обязательный | По умолчанию |
---|---|---|---|
params |
флаги, целочисленные значения, строки или списки | да | / |
filter |
фильтр пользователя (: ), хоста (@ ), команды (! ) или runas (> ) |
нет | / |
Пример sudo_defaults
# Простая версия
sudo_defaults:
- env_reset
- mail_badpass
# Расширенная версия
sudo_defaults:
- env_reset
- mail_badpass
- filter: '!LOG_VIEWERS'
params: 'noexec'
- filter: '@localhost'
params: '!requiretty'
Подробности о sudo_list
sudo_list
, sudo_list_host
и sudo_list_group
объединяются при управлении настройками sudo. Вы можете использовать списки хостов и групп, чтобы указать настройки пользователей для каждого хоста или группы хостов. Переменные sudo_grouplist
работают аналогично, но для настроек sudo на основе группы (название будет начинаться с %
).
Каждый элемент в списке должен иметь name
и, при желании, список правил sudo
и переменную sudoers_file
, чтобы указать пользовательское имя файла. Таким образом, вы можете использовать тот же список, который передаете в вашу роль управления пользователями.
Если вы хотите удалить элемент sudo пользователя/группы из системы, добавьте state: absent
к элементу. Это обеспечит удаление соответствующего sudoers_file
из системы. Просто удаление элемента из _list
оставит файл в состоянии без управления, из-за чего старое правило останется в силе.
sudo_list:
- name: root
other_setting: 'это нормально'
sudo:
- '...'
- name: user1
sudoers_file: custom
sudo:
- '...'
- name: user3
state: absent
Список sudo
позволяет вам определить одно или несколько правил sudo. Возможные атрибуты для каждого элемента списка:
Переменная | Описание | Обязательный | По умолчанию |
---|---|---|---|
hosts |
Хосты | да | / |
as |
Операторы | нет | / |
commands |
Команды | да | / |
nopasswd |
Флаг NOPASSWD | нет | no |
passwd |
Флаг PASSWD | нет | no |
noexec |
Флаг NOEXEC | нет | no |
exec |
Флаг EXEC | нет | no |
nosetenv |
Флаг NOSETENV | нет | no |
setenv |
Флаг SETENV | нет | no |
nologinput |
Флаг NOLOG_INPUT | нет | no |
loginput |
Флаг LOG_INPUT | нет | no |
nologoutput |
Флаг NOLOG_OUTPUT | нет | no |
logoutput |
Флаг LOG_OUTPUT | нет | no |
Пример sudo_list
sudo_list:
- name: root
sudo:
hosts: ALL
as: ALL:ALL
commands: ALL
- name: user1
- name: user3
sudo:
- hosts: ALL
as: root
commands: /usr/sbin/poweroff
- hosts: ALL
commands: /usr/sbin/reboot
nopasswd: yes
- hosts: ALL
as: ALL
commands: /usr/sbin/less
noexec: yes
sudo_grouplist:
- name: group1
sudoers_file: 50custom-group-rules
sudo:
hosts: ALL
as: ALL
commands: ALL
nopasswd: yes
Подробности о псевдонимах sudo_***_aliases
Списки псевдонимов позволяют вам указать несколько псевдонимов. Каждый элемент в списке имеет имя и псевдоним.
Переменная | Описание | Обязательный | По умолчанию |
---|---|---|---|
name |
Имя псевдонима | да | / |
alias |
Псевдоним | да | / |
Пример sudo_***_aliases
sudo_cmnd_aliases:
- name: POWER
alias: 'shutdown, reboot'
- name: APT
alias: 'apt-get'
sudo_user_aliases:
- name: EXPAMPLE2
alias: 'user1, user2, user3'
Зависимости
Пример плейбука
---
- hosts: servers
roles:
- role: GROG.sudo
become: yes
Внутри group_vars/servers.yml
:
sudo_list_group:
- name: user
sudo:
hosts: ALL
as: ALL
commands: ALL
Вклад
Все идеи, изменения или предложения приветствуются!
Автор
Лицензия
MIT
ansible-galaxy install GROG.sudo