ahuffman.sudoers
ahuffman.sudoers
Steuert die Konfiguration der standardmäßigen Datei /etc/sudoers
sowie enthaltene Dateien und Verzeichnisse.
Bitte beachten: Version 2.0.0+ ist eine umfassende Neugestaltung der Rolle. Lesen Sie die Dokumentation, um sicherzustellen, dass Sie die Änderungen vor der Installation und Nutzung verstehen, insbesondere wenn Sie von vorherigen Versionen kommen.
Inhaltsverzeichnis
- Inhaltsverzeichnis
- Tipps
- Rollenvariablen
- Felder des sudoers_files-Dictionaries
- Automatisches Generieren der Sudoers-Dateien aus einer bestehenden Konfiguration
- Beispiel-Playbooks
- Lizenz
- Autoreninformation
Tipps
Tipp: Hier sind einige hervorragende Ressourcen zur Konfiguration von sudoers: |
---|
Hier starten - Bietet eine großartige Übersicht über grundlegende Konfigurationen und Begriffe zu sudoers. |
Sudoers-Handbuch - Wenn Sie alle Details wissen möchten, ist das für Sie. |
Rollenvariablen
Die Standardwerte für diese Rolle basieren auf einer Standard-RHEL7.6-Konfiguration der Datei /etc/sudoers
. Bitte überprüfen Sie die Standardwerte in defaults/main.yml
, bevor Sie sie für die Betriebssystemkompatibilität ausführen.
Variablenname | Beschreibung | Standardwert | Variablentyp |
---|---|---|---|
sudoers_rewrite_default_sudoers_file | Verwenden Sie die standardmäßigen oder benutzerdefinierten Definitionen für sudoers_files , um Ihre gelieferte /etc/sudoers -Datei zu ersetzen. Nützlich, wenn Sie neue Konfigurationsdateien in die include_directories bereitstellen möchten, ohne die Datei /etc/sudoers zu ändern. |
True | boolean |
sudoers_remove_unauthorized_included_files | Sehr gefährlich! Jede vorhandene sudoer-Datei in dem include_directories -Dictionary, die nicht in den sudoers_files definiert ist, wird entfernt. Dies ermöglicht die Durchsetzung eines gewünschten Zustands. |
False | boolean |
sudoers_backup | Ob eine Sicherung des aktuellen Zustands der bestehenden Datei /etc/sudoers sowie von in sudoers_files definierten Dateien erstellt werden soll. Die Dateien werden auf dem Ansible-Steuerknoten (Server, von dem Sie Ansible ausführen) gesichert, um zu vermeiden, dass versehentlich Dateien in Ihren include_directories zurückgelassen werden, die von den sudoers-Konfiguration(en) ausgewertet werden können. |
True | boolean |
sudoers_backup_path | Pfad relativ zu dem Ort, an dem Sie Ihr Playbook ausführen, um die Remote-Kopien der definierten sudoers_files zu sichern. |
"sudoers_backups" | string |
sudoers_backup_become | Ob sudo verwendet werden soll, wenn das lokale Verzeichnis für Backups von sudoers und die Backups der sudoers-Dateien erstellt werden. | True | boolean |
sudoers_visudo_path | Vollständiger Pfad zur visudo -Binärdatei, die für die Validierung von Änderungen in der sudoers-Konfiguration erforderlich ist. Hinzugefügt für die Betriebssystemkompatibilität. |
"/usr/sbin/visudo" | string |
sudoers_files | Definition aller Ihrer sudoers-Konfigurationen | siehe defaults/main.yml | Liste von Dictionaries |
Felder des sudoers_files-Dictionaries
Variablenname | Beschreibung | Variablentyp |
---|---|---|
path | Wo die Konfigurationsdatei im Dateisystem bereitgestellt werden soll. | string |
aliases | Optionale Definition von cmnd_alias , host_alias , runas_alias oder user_alias -Elementen. |
dictionary |
defaults | Ermöglicht Ihnen die Definition der Defaults Ihrer sudoers-Konfiguration. Standardüberschreibungen können über den user_specifications -Schlüssel erfolgen. |
Liste |
include_files | Optionale spezifische Dateien, die in Ihre Konfiguration einbezogen werden sollen. Dies ist eine Liste von vollständig qualifizierten Pfaden, die über die #include -Option einer sudoers-Konfiguration einbezogen werden. |
Liste |
include_directories | Optionale spezifische Verzeichnisse, die Sie in Ihre Konfiguration einbeziehen möchten. Dies ist eine Liste von vollständig qualifizierten Pfaden zu Verzeichnissen, die über die #includedir -Option einer sudoers-Konfiguration einbezogen werden. |
Liste |
user_specifications | Liste von Benutzerspezifikationen und Standardüberschreibungen, die auf eine sudoers-Dateikonfiguration anzuwenden sind. | Liste |
Felder des sudoers_files.aliases-Dictionaries
Variablenname | Beschreibung | Variablentyp |
---|---|---|
cmnd_alias | Liste der Definitionen für Befehlsalias. | Liste von Dictionaries |
host_alias | Liste der Definitionen für Hostalias | Liste von Dictionaries |
runas_alias | Liste der Definitionen für den Benutzer, unter dem ausgeführt werden soll | Liste von Dictionaries |
user_alias | Liste der Definitionen für Benutzeralias | Liste von Dictionaries |
Felder des cmnd_alias-Dictionaries
Variablenname | Beschreibung | Variablentyp |
---|---|---|
name | Name des Befehlsalias. | string |
commands | Liste der Befehle, die auf das Alias angewendet werden sollen | Liste |
Felder des host_alias-Dictionaries
Variablenname | Beschreibung | Variablentyp |
---|---|---|
name | Name des Hostalias. | string |
hosts | Liste der Hosts, die auf das Alias angewendet werden sollen | Liste |
Felder des runas_alias-Dictionaries
Variablenname | Beschreibung | Variablentyp |
---|---|---|
name | Name des runas-Alias | string |
users | Liste der Benutzer, die auf das Alias angewendet werden sollen | Liste |
Felder des user_alias-Dictionaries
Variablenname | Beschreibung | Variablentyp |
---|---|---|
name | Name des user_alias | string |
users | Liste der Benutzer, die auf das Alias angewendet werden sollen | Liste |
Felder des user_specifications-Dictionaries
Dieses Dictionary kann verwendet werden, um entweder Benutzerspezifikationen oder Standardüberschreibungen zuzuweisen.
Standard-Benutzerspezifikationen
Variablenname | Beschreibung | Variablentyp |
---|---|---|
users | Liste der Benutzer, auf die die Spezifikation angewendet werden soll. Sie können sowohl einen user_alias -Namen als auch Benutzernamen verwenden. |
Liste |
hosts | Liste der Hosts, auf die die Spezifikation angewendet werden soll. Sie können sowohl einen definierten host_alias -Namen als auch Hostnamen verwenden. |
Liste |
operators | Liste der Operatoren, auf die die Spezifikation angewendet werden soll. Sie können sowohl einen definierten runas_alias -Namen als auch Benutzernamen verwenden. |
Liste |
selinux_role | Optionale SELinux-Rolle, die auf die Spezifikation angewendet werden soll | Liste |
selinux_type | Optionaler SELinux-Typ, der auf die Spezifikation angewendet werden soll | Liste |
solaris_privs | Optionale Solaris-Privilegien, die auf die Spezifikation angewendet werden sollen | Liste |
solaris_limitprivs | Optionale Solaris-Privilegien, die auf die Spezifikation angewendet werden sollen | Liste |
tags | Optionale Liste von Tags, die auf die Spezifikation angewendet werden sollen. | Liste |
commands | Liste der Befehle, auf die die Spezifikation angewendet werden soll. Sie können sowohl einen definierten cmnd_alias -Namen als auch Befehle verwenden. |
Liste |
Standardüberschreibung von Benutzerspezifikationen
Variablenname | Beschreibung | Variablentyp |
---|---|---|
defaults | Liste der Standards, die aus der Hauptkonfiguration überschrieben werden sollen | Liste |
type | Typ des zu überschreibenden Standards, dies beeinflusst den Operator in der Konfiguration (host -> @ , user -> : , command -> ! , und runas -> > ). Das Typ-Feld kann einen der folgenden Werte haben: command , host , runas oder user . |
string |
commands | Verwenden Sie, wenn type: "command" . Liste von cmnd_alias -Namen sowie Befehlen zur Überschreibung bestimmter Standardwerte. |
Liste |
hosts | Verwenden Sie, wenn type: "host" . Liste von host_alias -Namen sowie einzelnen Hostnamen zur Überschreibung bestimmter Standardwerte. |
Liste |
operators | Verwenden Sie, wenn type: "runas" . Liste von runas_alias -Namen sowie einzelnen Benutzernamen zur Überschreibung bestimmter Standardwerte. |
Liste |
users | Verwenden Sie, wenn type: "user" . Liste von user_alias -Namen sowie einzelnen Benutzernamen zur Überschreibung bestimmter Standardwerte. |
Liste |
Automatisches Generieren der Sudoers-Dateien aus einer bestehenden Konfiguration
Klingt das alles viel zu kompliziert, um es aus der Dokumentation zu konfigurieren? Bitte probieren Sie ahuffman.scan_sudoers aus, um eine Rolle zu finden, die die richtige Datenstruktur für Sie automatisch generieren kann. Mit der Rolle ahuffman.scan_sudoers können Sie eine laufende Konfiguration in einem Play erfassen und in einem anderen mit der Rolle ahuffman.sudoers (Version 2.0.0+) anwenden. Sie können auch die gesammelten Daten in eine Quelle der Wahrheit wie eine CMDB oder ein Repository via Automatisierung einpflegen. Die gesammelten Daten, die von ahuffman.scan_sudoers erzeugt werden, können von ahuffman.sudoers konsumiert werden: {{ ansible_facts['sudoers'].sudoers_files }}
.
Dies sollte helfen, einige der Komplikationen bei der manuellen Definition der sudoers-Konfigurationen als Code zu verringern und Sie viel schneller in Betrieb zu nehmen.
Siehe das Beispiel-Playbook unten.
Beispiel-Playbooks
RHEL7.6 Standard-Sudoers-Konfiguration
- name: "RHEL7.6 Standard /etc/sudoers-Konfiguration anwenden"
hosts: "alle"
roles:
- role: "ahuffman.sudoers"
...oder mit moderner Syntax:
- name: "RHEL7.6 Standard /etc/sudoers-Konfiguration anwenden"
hosts: "alle"
tasks:
- name: "Konfigurieren von /etc/sudoers"
include_role:
name: "ahuffman.sudoers"
Ergebnisse: /etc/sudoers
Die obigen beiden Beispiele, die die Standardwerte der Rolle verwenden, erzeugen eine Konfigurationsdatei /etc/sudoers
, die folgendermaßen aussieht:
# Von Ansible verwaltet
# Standard-Spezifikationen
Defaults !visiblepw
Defaults always_set_home
Defaults match_group_by_gid
Defaults always_query_group_plugin
Defaults env_reset
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR"
Defaults env_keep += "LS_COLORS MAIL PS1 PS2 QTDIR"
Defaults env_keep += "USERNAME LANG LC_ADDRESS LC_CTYPE LC_COLLATE"
Defaults env_keep += "LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME"
Defaults env_keep += "LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL"
Defaults env_keep += "LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
# Benutzerspezifikationen
root ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
# Includes
## Include-Verzeichnisse
#includedir /etc/sudoers.d
Sudoers-Konfiguration (mehrere Dateien)
- name: "Mehrfache Sudoers-Konfiguration anwenden"
hosts: "alle"
tasks:
- name: "Konfigurieren von /etc/sudoers und enthaltenen Dateien"
include_role:
name: "ahuffman.sudoers"
vars:
sudoers_rewrite_default_sudoers_file: True
sudoers_remove_unauthorized_included_files: True
sudoers_backup: True
sudoers_backup_path: "sudoers-backups"
sudoers_files:
- path: "/etc/sudoers"
defaults:
- "!visiblepw"
- "always_set_home"
- "match_group_by_gid"
- "always_query_group_plugin" # bewahrt das Verhalten der Gruppen von sudo vor Version 1.8.15
- "env_reset"
- secure_path:
- "/sbin"
- "/bin"
- "/usr/sbin"
- "/usr/bin"
- env_keep:
- "COLORS"
- "DISPLAY"
- "HOSTNAME"
- "HISTSIZE"
- "KDEDIR"
- "LS_COLORS"
- "MAIL"
- "PS1"
- "PS2"
- "QTDIR"
- "USERNAME"
- "LANG"
- "LC_ADDRESS"
- "LC_CTYPE"
- "LC_COLLATE"
- "LC_IDENTIFICATION"
- "LC_MEASUREMENT"
- "LC_MESSAGES"
- "LC_MONETARY"
- "LC_NAME"
- "LC_NUMERIC"
- "LC_PAPER"
- "LC_TELEPHONE"
- "LC_TIME"
- "LC_ALL"
- "LANGUAGE"
- "LINGUAS"
- "_XKB_CHARSET"
- "XAUTHORITY"
user_specifications:
- users:
- "root"
hosts:
- "ALL"
operators:
- "ALL"
commands:
- "ALL"
- users:
- "%wheel"
hosts:
- "ALL"
operators:
- "ALL"
commands:
- "ALL"
include_directories:
- "/etc/sudoers.d"
aliases:
cmnd_alias:
- name: "PING"
commands:
- "/bin/ping"
user_alias:
- name: "PINGERS"
users:
- "ahuffman"
- path: "/etc/sudoers.d/pingers"
user_specifications:
- type: "user"
defaults:
- "!requiretty"
users:
- "PINGERS"
- path: "/etc/sudoers.d/root"
defaults:
- "syslog=auth"
user_specifications:
- type: "runas"
defaults:
- "!set_logname"
operators:
- "root"
Das obige Beispiel erzeugt die folgenden Konfigurationsdateien:
Ergebnisse: /etc/sudoers
# Von Ansible verwaltet
# Standard-Spezifikationen
Defaults !visiblepw
Defaults always_set_home
Defaults match_group_by_gid
Defaults always_query_group_plugin
Defaults env_reset
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR"
Defaults env_keep += "LS_COLORS MAIL PS1 PS2 QTDIR"
Defaults env_keep += "USERNAME LANG LC_ADDRESS LC_CTYPE LC_COLLATE"
Defaults env_keep += "LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME"
Defaults env_keep += "LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL"
Defaults env_keep += "LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
# Alias-Spezifikationen
## Befehls-Alias
Cmnd_Alias PING = /bin/ping
## Benutzer-Alias
User_Alias PINGERS = ahuffman
# Benutzerspezifikationen
root ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
# Includes
## Include-Verzeichnisse
#includedir /etc/sudoers.d
Ergebnisse: /etc/sudoers.d/pingers
# Von Ansible verwaltet
# Standardüberschreibungs-Spezifikationen
Defaults:PINGERS !requiretty
Ergebnisse: /etc/sudoers.d/root
# Von Ansible verwaltet
# Standard-Spezifikationen
Defaults syslog=auth
# Standardüberschreibungs-Spezifikationen
Defaults>root !set_logname
Migrieren einer laufenden Sudoers-Konfiguration zu einem anderen Host
---
- name: "Existierende Sudoers-Fakten erfassen"
hosts: "source-host"
tasks:
- name: "Laufende Sudoers-Konfiguration erfassen"
include_role:
name: "ahuffman.scan_sudoers"
- name: "Gesammelte Sudoers-Fakten setzen"
set_fact:
sudoers_files: "{{ ansible_facts['sudoers'].sudoers_files }}"
- name: "Gesammelte Sudoers-Konfigurationsfakten anzeigen"
debug:
var: "sudoers_files"
verbosity: "1"
- name: "Laufende Konfiguration auf Ziel bereitstellen"
hosts: "destination-host"
tasks:
- include_role:
name: "ahuffman.sudoers"
vars:
sudoers_remove_unauthorized_included_files: True
Das obige Beispiel bietet eine Methode, um Infrastruktur als Code umzukehren, um eine bekannte Konfiguration in strukturierte Daten zu konvertieren, die zukünftige Automatisierungen steuern. Alternativ zur direkten Bereitstellung der gesammelten Konfiguration auf einem neuen Host könnten Sie die Daten in eine CMDB oder ein Repository zur künftigen Verwendung als Quelle der Wahrheit einpflegen.
Lizenz
Autoreninformation
Controls the configuration of the default /etc/sudoers file and included files/directories
ansible-galaxy install ahuffman.sudoers