以root身份在脚本中间运行命令[重复]

Posted

技术标签:

【中文标题】以root身份在脚本中间运行命令[重复]【英文标题】:Run a command in the middle of a script as root [duplicate] 【发布时间】:2019-04-02 09:55:47 【问题描述】:

我需要在 bash 的脚本中间以 root 身份执行一行,我有以下代码:

#!/bin/bash
...
EOF

if [[ $x = true ]] || [[ $y= "On" ]]; then
echo -e "0 8    * * *   root " >> /etc/crontab

我需要 root 用户在 crontab 中写入的 echo,该用户有密码。 目前它不会写入,因为它是由 ubuntu 用户执行的。 谢谢。

【问题讨论】:

我不介意在脚本中输入密码 如何成为sudo 的用户NOPASS 使用sudoexpect 【参考方案1】:

我建议这样做:

echo -e "0 8    * * *   root " | sudo tee -a /etc/crontab

当您的脚本遇到sudosudo 时,它会询问您的密码,或者,如果您最近已经为 sudo 提供了密码,它只会执行任务。 (当然,如果这个用户不需要输入sudo 的密码,它永远不会要求输入。)

使用tee -a而不是shell重定向可以解决重定向由当前shell执行的事实,因此在命令中添加sudo不会影响重定向(然后由于缺少权限而失败)。

【讨论】:

以上是关于以root身份在脚本中间运行命令[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在初始化脚本中以特定用户身份运行命令?

简化bash脚本,以sudo身份运行时从命令中提取第一个单词

无法以 root linux 用户身份运行 mysql 命令

Sudo漏洞允许非特权Linux和macOS用户以root身份运行命令

从 Swift Code 以 root 身份执行终端命令

如何以管理员身份从 Windows 命令行运行命令?