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
相关推荐
A小辣椒1 天前
TShark:Wireshark CLI 功能
linux
A小辣椒1 天前
TShark:基础知识
linux
AlfredZhao1 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式