在 shell 脚本中与非 root 用户连接后更改 root

Posted

技术标签:

【中文标题】在 shell 脚本中与非 root 用户连接后更改 root【英文标题】:Changing root after connecting with a non-root user in shell script 【发布时间】:2017-08-14 08:01:48 【问题描述】:

我在 scipting 时遇到了一个小问题。我有脚本,它将安装名为 SCCM 和 TrendMicro 的代理。使用 sudo 特权用户登录后,我想在脚本中使用 root 用户运行命令。我不知道该怎么做。我为一些需要root priv的命令尝试了sudo。但我收到 "sudo: sorry, you must have a tty to run sudo" 消息。所以我想用 sudo priv 登录。用户而不是更改为 root 并运行所有命令。

注意:我只是添加了 SCCM 安装。搞清楚后,我会在 $SCRIPT 中添加 TM 安装命令。

> #!/bin/bash USERNAME=user HOSTS="host1 host2" 
  SCRIPT="mkdir /tmp/SCCM; wget -O /tmp/SCCM/ccm-Universalx64.tar
> ftp://local/pub/SW/SCCM/ccm-Universalx64.tar; wget -O
> /tmp/SCCM/install ftp://local/pub/SW/SCCM/install; chmod 755
> /tmp/SCCM/*; cd /tmp/SCCM; /tmp/SCCM/install -mp another_host
> -sitecode MGR ccm-Universalx64.tar;  /etc/init.d/ccmexecd stop; /etc/init.d/ccmexecd start" for HOSTNAME in $HOSTS ; do
>     ssh -l $USERNAME $HOSTNAME "$SCRIPT" 

完成 退出

【问题讨论】:

【参考方案1】:

您是否有权访问您要连接的主机的/etc/sudoers

This blog 和Unix & Linux Stack Exchange Website 指向将/etc/sudoers 中的行从Defaults requiretty 更改为Defaults !requiretty 或使用-t-tt 选项ssh 生成一个伪终端远方。当心副作用(有关详细信息,请参阅上面列出的第二个链接)。

【讨论】:

以上是关于在 shell 脚本中与非 root 用户连接后更改 root的主要内容,如果未能解决你的问题,请参考以下文章

/etc/profile与/etc/bashrc交互式与非交互式login与non-login shell的差别

什么是Linux的登录shell与非登录shell?

在 shell 脚本中更改为 root 用户

shell脚本初识别

Shell脚本——创建用户和设置密码

shell脚本应用练习