我有基于 freebsd 的 sandvine 设备,我需要创建剧本以实现多自动化目的,但是在需要提升权限时遇到问题,提升权限的唯一方法是通过此命令,sv_enable sv_admin
它的工作方式类似于su -
命令,它将提示符从更改>$
为>#
sudo 在这里不起作用,所以当我运行剧本并且当涉及到这个命令时,sv_enable sv_admin
剧本挂起了,我将 Ansible 的默认 ssh 连接更改为 paramkio,但没有运气仍然面临同样的问题,我感谢您及时关注此事并提前感谢您。
我的剧本:
---
- 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
答案1
我认为你已经找到答案了:
- 通过执行您所说的任何操作来提升权限,在本例中为“sv_enable sv_admin”。
- 使用“id”、“whoami”、“w”、“who”或类似的东西来确定是否已经升级任何权限。
- 使用 EUID 或 UID 上的“passwd”(视情况而定:但通常数字越低越好/“权限越多”)来永久更改登录密码...
现在我从未使用过 Ansible,但它基于 python,因此功能应该很容易阅读。提示:使用“strace”和/或“ltrace”来找出发生了什么以及/或程序如何转换“sv_enable sv_admin”命令。如果有一系列 setuid、setgid、seteuid、setegid、serreuid 等……那么 sudo 基本上也可以工作 - 记住:man sudo。<--- 仅使用逻辑思维就有很多方法可以发现这个问题。