2016-02-03 65 views
0

我有2个可行的任务,我尝试在Ubuntu 14.04服务器上的CIS强化脚本中运行。为什么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 

据说这是为了注册特权程序的列表中的下一个任务中使用。如果我将上面的命令复制到Ubuntu VM并运行它,我就会像我应该得到一长串程序。

第二个任务是这样的:

- 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变量未被正确存储或传递。

注:我想从外壳改变第一任务的命令,但后来我得到了一个错误“标准错误:在/ usr/bin中/找到:路径必须先表达”

注2:我也查在etc/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在语法上存在一些问题。在Bash中工作正常。

我使它工作。尝试以下语法。

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

我不确定是否属于这种情况,但可行的文档指出:如果两个处理程序任务具有相同的名称,则只有一个会运行。 * 尝试更改第二个任务名称。

+0

我试图重命名第二个,没有运气。 – JaReg