2017-03-09 3 views
0

Voici ce que j'ai:Comment créer un répertoire contexte particulier SE Linux sur elle

- name: Create directories that will be used as persistent volumes 
    become: yes 
    become_method: sudo 
    file: 
    path: /tmp/pv-{{ item }} 
    state: directory 
    mode: "g=rwx" 
    group: "root" 
    selevel: _default 
    seuser: _default 
    serole: _default 
    setype: svirt_sandbox_file_t 
    with_items: 
    - cassandra 
    - services 

Les deux répertoires sont créés correctement, le groupe a les droits sont ok. Mais le contexte SE Linux est faux.

$ ll -dZ /tmp/pv-cassandra 
drwxrwxr-x. 2 jkremser root unconfined_u:object_r:user_tmp_t:s0 40 Mar 9 15:19 /tmp/pv-cassandra 

Ceci est la partie de la sortie de débogage:

ok: [localhost] => (item=cassandra) => { 
    "changed": false, 
    "diff": { 
     "after": { 
      "path": "/tmp/pv-cassandra" 
     }, 
     "before": { 
      "path": "/tmp/pv-cassandra" 
     } 
    }, 
    "gid": 0, 
    "group": "root", 
    "invocation": { 
     "module_args": { 
      "backup": null, 
      "content": null, 
      "delimiter": null, 
      "diff_peek": null, 
      "directory_mode": null, 
      "follow": false, 
      "force": false, 
      "group": "root", 
      "mode": "g=rwx", 
      "original_basename": null, 
      "owner": null, 
      "path": "/tmp/pv-cassandra", 
      "recurse": false, 
      "regexp": null, 
      "remote_src": null, 
      "selevel": "_default", 
      "serole": "_default", 
      "setype": "svirt_sandbox_file_t", 
      "seuser": "_default", 
      "src": null, 
      "state": "directory", 
      "unsafe_writes": null, 
      "validate": null 
     }, 
     "module_name": "file" 
    }, 
    "item": "cassandra", 
    "mode": "0775", 
    "owner": "root", 
    "path": "/tmp/pv-cassandra", 
    "size": 80, 
    "state": "directory", 
    "uid": 0 
} 

Qu'est-ce que je fais mal? Mon OS est Fedora 25.

+0

Lorsque vous exécutez cette tâche sur le répertoire dans l'état que vous avez inclus, obtenez-vous 'ok' chaque fois qu'il a l'air si la transcription, je veux juste confirmer – techraf

+0

oui, je reçois soit 'changé' si le répertoire n'existe pas ou 'ok' quand je l'exécute à plusieurs reprises –

Répondre

0

Si j'utiliser le module copy, au lieu du file, qui a à peu près les mêmes paramètres, il jette cette erreur:

Aborting, target uses selinux but python bindings (libselinux-python) aren't installed 

Après avoir installé le package libselinux-python, ça marche! il ressemble le module file engloutit silencieusement l'erreur et fait ce qu'il peut faire :(Je ne peux pas dépendre du fait que l'utilisateur a le package libselinux-python installé.

Je vais probablement appeler moi-même chcon comme une coquille commande ou ajouter le package comme condition préalable:

- name: Install the libselinux-python package 
    package: 
    name: libselinux-python 
    state: present