sudo提權,ansible批量給所有主機創建系統賬戶,授權


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM