Ansible paramiko ssh ติดขัดเมื่อต้องส่งต่อคำสั่งสิทธิ์

Aug 20 2020

ฉันมีอุปกรณ์ sandvine ที่ใช้ freebsd ฉันต้องการสร้าง playbook สำหรับจุดประสงค์หลายระบบอัตโนมัติ แต่กำลังประสบปัญหาเมื่อฉันต้องการเพิ่มสิทธิ์ของฉันวิธีเดียวที่จะเพิ่มสิทธิ์ได้คือใช้คำสั่งนี้sv_enable sv_adminมันทำงานเหมือนsu -คำสั่งที่เปลี่ยนพรอมต์จาก>$เป็น>#sudo ไม่ ใช้งานไม่ได้ที่นี่ดังนั้นเมื่อฉันเรียกใช้ playbook และเมื่อพูดถึงคำสั่งนี้sv_enable sv_adminเพลย์บุ๊กแฮงฉันเปลี่ยนการเชื่อมต่อ ssh เริ่มต้นสำหรับ Ansible เป็น paramkio แต่หากไม่มีโชคก็ยังคงประสบปัญหาเดียวกันฉันขอขอบคุณที่ให้ความสำคัญกับเรื่องนี้ และขอขอบคุณล่วงหน้า

Playbook ของฉัน:

---
- hosts: device-01
  gather_facts: false
  remote_user: sv_admin
  connection: paramiko
  vars:
    ansible_ssh_private_key_file: /root/.ssh/m2q_id_rsa
    #ansible_ssh_pass: /root/.ssh/m2q_passphrase
  tasks:
    - name: Check Paramiko privilege escalation
      command: "{{ item }}"
      with_items:
        - id
        - pwd
        - 'sv_enable sv_admin'
        - id
      register: shell_output
    - debug: var=shell_output
    - debug:
        msg: hello

คำตอบ

0xDeCaffedC0de Aug 20 2020 at 22:35

ในความคิดของฉันคุณได้พบคำตอบแล้ว:

  1. เพิ่มสิทธิ์โดยทำสิ่งที่คุณพูดในกรณีนี้คือ "sv_enable sv_admin"
  2. ใช้ "id", "whoami", "w", "who" หรือบางอย่างที่เหมือนกันเพื่อให้ทราบว่ามีการเพิ่มสิทธิ์ใด ๆ ก็ตาม
  3. ใช้ "passwd" ใน EUID หรือ UID (ขึ้นอยู่กับสถานการณ์: แต่โดยปกติตัวเลขที่ต่ำกว่าจะดีกว่า / "มีสิทธิ์มากกว่า") เพื่อเปลี่ยนรหัสผ่านสำหรับการเข้าสู่ระบบอย่างถาวร ...

ตอนนี้ฉันไม่เคยใช้ Ansible แต่มันขึ้นอยู่กับ python ดังนั้นควรอ่านฟังก์ชันการทำงานได้อย่างง่ายดาย เคล็ดลับ: ใช้ "strace" และ / หรือ "ltrace" เพื่อค้นหาว่าเกิดอะไรขึ้นและ / หรือโปรแกรมแปลคำสั่ง "sv_enable sv_admin" อย่างไร หากมีชุดของ setuid, setgid, seteuid, setegid, serreuid ฯลฯ ... sudo ก็จะใช้งานได้เช่นกัน - จำไว้ว่า: man sudo <--- มีตัวเลือกมากมายในการเปิดเผยปัญหานี้โดยใช้การคิดเชิงตรรกะเท่านั้น