2016-04-13 2 views
1

私はそれが奇妙に聞こえることを知っています。しかし、私は適切に私のプレイブックをセットアップした後、現在のユーザーを削除する必要があります。現在のsudoerを削除するにはどうすればいいですか?

私はサーバーを更新し、ユーザーと管理者を適切に構成するためのプレイブックを持っています。私は与えられたユーザーをrootにしてadminをメインのsudoerに設定しました。

rootまたはadminでない場合にのみ、私のプレイブックの最後にansible_ssh_userを削除する必要がありますか?

次のソリューションは、

--- 
- hosts: all 
    become: yes 
    become_user: root 


    tasks: 
    - include_vars: secrets.yml 

    - name: add admin user 
     user: name={{ ADMIN_USERNAME }} password={{ ADMIN_PASSWORD | password_hash('sha512') }} shell=/bin/bash 

    - name: delete current sudoer if not admin or root 
     user: name={{ ansible_ssh_user }} state=absent remove=yes 
     when: ({{ ansible_ssh_user }}!={{ ADMIN_USERNAME }}) or ({{ ansible_ssh_user }}!={{ ADMIN_USERNAME }}) 

動作しないことが返されます。

userdel: user admin is currently used by process 23537 
+0

あなたが取得(またはいただきました!間違っている)されているものを提供することができ、エラーが動作しますか? – user2599522

+0

私は実際には無能者特有ではないと思います。ユーザーが現在ログインしている間にユーザーを削除すると問題が増えます。これはLinuxでは可能ではないと思いますが(https://unix.stackexchange.comはおそらくそこの情報源となるでしょう)。私が考えることができるのは、 "このユーザーを削除するルートcronジョブを設定し、ユーザーがいない場合はcronジョブを削除する"のような狂ったハックです。 –

+0

@ XiongChiamiovか、管理者名で現在のsudoerの名前を変更することはできますか? –

答えて

0

あなたはあなたのための仕事をしてasynchronous shell commandを実行してみてください可能性があります。 理論

- name: delete user 
    command: sleep 10 && deluser foo 
    async: 0 
    poll: 0 
    ignore_errors: true 

これは

+0

同じエラー: 'userdel:user piは現在プロセス20646で使用されています'コマンド私は 'command:bash -lc 'を使用します。sleep 10s && deluser {{ansible_ssh_user}}' ' –

関連する問題