系统crontab:如何以root用户身份运行脚本并以用户身份运行

问题描述:

我有一个隔夜脚本执行给定的用户家务,然后关闭。关机需要root权限,但是管理任务需要以正在清理文件的用户身份运行。清理运行需要不确定的时间,因此清理和关闭都必须位于同一个脚本中。我的问题是,如何用这两个命令cron脚本,第一个命令需要由普通用户(比如Bob)运行;并且只有在第一次完成之后才需要以root身份运行(shutdown)。我已经尝试过使用系统crontab(它可以作为Bob运行管理员,但不能关闭);并作为root crontab(可以关闭,但不能像Bob一样运行管理任务)。帮助将不胜感激。系统crontab:如何以root用户身份运行脚本并以用户身份运行

您可以使用sudo作为另一个用户执行命令。

我在Debian上试过以下内容。

写了一个包含以下内容的脚本。

#!/bin/bash 

echo $HOME 

并执行如下命令

sudo -u nonrootuser ./script && some-admin-command 

哪个印刷/home/nonrootuser和执行的some-admin-command

这表明根能够既作为普通用户和作为根来执行。因此,请将您的用户看守脚本保存在script中,用Bob替换nonrootuser,用shutdown命令替换some-admin-command并以root用户身份运行。

在文件的cronjob,你可以执行以下命令命令:

0 5 * * * sudo -u nonrootser -H bash script.sh && some-command-another 

,你可以写,其中包括以下内容作为文件script.sh:

#!/bin/bash 
echo "Hello World"