2016-02-03 2 views
0

У меня есть 2 задачи, которые я пытаюсь запустить в сценарии упрощения СНГ на сервере Ubuntu 14.04.Зачем пропустить задачу Ansible?

Первая задача

- name: 8.1.12 Collect Use of Privileged Commands (Scored) 
    shell: /usr/bin/find {/usr/local/sbin,/usr/local/bin,/sbin,/bin,/usr/sbin,/usr/bin} -xdev \(-perm -4000 -o -perm -2000 \) -type f | awk '{print "-a always,exit -F path=" $1 " -F perm=x -F auid>=500 -F auid!=4294967295 -k privileged" }' 
    register: privileged_programs 
    tags: 
     - scored 
     - section8.1.12 

Это, как предполагается зарегистрировать список льготных программ, которые будут использоваться в следующей задаче. Если я скопирую команду выше на VM Ubuntu и запустил ее, я получу длинный список программ, как и следовало бы.

Вторая задача заключается в следующем:

- name: 8.1.12 Collect Use of Privileged Commands (Scored) 
    lineinfile: dest=/etc/audit/audit.rules line="{{item}}" insertafter=EOF state=present 
    with_items: privileged_programs.stdout_lines 
    when: privileged_programs is defined and privileged_programs.stdout_lines|length > 0 
    notify: restart auditd 
    tags: 
     - scored 
     - section8.1.12 

Это должно сработать, если какие-либо результаты зарегистрированы, но до сих пор я не смог заставить его работать. Он пропускается каждый раз, когда я пытаюсь запустить 2 задачи. Я предполагаю, что переменная privileged_programs не сохраняется и не передается правильно.

Примечание: Я попытался изменить первую задачу от оболочки команды, но затем я получил ошибку «STDERR:/USR/бен/найти: пути должны предшествовать выражение»

Примечание2: Я также проверил в и т.д./audit/audit.rules и проверяет, что привилегированные программы в нем еще не содержатся.

Редактировать: Я добавил отладку между двумя задачами для вывода var = privileged_programs. Вот часть его, которая, я думаю, может указывать на часть выпуска:

"stderr": "/usr/bin/find:  `{/usr/local/sbin,/usr/local/bin,/sbin,/bin,/usr/sbin,/usr/bin}': No such file or directory", 
     "stdout": "", 
     "stdout_lines": [], 
     "warnings": [] 

Кто-нибудь знает, почему это было бы?

Заранее благодарен!

+0

Можете ли вы добавить '- debug' между задачами и увидеть, что первая запущенная задача и' privileged_programs' имеет какое-то значение? – helloV

+0

Я добавил отрывок из отладки – JaReg

+0

Отметьте мой ответ – helloV

ответ

1

У оболочки Bourne есть проблема с синтаксисом. Прекрасно работает в Баше.

Я сделал это работающим. Попробуйте использовать следующий синтаксис.

shell: /usr/bin/find /usr/local/sbin /usr/local/bin /sbin /bin /usr/sbin /usr/bin 
0

Я не уверен, что это так, но в имеющейся документации указано: Если две задачи обработчика имеют одно и то же имя, будет выполняться только один. * Попробуйте изменить второе имя задачи.

+0

Я попытался переименовать второй и не повезло. – JaReg

Смежные вопросы