首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unix:‘su用户’不工作,并在SSH if条件中保持根用户身份

问Unix:‘su用户’不工作,并在SSH if条件中保持根用户身份
EN

Stack Overflow用户
提问于 2020-05-13 05:33:05
回答 1查看 137关注 0票数 0

我一直在写bash脚本,遇到了一个奇怪的问题。基本上,我以root身份从本地服务器SSH到远程服务器,并尝试运行一些命令。其中一个命令是将用户从root更改为服务帐户。为此,我使用命令"su“,它将更改为服务帐户。但奇怪的是,当我在'if condition‘中运行相同的命令时,它仍然只是root帐户。下面是代码片段:

代码语言:javascript
复制
  echo "Enter host name you want to start: "
  read remote

  echo "Enter password for $remote : "
  read -s remote_pass

  sshpass -p$remote_pass ssh -T -o StrictHostKeyChecking=no $remote <<EOF
      ps -ef | grep -i tomcat | grep -i bootstrap | awk '{print \$2}'

      if [ -z "\$(ps -ef | grep -i tomcat | awk '{print \$2}')" ]
        then
          echo "$remote: Need to start server"
          su serviceAccount -----------> This doesn't work inside if controller
          startup.sh ---------> I want to run this script using serviceAccount and not as root!!!
        else
          echo "$remote: Already up and running"
      fi
      echo "#######################################################"
      echo
EOF

请帮帮我!

谢谢,希德

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-13 06:29:42

这并不奇怪,但这是意料之中的。su不是某种神奇的切换,相反,它会产生一个具有提升权限的新进程。您希望作为serviceAccount执行的所有操作都需要在su调用中完成。

对于像您的示例中这样的非交互式使用,-c选项非常方便:

代码语言:javascript
复制
su -c 'startup.sh' serviceAccount
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61762369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档