我可以在Vagrant bootstrap shell脚本中切换用户吗?
编辑显然,问题是我应该做
su-postgres -c“命令,命令,命令”, 即,将任何命令传递给su,而不是尝试将它们列在su下面,因为这些命令(su下面)不受su影响。 /编辑 编辑2:参见David Braun的答案一个更好的解决方案:http://stackoverflow.com/a/22947716/694469 我是否可以在Vagrant引导shell配置脚本中切换用户(su – postgres)? (为什么不?) 我在写这样的脚本。在那个脚本中,我做: echo '===== Creating PostgreSQL databases and users' su - postgres psql -c " create user SomeUserName password '...'; alter user ...; " 这里,psql应该尝试以用户postgres身份登录。然而,会发生什么,su – postgres显然失败,shell尝试以root用户身份登录。 (显然,root是运行Vagrant引导shell脚本的用户。) 因此,将显示此错误,并且不调用psql命令:
用sudo su-postgres替换su-postgres没有效果(我认为脚本已经作为root运行)。 我在su – postgres之前和之后添加了id(打印当前用户ID),并且在su调用之前和之后打印uid = 0(root)gid = 0(root)groups = 0(root)。所以,据我所知,su-postgres被忽略了?和一个特定的退出,后来当我试图切换回root用户,完全退出引导脚本:-( 然而。在做vagrant ssh后,我可以sudo su – postgres只是很好,然后启动psql。但不是从供应脚本内。 (一种解决方法是在调用psql(而不是将用户切换到postgres)时指定-h 127.0.0.1 –username postgres)并且还为VM本地连接启用基于PostgreSQL信任的身份验证。 解决方法
我不知道你是否可以切换用户在Vagrant外壳脚本,因为这可能需要用户输入,你不能给它当脚本在配置文件中运行…但为什么不只是使用psql命令指定用户?
psql --username=postgres -c "..." (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |