📌 原始命令
ansible group1 -m file -a 'path=/test recurse=yes owner=bin group=daemon mode=0777'
✅ 一、基本结构
部分 | 含义 |
---|---|
ansible | 使用 ansible 命令行工具 |
group1 | 操作目标是 group1 主机组中的所有主机(来自 inventory 文件) |
-m file | 使用 file 模块,专门用于管理文件、目录、链接等 |
-a '...' | 给 file 模块传递参数(用空格分隔多个 key=value ) |
✅ 二、参数详解
参数 | 含义 |
---|---|
path=/test | 指定要操作的文件或目录路径,这里是 /test 。 |
recurse=yes | 递归应用设置,即对目录中的所有子文件和子目录也应用 owner 、group 和 mode 。🚨 只对目录生效。 |
owner=bin | 把文件/目录的所有者设置为 bin 用户。 |
group=daemon | 把文件/目录的所属用户组设置为 daemon 。 |
mode=0777 | 设置权限为 rwxrwxrwx (读写执行权限全开)。⚠️ 一般不建议在生产环境使用 0777 ,太开放。 |
✅ 三、这个命令干了什么?
在所有
group1
组的主机上,找到/test
目录:
-
如果它存在,对其及所有子文件/目录递归设置:
- 所有者为
bin
; - 所属组为
daemon
; - 权限为
0777
。
- 所有者为
-
如果它不存在,不会自动创建(因为
state
没写,如果要确保存在,应加state=directory
)。
✅ 四、加上 state=directory
的版本(更健壮)
建议写完整一点:
ansible group1 -m file -a 'path=/test state=directory recurse=yes owner=bin group=daemon mode=0777'
这样可以确保 /test
目录存在,否则 Ansible 会自动创建它。
🚨 小提醒:
mode=0777
权限很开放,慎用于生产环境,容易带来安全风险;- 用户
bin
和组daemon
是传统 Unix 系统里的用户组,如果你系统没有这两个,可能报错; recurse=yes
是递归设置,不是递归创建目录(那是state=directory
的事情);- Ansible 默认通过 SSH 远程执行,需要你有目标主机的权限(或 SSH 密钥免密登录)。