Bash

Ansible 和 rbash

  • May 12, 2016

/bin/rbash我想用 Ansible管理一堆作為預設 shell 執行的設備。

問題是 Ansible 總是嘗試執行一個rbash根本不喜歡的命令列表:

umask 77 && mkdir -p \"` echo ./ansible-tmp-1460362654.19-62671997084808 `\" && echo \"` echo ./ansible-tmp-1460362654.19-62671997084808 `\"

有什麼想法可以避免這個命令嗎?

澄清一下:我想更改 Ansible 使用的外殼,並且只有一個使用者可用。

唔。我認為您可以使用ansible 的 raw module來解決這個問題。

請記住,雖然 rbash 是受限制的 shell,但完全可以啟動不受限制的子 shell;它的目的更多的是防止事故而不是提供安全性。

所以這就是我要做的。我已經對此進行了測試並確認它成功更改了受限外殼。請注意,它必須提示輸入密碼,因為chsh提示輸入密碼,如果沒有 root 訪問權限,這是無法避免的。

---
- hosts: all
 gather_facts: False
 remote_user: username
 tasks:
   - name: change shell
     raw: "bash -c 'chsh -s /bin/bash' <<< '{{chsh_password}}' "
 vars_prompt:
   - name: "chsh_password"
     prompt: "Password"

引用自:https://serverfault.com/questions/769404