sudo(superuser or another do)让普通用户可以以超级管理员或其他人的身份执行命令。
sudo基本流程如下:
1.管理员需要先授权(修改/etc/sudoers文件)
2.普通用户以sudo的形式执行命令
3.可以通过sudo -l 查看授权情况
修改/etc/sudoers的方法如下:
1.visudo(带语法检查,默认没有颜色提示)
2.vim /etc/sudoers(不带语法检查,默认有颜色提示)
授权格式:
用户或组 主机列表=(提权身份) [NOPASSWD]:命令列表
NOPASSWD的意思是执行sudo不需要输入自己的密码
注意事项:命令需要写绝对路径,对组授权需要在组名称前面加%
## cat /etc/sudoers
root ALL=(ALL) ALL
tom ALL=(root) /usr/bin/systemctl tom以root身份可以启动关闭重启服务
%wheel ALL=(ALL) ALL
$ sudo systemctl restart sshd 提权以root身份执行
ansible批量给所有主机创建系统账户,授权
远程所有被管理主机批量创建系统账户,账户名称为alice,密码为123456。
# ansible all -m user -a "name=alice password={{'123456' | password_hash('sha512')}}"
配置alice账户可以提权执行所有命令
使用lineinfile模块修改远程被管理端主机的/etc/sudoers文件,line=后面的内容是需要添加到文件最后的具体内容。等于是在/etc/sudoers文件末尾添加一行:alice ALL=(ALL) NOPASSWD:ALL
#ansible all -m lineinfile -a "path=/etc/sudoers line='alice ALL=(ALL) NOPASSWD:ALL'“
验证:在node1上面测试
#su - alice
$sudo systemctl restart sshd
######################
修改ansible配置文件
######################
默认ansible是通过root远程被管理端主机
可以修改配置文件以普通用户远程被管理端主机执行自动化运维
vim ~/ansible/ansible.cfg
[defaults]
inventory = ~/ansible/hosts
remote_user = alice #以什么用户远程被管理主机(被管理端主机的用户名)
#host_key_checking = False #是否校验密钥
[privilege_escalation]
become = true #alice没有特权,是否需要切换用户提升权限
become_method = sudo #如何切换用户(比如用su就可以切换用户,这里是sudo)
become_user = root #切换成什么用户(把alice提权为root账户)
become_ask_pass = no #执行sudo命令提权时是否需要输入密码
远程被管理端主机的alice用户,需要提前配置SSH密钥。
#for i in node1 node2;
do ssh-copy-id alice@$i
done
# ssh alice@node1 #依次远程所有主机看看是否需要密码
########################
修改inventory主机清单配置文件(实验参考)
########################
vim ~/ansible/inventory
[test]
node1 ansible_ssh_port=220 #自定义远程SSH端口
[proxy]
node2 ansible_ssh_user=alice #自定义远程连接的账户名
[webserver]
node[3:4] ansible_ssh_pass=密码 #自定义远程连接的密码
[database]
node5 ansible_ssh_private_key_file=密钥文件
[cluster:children]
webserver
database
标签:提权,主机,sudo,alice,etc,ansible From: https://www.cnblogs.com/cheyunhua/p/17983079