ansible提权之become_method与become_flags详解

目录

  • 常见become_method
  • become_flags
      • [`su` 常见选项总结](#su 常见选项总结)
      • [`sudo` 常见选项总结](#sudo 常见选项总结)
      • [`pbrun` 常见选项总结](#pbrun 常见选项总结)
      • [`pfexec` 常见选项总结](#pfexec 常见选项总结)
      • [`doas` 常见选项总结](#doas 常见选项总结)
      • 示例
        • [使用 `sudo` 的示例:](#使用 sudo 的示例:)
        • [使用 `pbrun` 的示例:](#使用 pbrun 的示例:)
        • [使用 `pfexec` 的示例:](#使用 pfexec 的示例:)
        • [使用 `doas` 的示例:](#使用 doas 的示例:)
  • 配置方式
      • [1. 配置文件](#1. 配置文件)
      • [2. 命令行参数](#2. 命令行参数)
      • [3. Playbook 配置](#3. Playbook 配置)
      • [4. Inventory 文件配置](#4. Inventory 文件配置)

常见become_method

become_method用于指定在远程主机上提升权限的方法。常见的方法包括:

  1. sudo : 通过sudo命令提升权限,通常是从普通用户提升到超级用户(root)。

    • 示例:become_method: sudo
    • 特点:需要在目标主机上配置sudoers文件,指定哪些用户有权限使用sudo。
  2. su : 通过su命令切换到其他用户,通常是从普通用户切换到超级用户。

    • 示例:become_method: su
    • 特点:需要提供目标用户的密码,适用于不支持sudo的系统。
  3. pbrun : 使用Privilege Manager的pbrun命令提升权限。

    • 示例:become_method: pbrun
    • 特点:适用于使用Privilege Manager的企业环境。
  4. pfexec : 使用Solaris上的pfexec命令提升权限。

    • 示例:become_method: pfexec
    • 特点:适用于Solaris系统。
  5. doas : 使用OpenBSD上的doas命令提升权限。

    • 示例:become_method: doas
    • 特点:适用于OpenBSD系统。

become_flags

become_flags用于指定在使用become_method提升权限时的附加命令行标志。这些标志根据具体的become_method而有所不同。

以下是其他常见 become_method 及其 become_flags 配置的总结:

su 常见选项总结

  • -c "command": 执行指定的命令。
  • -l: 模拟完整的登录,加载用户的环境变量。
  • -r : 模拟完整的登录,加载用户的环境变量(与 -l 类似)。
  • -m-p: 保留当前环境变量。
  • -s /bin/bash: 指定要使用的 shell。
  • -f : 快速模式,不执行 .profile 文件。

sudo 常见选项总结

  • -H : 切换用户的 HOME 环境变量为目标用户的主目录。
  • -S: 从标准输入读取密码,通常用于非交互式环境。
  • -u username: 指定以哪个用户身份执行命令,默认是 root。
  • -b: 在后台执行命令。
  • -i: 模拟初次登录,加载用户的环境变量。
  • -E: 保留用户的环境变量,不重置环境变量。
  • -k: 强制重新输入密码,不使用缓存的认证。

pbrun 常见选项总结

  • -u username: 指定以哪个用户身份执行命令。
  • -p policy: 使用特定的安全策略执行命令。
  • -n: 不提示输入密码。
  • -t timeout: 指定命令的超时时间。

pfexec 常见选项总结

  • -s: 使用指定的 shell 执行命令。
  • -u username: 指定以哪个用户身份执行命令。

doas 常见选项总结

  • -u username: 指定以哪个用户身份执行命令,默认是 root。
  • -n: 不提示输入密码。
  • -s: 使用指定的 shell 执行命令。

示例

使用 sudo 的示例:
yaml 复制代码
- hosts: all
  become: yes
  become_method: sudo
  become_flags: '-H -u username'
  tasks:
    - name: 安装HTTP服务器
      apt:
        name: apache2
        state: present
使用 pbrun 的示例:
yaml 复制代码
- hosts: all
  become: yes
  become_method: pbrun
  become_flags: '-u root -n'
  tasks:
    - name: 执行自定义命令
      command: /path/to/your/command
使用 pfexec 的示例:
yaml 复制代码
- hosts: all
  become: yes
  become_method: pfexec
  become_flags: '-s'
  tasks:
    - name: 执行自定义命令
      command: /path/to/your/command
使用 doas 的示例:
yaml 复制代码
- hosts: all
  become: yes
  become_method: doas
  become_flags: '-u username -n'
  tasks:
    - name: 执行自定义命令
      command: /path/to/your/command

配置方式

1. 配置文件

你可以在 Ansible 的配置文件(通常是 ansible.cfg)中设置 become_methodbecome_flags。在配置文件中添加以下内容:

ini 复制代码
[defaults]
become=True
become_method=su
become_flags=-r

2. 命令行参数

在执行 Ansible 命令时,可以使用命令行参数来设置 become_methodbecome_flags。例如:

sh 复制代码
ansible-playbook -i inventory playbook.yml --become --become-method=su --become-flags="-r"

3. Playbook 配置

在 Playbook 中,你可以在全局或任务级别设置 become_methodbecome_flags

全局配置
yaml 复制代码
- hosts: all
  become: yes
  become_method: su
  become_flags: '-r'
  tasks:
    - name: 执行自定义命令
      command: /path/to/your/command
任务级别配置
yaml 复制代码
- hosts: all
  become: yes
  tasks:
    - name: 使用 su 提升权限并执行命令
      become_method: su
      become_flags: '-r'
      command: /path/to/your/command

4. Inventory 文件配置

在 Inventory 文件中,你可以为特定主机或主机组设置 become_methodbecome_flags

ini 复制代码
[all:vars]
ansible_become=yes
ansible_become_method=su
ansible_become_flags=-r

[webservers]
webserver1.example.com
webserver2.example.com

[dbservers]
dbserver1.example.com
dbserver2.example.com
相关推荐
青青草原技术员灰太狼1 小时前
Nginx的https搭建
linux·服务器·网络
xu_yule1 小时前
网络和Linux网络-4(应用层)序列化和反序列化(网络计算器)
linux·网络
宇钶宇夕2 小时前
三旺 INP314T 网关快速入门指南:从登录到基础配置
运维·自动化·软件工程
2***s6722 小时前
Failed to restart nginx.service Unit nginx.service not found
运维·nginx
YongCheng_Liang3 小时前
Zabbix 6.4 完整部署教程:从环境准备到监控实战
linux·运维·zabbix
小白电脑技术3 小时前
旧电脑安装流畅的系统?用虚拟机先体验一下Linux Mint!
linux·电脑
数字化顾问3 小时前
(65页PPT)大型集团物料主数据管理系统建设规划方案(附下载方式)
大数据·运维·人工智能
翼龙云_cloud3 小时前
阿里云渠道商:新手怎么操作阿里云无影云电脑?
运维·服务器·阿里云·云计算·电脑
回忆是昨天里的海4 小时前
docker存储-目录挂载
运维·docker·容器
爱吃萝卜的美羊羊5 小时前
ubuntu下国内升级ollama
linux·运维·ubuntu