Java Ansible:更改目录问题的权限

Java Ansible:更改目录问题的权限,java,ansible,ansible-playbook,chown,Java,Ansible,Ansible Playbook,Chown,我正在运行以下Ansible任务来更改目录及其内容的权限 - name: Change ownership of everything below /opt/as2/app-server file: path=/opt/as2/app-server state=directory recurse=yes owner=adrt group=adrt 运行时,我遇到以下问题: 任务[appserver:更改/opt/as2/app server下面所有内容的所有权]****** 致命:[192

我正在运行以下Ansible任务来更改目录及其内容的权限

- name: Change ownership of everything below /opt/as2/app-server
  file: path=/opt/as2/app-server state=directory recurse=yes owner=adrt group=adrt
运行时,我遇到以下问题:

任务[appserver:更改/opt/as2/app server下面所有内容的所有权]******
致命:[192.168.1.182]:失败!=>{“changed”:false,“failed”:true,“module_stderr”:“module_stdout”:“Traceback(最近一次调用):\r\n File\”/tmp/ansible_UrBo6x/ansible_module_File.py\”,第451行,在\r\n main()\r\n File\“/tmp/ansible_UrBo6x/ansible_module_File.py\”,第335行,在main\r\r\n changed |=递归|设置_属性(模块,到_字节(文件路径)[args],errors='subrogate\u or'u strict'),follow,file\u args)\r\n file\“/tmp/ansible\u UrBo6x/ansible\u module\u file.py\”,递归的\r\n set\u attributes\r\n changed |=module.set\u fs\u attributes\u如果不同(tmp\u file\u args,changed)\r\n file\“/tmp/ansible\u UrBo6x/ansible\u-modible\u-modlib.zip/ansible/module\u utils/basic.py\“,第1163行,在set_fs_attributes_if_different\r\n文件\“/tmp/ansible_UrBo6x/ansible_modlib.zip/ansible/module_utils/basic.py \”中,第929行,在set_owner_if_different\r\n文件\“/tmp/ansible_UrBo6x/ansible_modlib.zip/ansible/module_utils/basic.py \”中,第842行,在用户和组中\r\n错误:[没有这样的文件或目录:'/opt/as2/app-server-1.0.0/apps/station/WEB-INF/classes/org/adroitlogic/isuite/metrics/As2MetricsService/usr/bin/python$tt\u collectStats\u closure14.class'\r\n,“msg”:“模块故障”}

基本上它说没有这样的文件或目录

/opt/as2/app-server-1.0.0/apps/station/WEB-INF/classes/org/adroitlogic/isuite/metrics/As2MetricsService/usr/bin/python$tt__collectStats_closure14.class
目录
/opt/as2/app server/apps/station/WEB-INF/classes/org/adroitlogic/isuite/metrics/
的内容是

As2MetricsService$_$tt__CountStatisticsLists_closure3.class
As2MetricsService$_$tt__collectStats_closure10.class
As2MetricsService$_$tt__collectStats_closure11.class
As2MetricsService$_$tt__collectStats_closure12.class
As2MetricsService$_$tt__collectStats_closure13.class
As2MetricsService$_$tt__collectStats_closure14.class
As2MetricsService$_$tt__collectStats_closure15.class
As2MetricsService$_$tt__collectStats_closure4.class
As2MetricsService$_$tt__collectStats_closure5.class
As2MetricsService$_$tt__collectStats_closure6.class
As2MetricsService$_$tt__collectStats_closure7.class
As2MetricsService$_$tt__collectStats_closure8.class
As2MetricsService$_$tt__collectStats_closure9.class
As2MetricsService$_CountStatisticsLists_closure1.class
As2MetricsService$_collectStats_closure2.class
As2MetricsService.class
没有子目录

另外,当我在目录
/opt/as2/app server
中运行命令
chown-R adrt:adrt.
时,它会毫无问题地执行

帮助我了解这里发生了什么

帮助我了解这里发生了什么

您刚刚在Ansible中发现了一个bug,当它处理的文件名包含
$\uu
序列时,该bug会导致模块失败

传递名称时不会转义
$
字符(或者更确切地说是通过显式转换请求),并且序列
$\uu
作为解析到当前进程路径的内置变量进行处理(在本例中,
/usr/bin/python
,因为Ansible使用python运行其模块)

结果文件名为:

As2MetricsService$_$tt__collectStats_closure14.class
被解释为:

As2MetricsService/usr/bin/python$tt__collectStats_closure14.class
并且系统会抛出一个文件不存在的错误(这是真的)



在修复之前,我想你必须用
命令调用
chown
模块

不幸的是,这对我来说并不明显。你打算向GitHub提交一个问题吗?是的,我打算这样做。@techraf在上报道。请让我知道它是否需要修改。我不是决定什么是好是坏的人,但因为你是k、 …乍一看,我认为您不需要用这条漫长的路径来迷惑读者。它甚至失败了
/testdir/test$\u$file