加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

我可以在Vagrant bootstrap shell脚本中切换用户吗?

发布时间:2020-12-18 00:07:36 所属栏目:安全 来源:网络整理
导读:编辑显然,问题是我应该做 su-postgres -c“命令,命令,命令”, 即,将任何命令传递给su,而不是尝试将它们列在su下面,因为这些命令(su下面)不受su影响。 /编辑 编辑2:参见David Braun的答案一个更好的解决方案:http://stackoverflow.com/a/22947716/69
编辑显然,问题是我应该做
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命令:

psql: FATAL: role “root” does not exist

用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 "..."

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读