首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可能创建SubFolders匹配模式

可能创建SubFolders匹配模式
EN

Stack Overflow用户
提问于 2020-07-22 04:09:48
回答 1查看 44关注 0票数 0

我有一个ansible剧本,它通过传递一个目录,所有者和权限数组来创建目录。我们的管理员担心,有人会在我们的O/S卷下创建目录,并导致系统问题。因为我们只有几个文件夹需要root,所以我正在研究如何将仅以root身份传入的特定文件夹列入白名单。其他目录,并使用我们的内部用户到不需要超级用户的目录。

这就是我想出来的,但是我关心的是/vs_volue/etc,而不是传递的/etc。例如,我找不到以/etc开头的单词。有没有更好的方法?

代码语言:javascript
复制
---
- name: Create Directories
  hosts: target_hosts
  vars:
    dir_list: '{{ dir_list }}'
    permissions: {{ permissions }}
    linux_user: 'webuser'
    whitelist_dir:
      - "/etc"
      - "/usr"

  tasks:
    - name: User to root when creating folders in /etc or /usr
      set_fact:
          linux_user: "root"
      when: dir_list|string|regex_search('{{ item }}')
      with_items:
        - "{{ whitelist_dir }}"

    - name: Create Directories as WebUser by Directory Array Lists by Line Feed
      file:
        path: "{{ item }}"
        mode: "{{ permissions }}"
        recurse: yes
        state: directory
        become: true
        become_user: "{{ linux_user }}"
      with_items: "{{ dir_list.split('\n') }}"
      when: dir_list | search('\n')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-22 07:08:17

尝尝这个。

main.yml

代码语言:javascript
复制
- hosts: target_hosts
  vars:
    default_linux_user: "webuser"
    permissions: "{{ permissions | default(0664) }}"
    whitelist_dir:
      - "^/etc/.*"
      - "^/usr/.*"
  tasks:
    - include_tasks: create_dir.yml
      loop: "{{ dir_list.split('\n') }}"
      loop_control:
         loop_var: dir

create_dir.yml

代码语言:javascript
复制
- block:
    - set_fact:
        linux_user: "{{ 'root' if dir is regex(item) else default_linux_user }}"
      when: linux_user is undefined and (not linux_user == 'root')
      loop: "{{ whitelist_dir }}"

    - debug:
        msg: "For {{ dir }} - {{ linux_user }} will be set as owner"
        
    - file:
        path: "{{ dir }}"
        state: directory
        mode: "{{ permissions }}"
        owner: "{{ linux_user | default(default_linux_user) }}
        recurse: yes
      become: true
      become_user: root
      become_method: sudo
  always:
    - set_fact:
        linux_user: default_linux_user   
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63022326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档