代码之家  ›  专栏  ›  技术社区  ›  DenCowboy

sudo问题在ansible中以特定用户身份运行sudo

  •  0
  • DenCowboy  · 技术社区  · 5 年前

    chown $(id -u):$(id -g) $HOME/.kube/config
    

    目标是 chown vagrant:vagrant /home/vagrant/.kube/config

    现在我不能让这个工作(我已经硬编码了这个测试的路径($HOME是 /root 当然对于根用户):

    我试过:

    - name: Setup local kubeconfig
      become: true
      shell:
        cmd: |
          chown $(id -u):$(id -g) /home/vagrant/.kube/config
    

    结果是 root:root

    我也试过了

    - name: Setup local kubeconfig
      become: true
      become_user: vagrant
      shell:
        cmd: |
          chown $(id -u):$(id -g) /home/vagrant/.kube/config
    

    导致权限被拒绝,因为它是伪造的

    sudo -u vagrant chown $(id -u):$(id -g) /home/vagrant/.kube/config
    chown: changing ownership of '/home/vagrant/.kube/config': Operation not permitted
    

    2 回复  |  直到 5 年前
        1
  •  0
  •   Hackaholic    5 年前

    你可以用 become_method :用户流浪者必须具有sudo权限

    - name: Setup local kubeconfig
      become: true
      become_user: vagrant
      become_method: sudo
      shell:
        cmd: |
          chown $(id -u):$(id -g) /home/vagrant/.kube/config
    
        2
  •  0
  •   Jack    5 年前

    vagrant 中的用户 id

    - name: Setup local kubeconfig
      become: true
      become_user: root
      shell:
        cmd: |
          chown $(id -u vagrant):$(id -g vagrant) /home/vagrant/.kube/config
    

    (但是为什么你不能用 chown vagrant:vagrant ?)