2017-04-22 3 views
0

J'essaie de pousser mes fichiers de points et certains fichiers de configuration personnels vers un serveur (je ne suis pas root ou sudoer). Ansible se connecte en tant que mon utilisateur afin d'éditer des fichiers dans mon dossier personnel.Modifier le shell de l'utilisateur actuel avec

Je souhaite définir mon shell par défaut sur usr/bin/fish. Je ne suis pas autorisé à modifier /etc/passwd si

user: 
    name: shaka 
    shell: /usr/bin/fish 

ne fonctionnera pas.

J'ai également vérifié la commande chsh mais l'invite exécutable pour mon mot de passe. Comment pourrais-je changer mon shell sur de telles machines?

(Debian 8, Ubuntu 16, Opensuse)

+0

Pourquoi est-ce un problème que 'chsh' vous demande votre mot de passe? – chepner

Répondre

0

I fini par utiliser deux modules ansible:

  • ansible attendre
  • ansible prompt

D'abord, j'enregistrer mon mot de passe avec une invite:

vars_prompt: 
    - name: "my_password" 
    prompt: "Enter password" 
    private: yes 

Et puis-je utiliser le module expect pour envoyer le mot de passe à la commande chsh:

tasks: 
    - name: Case insensitve password string match 
    expect: 
     command: "chsh -s /usr/bin/fish" 
     responses: 
     (?i)password: "{{ my_password }}" 
     creates: ".shell_is_fish" 

Les creates de poser un verrou fichier évitant que cette tâche soit à nouveau déclenchée. Cela peut être dangereux car le shell peut être changé après et l'ansible ne le mettra pas à jour (à cause du verrou encore présent). Vous souhaiterez peut-être éviter ce comportement.

0

Ubuntu 16

ajouter première ligne ~/.bashrc

/usr/bin/fish && exit