Question Erreur d'analyse dans le fichier sudoers


J'ai créé un utilisateur appelé kafka à qui j'essaie de donner un accès sudo à courir seulement /etc/init.d/kafka commandes.

J'ai ajouté l'entrée suivante à /etc/sudoers.d/kafka via Ansible:

kafka ALL = NOPASSWD: /etc/init.d/kafka

Cependant, cela rompt complètement sudo avec l'erreur suivante:

/etc/sudoers.d/kafka: erreur de syntaxe près de la ligne 1
      sudo: erreur d'analyse dans /etc/sudoers.d/kafka près de la ligne 1
      sudo: aucune source sudoers valide trouvée, cesser de fumer
      sudo: impossible d'initialiser le plugin de politique

Voici l'extrait complet Ansible:

- name: Create kafka user's group
  group:
    name: "{{ kafka_group }}"
    state: present

- name: Create kafka user
  user:
    name: "{{ kafka_user }}"
    state: present
    group: "{{ kafka_group }}"
    shell: /bin/bash

- name: Set up password-less sudo for kafka user
  copy:
    content: "{{ kafka_user }} ALL = NOPASSWD: /etc/init.d/{{ kafka_service_name }}"
    dest: "/etc/sudoers.d/{{ kafka_user }}"
    owner: root
    group: root
    mode: 0440

Qu'est-ce que je fais mal?


6
2017-07-26 06:29


origine




Réponses:


UNE "sudo: erreur d'analyse dans ..." originaire de /etc/sudoers  ou l'un des fichiers inclus avec soit le #include <filename> ou #includedir <path> les directives peuvent être causées par une nouvelle ligne manquante sur la dernière entrée de ce fichier.


11
2017-07-26 06:53





En utilisant le copy le module n'est probablement pas le meilleur choix à gérer /etc/sudoers avec Ansible.

le fichier de lignes module a une option pour valider le fichier avant de l'enregistrer. Il est également plus facile de supprimer la ligne, etc. avec ce module.

le Documentation contient un exemple d'utilisation.

- name: Set up password-less sudo for kafka user
  lineinfile: dest=/etc/sudoers state=present regexp='^%{{ kafka_user }} ALL\=' line='%{{ kafka_user }} ALL= NOPASSWD: /etc/init.d/{{ kafka_service_name }}' validate='visudo -cf %s'

4
2017-07-27 10:12