Puis-je changer d'utilisateur dans Vagrant bootstrap script shell?

Modifier Apparemment, le problème c'est que je l'ai fait

su - postgres -c "commands, commands, commands",

c'est, a passé une commande de su, plutôt que d'essayer de les énumérer ci-dessous su, car ces commandes (ci-dessous su) ne sont pas affectés par su. /Modifier

Edit 2: Voir David Braun réponse à une bien meilleure solution: https://stackoverflow.com/a/22947716/694469


Je ne peux pas changer d'utilisateur (su - postgres) dans un Vagabond bootstrap shell provisionnement script? (Pourquoi pas?)

Je suis en train d'écrire un script de ce type. Dans ce script, je n':

echo '===== Creating PostgreSQL databases and users'

su - postgres

psql -c "
  create user SomeUserName password '...';
  alter user ...;
  "

Ici, psql devraient tenter de se connecter en tant qu'utilisateur postgres. Ce qui se passe, cependant, est que su - postgres apparemment échoue, et la coquille de tentatives de connexion en tant qu'utilisateur racine. (Apparemment, racine est l'utilisateur qui exécute le Vagabond bootstrap script shell.)

Si cette erreur s'affiche et la psql commandes ne sont pas invoqués:

psql: FATAL: le rôle du "root" n'existe pas

Remplacement su - postgres avec sudo su - postgres n'a aucun effet (je pense que le script est déjà exécuter en tant qu' racine.)

J'ai ajouté id (qui affiche l'ID de l'utilisateur courant) avant et après su - postgres, et id imprime uid=0(root) gid=0(root) groups=0(root) à la fois avant et après su a été appelé. Donc autant que je peux dire, su - postgres est ignorée? Et un certain exit, plus tard, lorsque je tente de revenir à la racine de l'utilisateur, quitte le script bootstrap complètement 🙁

Cependant. Après avoir fait vagrant ssh, je suis en mesure de sudo su - postgres juste bien, et puis commencer à psql. Mais pas à partir à l'intérieur de l'approvisionnement script.

(Une solution de contournement consiste à spécifier -h 127.0.0.1 --username postgres quand je l'appelle psql (plutôt que de changer d'utilisateur pour postgres). Et aussi permettre PostgreSQL confiance pour l'authentification basée sur les VM connexions locales.)

InformationsquelleAutor KajMagnus | 2013-05-27