目录
- 常见become_method
- become_flags
-
-
- [`su` 常见选项总结](#
su
常见选项总结) - [`sudo` 常见选项总结](#
sudo
常见选项总结) - [`pbrun` 常见选项总结](#
pbrun
常见选项总结) - [`pfexec` 常见选项总结](#
pfexec
常见选项总结) - [`doas` 常见选项总结](#
doas
常见选项总结) - 示例
-
- [使用 `sudo` 的示例:](#使用
sudo
的示例:) - [使用 `pbrun` 的示例:](#使用
pbrun
的示例:) - [使用 `pfexec` 的示例:](#使用
pfexec
的示例:) - [使用 `doas` 的示例:](#使用
doas
的示例:)
- [使用 `sudo` 的示例:](#使用
- [`su` 常见选项总结](#
-
- 配置方式
常见become_method
become_method
用于指定在远程主机上提升权限的方法。常见的方法包括:
-
sudo : 通过
sudo
命令提升权限,通常是从普通用户提升到超级用户(root)。- 示例:
become_method: sudo
- 特点:需要在目标主机上配置sudoers文件,指定哪些用户有权限使用sudo。
- 示例:
-
su : 通过
su
命令切换到其他用户,通常是从普通用户切换到超级用户。- 示例:
become_method: su
- 特点:需要提供目标用户的密码,适用于不支持sudo的系统。
- 示例:
-
pbrun : 使用Privilege Manager的
pbrun
命令提升权限。- 示例:
become_method: pbrun
- 特点:适用于使用Privilege Manager的企业环境。
- 示例:
-
pfexec : 使用Solaris上的
pfexec
命令提升权限。- 示例:
become_method: pfexec
- 特点:适用于Solaris系统。
- 示例:
-
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_method
和 become_flags
。在配置文件中添加以下内容:
ini
[defaults]
become=True
become_method=su
become_flags=-r
2. 命令行参数
在执行 Ansible 命令时,可以使用命令行参数来设置 become_method
和 become_flags
。例如:
sh
ansible-playbook -i inventory playbook.yml --become --become-method=su --become-flags="-r"
3. Playbook 配置
在 Playbook 中,你可以在全局或任务级别设置 become_method
和 become_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_method
和 become_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