GROG.sudo

Sudo

Ansible Galaxy Статус сборки Последний тег Чат Gitter

Роль для управления 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

О проекте

A role for managing sudo.

Установить
ansible-galaxy install GROG.sudo
Лицензия
mit
Загрузки
205.9k
Владелец
Open Source Science and Technology