2016-07-08 6 views
2

私はsudoユーザーとして(sudoパスワードを強制的に)実行可能なプレイブックを実行していますが、私は以下のことを行うことができます(私はansibleと試みた同じパスワードを使用して)リモートサーバ上:sudoユーザーのためのパスワードが受け入れられていない

sudo su - root 

エラーメッセージ

fatal: [testserver]: FAILED! => {"failed": true, "msg": "Incorrect su password"} 

ホスト

[webservers] 
testserver ansible_ssh_host=ec2-52-87-166-241.compute-1.amazonaws.com ansible_ssh_port=9876 

ansibleコマンド

ansible-playbook test_playbook.yml -i hosts --ask-become-pass -vvv 

test_playbook

--- 
- hosts: all 
    gather_facts: no 
    remote_user: testuser 
    become: yes 
    become_method: su 
    become_user: root 
    any_errors_fatal: true 

    tasks: 
    - group: 
     name: devops 
     state: present 
    - name: create devops user with admin privileges 

    user: 
     name: devops 
     comment: "Devops User" 
     uid: 2001 
     groups: devops 

私が間違っているかもしれないもの上の任意の考え? 「sudo su - root」root権限で

答えて

3

が(それはそれは、rootユーザーの役割にすでにプロセスによって呼び出されているため、後者は、rootのパスワードを要求しない理由である)sudoはなくsuことによって得られます。

しかし、あなたの設定では、become_method: suが指定されており、これにはrootのパスワードが必要です。

become_methodsudoに変更する(または、rootのパスワードを知っている場合は、ユーザーのパスワードではなくそのパスワードを入力する)。

4

sudo su - rootは、become_method: suと同じものではありません。

suは、別のユーザー(デフォルトではroot)に切り替えようとし、そのユーザーとして認証する(つまりパスワードを入力する)必要があります。 sudoは似ていますが、にはのパスワードを求めるメッセージが表示されます。これがセキュリティクラスターでないようにするには、/etc/sudoersで明示的にアクセスを許可されたユーザーに対してのみsudoが動作します。

あなたがsudo su - rootを使用

、あなたが言っている:

  1. sudo経由でrootに自分の権限を昇格します。
  2. これらの権限を昇格した状態で、ルートユーザーアカウントに切り替えます。今

あなたはAnsibleでbecome_method: suを指定するとき、あなたはsuの代わりsudoを使用するようにAnsibleを語っています。実際のコマンドは異なりますが、コマンドsu - rootを実行していると考えることができます。それがどう違うのか見てみましょうか?

代わりにbecome_method: sudoを使用するか、完全に削除する必要があります(デフォルトの設定です)。

関連する問題